From 07cdf0ed7bdf0de18e21cd746cf28c4b8e01fd4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Br=C3=BCderl?= Date: Wed, 6 May 2026 16:36:43 +0200 Subject: [PATCH 1/6] feat(agents): add Microsoft Teams bridge integration Add AIAgentTeamsBridge proto message and wire it into the console UI as a new Integrations tab on the agent detail page. The tab exposes enable toggle, bot app ID, tenant ID, and client secret fields. When saved and enabled, the computed messaging endpoint URL is displayed for Azure Bot registration. Proto: AIAgentTeamsBridge message added to AIAgent (field 18), AIAgentCreate (field 15), and AIAgentUpdate (field 15). --- .../api/dataplane/v1alpha3/ai_agent.pb.go | 1869 +++++++++-------- .../agents/details/ai-agent-details-page.tsx | 12 +- .../details/ai-agent-integrations-tab.tsx | 280 +++ .../api/dataplane/v1alpha3/ai_agent_pb.ts | 91 +- proto/gen/openapi/openapi.v1alpha2.json | 2 +- proto/gen/openapi/openapi.v1alpha2.yaml | 2 +- proto/gen/openapi/openapi.v1alpha3.json | 2 +- proto/gen/openapi/openapi.v1alpha3.yaml | 18 + .../api/dataplane/v1alpha3/ai_agent.proto | 20 + 9 files changed, 1405 insertions(+), 891 deletions(-) create mode 100644 frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx diff --git a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go index 96e2131d13..2d9c2ef676 100644 --- a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go +++ b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go @@ -130,7 +130,9 @@ type AIAgent struct { // Auto-populated fields: name, description, url, version, capabilities (streaming, // state_transition_history), and default input/output modes. // Not user-configurable: capabilities and authentication (managed by Redpanda). - AgentCard *AIAgent_AgentCard `protobuf:"bytes,17,opt,name=agent_card,json=agentCard,proto3" json:"agent_card,omitempty"` + AgentCard *AIAgent_AgentCard `protobuf:"bytes,17,opt,name=agent_card,json=agentCard,proto3" json:"agent_card,omitempty"` + // Optional Microsoft Teams bridge configuration. + TeamsBridge *AIAgentTeamsBridge `protobuf:"bytes,18,opt,name=teams_bridge,json=teamsBridge,proto3" json:"teams_bridge,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -277,6 +279,82 @@ func (x *AIAgent) GetAgentCard() *AIAgent_AgentCard { return nil } +func (x *AIAgent) GetTeamsBridge() *AIAgentTeamsBridge { + if x != nil { + return x.TeamsBridge + } + return nil +} + +// Microsoft Teams bridge configuration for connecting an AI agent to Teams. +type AIAgentTeamsBridge struct { + state protoimpl.MessageState `protogen:"open.v1"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + BotAppId string `protobuf:"bytes,2,opt,name=bot_app_id,json=botAppId,proto3" json:"bot_app_id,omitempty"` + BotTenantId string `protobuf:"bytes,3,opt,name=bot_tenant_id,json=botTenantId,proto3" json:"bot_tenant_id,omitempty"` + BotAppSecretRef string `protobuf:"bytes,4,opt,name=bot_app_secret_ref,json=botAppSecretRef,proto3" json:"bot_app_secret_ref,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AIAgentTeamsBridge) Reset() { + *x = AIAgentTeamsBridge{} + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AIAgentTeamsBridge) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AIAgentTeamsBridge) ProtoMessage() {} + +func (x *AIAgentTeamsBridge) ProtoReflect() protoreflect.Message { + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_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 AIAgentTeamsBridge.ProtoReflect.Descriptor instead. +func (*AIAgentTeamsBridge) Descriptor() ([]byte, []int) { + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{1} +} + +func (x *AIAgentTeamsBridge) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *AIAgentTeamsBridge) GetBotAppId() string { + if x != nil { + return x.BotAppId + } + return "" +} + +func (x *AIAgentTeamsBridge) GetBotTenantId() string { + if x != nil { + return x.BotTenantId + } + return "" +} + +func (x *AIAgentTeamsBridge) GetBotAppSecretRef() string { + if x != nil { + return x.BotAppSecretRef + } + return "" +} + // AIAgentCreate contains the details for the AI agent creation request. type AIAgentCreate struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -302,14 +380,16 @@ type AIAgentCreate struct { // Optional gateway configuration for routing requests through an AI Gateway. Gateway *AIAgent_GatewayConfig `protobuf:"bytes,13,opt,name=gateway,proto3" json:"gateway,omitempty"` // Optional A2A agent card configuration. - AgentCard *AIAgent_AgentCard `protobuf:"bytes,14,opt,name=agent_card,json=agentCard,proto3" json:"agent_card,omitempty"` + AgentCard *AIAgent_AgentCard `protobuf:"bytes,14,opt,name=agent_card,json=agentCard,proto3" json:"agent_card,omitempty"` + // Optional Microsoft Teams bridge configuration. + TeamsBridge *AIAgentTeamsBridge `protobuf:"bytes,15,opt,name=teams_bridge,json=teamsBridge,proto3" json:"teams_bridge,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AIAgentCreate) Reset() { *x = AIAgentCreate{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[1] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -321,7 +401,7 @@ func (x *AIAgentCreate) String() string { func (*AIAgentCreate) ProtoMessage() {} func (x *AIAgentCreate) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[1] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -334,7 +414,7 @@ func (x *AIAgentCreate) ProtoReflect() protoreflect.Message { // Deprecated: Use AIAgentCreate.ProtoReflect.Descriptor instead. func (*AIAgentCreate) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{1} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{2} } func (x *AIAgentCreate) GetDisplayName() string { @@ -428,6 +508,13 @@ func (x *AIAgentCreate) GetAgentCard() *AIAgent_AgentCard { return nil } +func (x *AIAgentCreate) GetTeamsBridge() *AIAgentTeamsBridge { + if x != nil { + return x.TeamsBridge + } + return nil +} + // CreateAIAgentRequest is the request of CreateAIAgent. type CreateAIAgentRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -438,7 +525,7 @@ type CreateAIAgentRequest struct { func (x *CreateAIAgentRequest) Reset() { *x = CreateAIAgentRequest{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[2] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -450,7 +537,7 @@ func (x *CreateAIAgentRequest) String() string { func (*CreateAIAgentRequest) ProtoMessage() {} func (x *CreateAIAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[2] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -463,7 +550,7 @@ func (x *CreateAIAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAIAgentRequest.ProtoReflect.Descriptor instead. func (*CreateAIAgentRequest) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{2} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{3} } func (x *CreateAIAgentRequest) GetAiAgent() *AIAgentCreate { @@ -482,7 +569,7 @@ type CreateAIAgentResponse struct { func (x *CreateAIAgentResponse) Reset() { *x = CreateAIAgentResponse{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[3] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -494,7 +581,7 @@ func (x *CreateAIAgentResponse) String() string { func (*CreateAIAgentResponse) ProtoMessage() {} func (x *CreateAIAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[3] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -507,7 +594,7 @@ func (x *CreateAIAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAIAgentResponse.ProtoReflect.Descriptor instead. func (*CreateAIAgentResponse) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{3} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{4} } func (x *CreateAIAgentResponse) GetAiAgent() *AIAgent { @@ -527,7 +614,7 @@ type GetAIAgentRequest struct { func (x *GetAIAgentRequest) Reset() { *x = GetAIAgentRequest{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[4] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -539,7 +626,7 @@ func (x *GetAIAgentRequest) String() string { func (*GetAIAgentRequest) ProtoMessage() {} func (x *GetAIAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[4] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -552,7 +639,7 @@ func (x *GetAIAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAIAgentRequest.ProtoReflect.Descriptor instead. func (*GetAIAgentRequest) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{4} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{5} } func (x *GetAIAgentRequest) GetId() string { @@ -571,7 +658,7 @@ type GetAIAgentResponse struct { func (x *GetAIAgentResponse) Reset() { *x = GetAIAgentResponse{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[5] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -583,7 +670,7 @@ func (x *GetAIAgentResponse) String() string { func (*GetAIAgentResponse) ProtoMessage() {} func (x *GetAIAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[5] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -596,7 +683,7 @@ func (x *GetAIAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAIAgentResponse.ProtoReflect.Descriptor instead. func (*GetAIAgentResponse) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{5} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{6} } func (x *GetAIAgentResponse) GetAiAgent() *AIAgent { @@ -621,7 +708,7 @@ type ListAIAgentsRequest struct { func (x *ListAIAgentsRequest) Reset() { *x = ListAIAgentsRequest{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[6] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -633,7 +720,7 @@ func (x *ListAIAgentsRequest) String() string { func (*ListAIAgentsRequest) ProtoMessage() {} func (x *ListAIAgentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[6] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -646,7 +733,7 @@ func (x *ListAIAgentsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAIAgentsRequest.ProtoReflect.Descriptor instead. func (*ListAIAgentsRequest) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{6} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{7} } func (x *ListAIAgentsRequest) GetFilter() *ListAIAgentsRequest_Filter { @@ -680,7 +767,7 @@ type ListAIAgentsResponse struct { func (x *ListAIAgentsResponse) Reset() { *x = ListAIAgentsResponse{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[7] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -692,7 +779,7 @@ func (x *ListAIAgentsResponse) String() string { func (*ListAIAgentsResponse) ProtoMessage() {} func (x *ListAIAgentsResponse) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[7] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -705,7 +792,7 @@ func (x *ListAIAgentsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAIAgentsResponse.ProtoReflect.Descriptor instead. func (*ListAIAgentsResponse) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{7} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{8} } func (x *ListAIAgentsResponse) GetAiAgents() []*AIAgent { @@ -748,14 +835,16 @@ type AIAgentUpdate struct { // Optional gateway configuration. Set to empty message to remove the gateway association. Gateway *AIAgent_GatewayConfig `protobuf:"bytes,13,opt,name=gateway,proto3" json:"gateway,omitempty"` // Optional A2A agent card configuration. - AgentCard *AIAgent_AgentCard `protobuf:"bytes,14,opt,name=agent_card,json=agentCard,proto3" json:"agent_card,omitempty"` + AgentCard *AIAgent_AgentCard `protobuf:"bytes,14,opt,name=agent_card,json=agentCard,proto3" json:"agent_card,omitempty"` + // Optional Microsoft Teams bridge configuration. + TeamsBridge *AIAgentTeamsBridge `protobuf:"bytes,15,opt,name=teams_bridge,json=teamsBridge,proto3" json:"teams_bridge,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AIAgentUpdate) Reset() { *x = AIAgentUpdate{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[8] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -767,7 +856,7 @@ func (x *AIAgentUpdate) String() string { func (*AIAgentUpdate) ProtoMessage() {} func (x *AIAgentUpdate) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[8] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -780,7 +869,7 @@ func (x *AIAgentUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use AIAgentUpdate.ProtoReflect.Descriptor instead. func (*AIAgentUpdate) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{8} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{9} } func (x *AIAgentUpdate) GetDisplayName() string { @@ -874,6 +963,13 @@ func (x *AIAgentUpdate) GetAgentCard() *AIAgent_AgentCard { return nil } +func (x *AIAgentUpdate) GetTeamsBridge() *AIAgentTeamsBridge { + if x != nil { + return x.TeamsBridge + } + return nil +} + type UpdateAIAgentRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // AI Agent ID. @@ -888,7 +984,7 @@ type UpdateAIAgentRequest struct { func (x *UpdateAIAgentRequest) Reset() { *x = UpdateAIAgentRequest{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[9] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -900,7 +996,7 @@ func (x *UpdateAIAgentRequest) String() string { func (*UpdateAIAgentRequest) ProtoMessage() {} func (x *UpdateAIAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[9] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -913,7 +1009,7 @@ func (x *UpdateAIAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAIAgentRequest.ProtoReflect.Descriptor instead. func (*UpdateAIAgentRequest) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{9} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{10} } func (x *UpdateAIAgentRequest) GetId() string { @@ -946,7 +1042,7 @@ type UpdateAIAgentResponse struct { func (x *UpdateAIAgentResponse) Reset() { *x = UpdateAIAgentResponse{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[10] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -958,7 +1054,7 @@ func (x *UpdateAIAgentResponse) String() string { func (*UpdateAIAgentResponse) ProtoMessage() {} func (x *UpdateAIAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[10] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -971,7 +1067,7 @@ func (x *UpdateAIAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAIAgentResponse.ProtoReflect.Descriptor instead. func (*UpdateAIAgentResponse) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{10} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{11} } func (x *UpdateAIAgentResponse) GetAiAgent() *AIAgent { @@ -991,7 +1087,7 @@ type DeleteAIAgentRequest struct { func (x *DeleteAIAgentRequest) Reset() { *x = DeleteAIAgentRequest{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[11] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1003,7 +1099,7 @@ func (x *DeleteAIAgentRequest) String() string { func (*DeleteAIAgentRequest) ProtoMessage() {} func (x *DeleteAIAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[11] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1016,7 +1112,7 @@ func (x *DeleteAIAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAIAgentRequest.ProtoReflect.Descriptor instead. func (*DeleteAIAgentRequest) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{11} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{12} } func (x *DeleteAIAgentRequest) GetId() string { @@ -1034,7 +1130,7 @@ type DeleteAIAgentResponse struct { func (x *DeleteAIAgentResponse) Reset() { *x = DeleteAIAgentResponse{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[12] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1046,7 +1142,7 @@ func (x *DeleteAIAgentResponse) String() string { func (*DeleteAIAgentResponse) ProtoMessage() {} func (x *DeleteAIAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[12] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1059,7 +1155,7 @@ func (x *DeleteAIAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAIAgentResponse.ProtoReflect.Descriptor instead. func (*DeleteAIAgentResponse) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{12} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{13} } type StopAIAgentRequest struct { @@ -1072,7 +1168,7 @@ type StopAIAgentRequest struct { func (x *StopAIAgentRequest) Reset() { *x = StopAIAgentRequest{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[13] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1084,7 +1180,7 @@ func (x *StopAIAgentRequest) String() string { func (*StopAIAgentRequest) ProtoMessage() {} func (x *StopAIAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[13] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1097,7 +1193,7 @@ func (x *StopAIAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StopAIAgentRequest.ProtoReflect.Descriptor instead. func (*StopAIAgentRequest) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{13} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{14} } func (x *StopAIAgentRequest) GetId() string { @@ -1116,7 +1212,7 @@ type StopAIAgentResponse struct { func (x *StopAIAgentResponse) Reset() { *x = StopAIAgentResponse{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[14] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1128,7 +1224,7 @@ func (x *StopAIAgentResponse) String() string { func (*StopAIAgentResponse) ProtoMessage() {} func (x *StopAIAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[14] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1141,7 +1237,7 @@ func (x *StopAIAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StopAIAgentResponse.ProtoReflect.Descriptor instead. func (*StopAIAgentResponse) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{14} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{15} } func (x *StopAIAgentResponse) GetAiAgent() *AIAgent { @@ -1161,7 +1257,7 @@ type StartAIAgentRequest struct { func (x *StartAIAgentRequest) Reset() { *x = StartAIAgentRequest{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[15] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1173,7 +1269,7 @@ func (x *StartAIAgentRequest) String() string { func (*StartAIAgentRequest) ProtoMessage() {} func (x *StartAIAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[15] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1186,7 +1282,7 @@ func (x *StartAIAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StartAIAgentRequest.ProtoReflect.Descriptor instead. func (*StartAIAgentRequest) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{15} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{16} } func (x *StartAIAgentRequest) GetId() string { @@ -1205,7 +1301,7 @@ type StartAIAgentResponse struct { func (x *StartAIAgentResponse) Reset() { *x = StartAIAgentResponse{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[16] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1217,7 +1313,7 @@ func (x *StartAIAgentResponse) String() string { func (*StartAIAgentResponse) ProtoMessage() {} func (x *StartAIAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[16] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1230,7 +1326,7 @@ func (x *StartAIAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StartAIAgentResponse.ProtoReflect.Descriptor instead. func (*StartAIAgentResponse) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{16} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{17} } func (x *StartAIAgentResponse) GetAiAgent() *AIAgent { @@ -1256,7 +1352,7 @@ type AIAgent_Provider struct { func (x *AIAgent_Provider) Reset() { *x = AIAgent_Provider{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[20] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1268,7 +1364,7 @@ func (x *AIAgent_Provider) String() string { func (*AIAgent_Provider) ProtoMessage() {} func (x *AIAgent_Provider) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[20] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1380,7 +1476,7 @@ type AIAgent_ServiceAccount struct { func (x *AIAgent_ServiceAccount) Reset() { *x = AIAgent_ServiceAccount{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[21] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1392,7 +1488,7 @@ func (x *AIAgent_ServiceAccount) String() string { func (*AIAgent_ServiceAccount) ProtoMessage() {} func (x *AIAgent_ServiceAccount) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[21] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1437,7 +1533,7 @@ type AIAgent_MCPServer struct { func (x *AIAgent_MCPServer) Reset() { *x = AIAgent_MCPServer{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[22] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1449,7 +1545,7 @@ func (x *AIAgent_MCPServer) String() string { func (*AIAgent_MCPServer) ProtoMessage() {} func (x *AIAgent_MCPServer) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[22] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1495,7 +1591,7 @@ type AIAgent_Subagent struct { func (x *AIAgent_Subagent) Reset() { *x = AIAgent_Subagent{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[23] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1507,7 +1603,7 @@ func (x *AIAgent_Subagent) String() string { func (*AIAgent_Subagent) ProtoMessage() {} func (x *AIAgent_Subagent) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[23] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1561,7 +1657,7 @@ type AIAgent_GatewayConfig struct { func (x *AIAgent_GatewayConfig) Reset() { *x = AIAgent_GatewayConfig{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[24] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1573,7 +1669,7 @@ func (x *AIAgent_GatewayConfig) String() string { func (*AIAgent_GatewayConfig) ProtoMessage() {} func (x *AIAgent_GatewayConfig) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[24] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1621,7 +1717,7 @@ type AIAgent_AgentCard struct { func (x *AIAgent_AgentCard) Reset() { *x = AIAgent_AgentCard{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[25] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1633,7 +1729,7 @@ func (x *AIAgent_AgentCard) String() string { func (*AIAgent_AgentCard) ProtoMessage() {} func (x *AIAgent_AgentCard) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[25] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1687,7 +1783,7 @@ type AIAgent_Provider_OpenAI struct { func (x *AIAgent_Provider_OpenAI) Reset() { *x = AIAgent_Provider_OpenAI{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[26] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1699,7 +1795,7 @@ func (x *AIAgent_Provider_OpenAI) String() string { func (*AIAgent_Provider_OpenAI) ProtoMessage() {} func (x *AIAgent_Provider_OpenAI) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[26] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1739,7 +1835,7 @@ type AIAgent_Provider_Anthropic struct { func (x *AIAgent_Provider_Anthropic) Reset() { *x = AIAgent_Provider_Anthropic{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[27] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1751,7 +1847,7 @@ func (x *AIAgent_Provider_Anthropic) String() string { func (*AIAgent_Provider_Anthropic) ProtoMessage() {} func (x *AIAgent_Provider_Anthropic) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[27] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1791,7 +1887,7 @@ type AIAgent_Provider_Google struct { func (x *AIAgent_Provider_Google) Reset() { *x = AIAgent_Provider_Google{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[28] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1803,7 +1899,7 @@ func (x *AIAgent_Provider_Google) String() string { func (*AIAgent_Provider_Google) ProtoMessage() {} func (x *AIAgent_Provider_Google) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[28] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1843,7 +1939,7 @@ type AIAgent_Provider_OpenAICompatible struct { func (x *AIAgent_Provider_OpenAICompatible) Reset() { *x = AIAgent_Provider_OpenAICompatible{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[29] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1855,7 +1951,7 @@ func (x *AIAgent_Provider_OpenAICompatible) String() string { func (*AIAgent_Provider_OpenAICompatible) ProtoMessage() {} func (x *AIAgent_Provider_OpenAICompatible) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[29] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1900,7 +1996,7 @@ type AIAgent_Provider_Bedrock struct { func (x *AIAgent_Provider_Bedrock) Reset() { *x = AIAgent_Provider_Bedrock{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[30] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1912,7 +2008,7 @@ func (x *AIAgent_Provider_Bedrock) String() string { func (*AIAgent_Provider_Bedrock) ProtoMessage() {} func (x *AIAgent_Provider_Bedrock) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[30] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1962,7 +2058,7 @@ type AIAgent_AgentCard_Provider struct { func (x *AIAgent_AgentCard_Provider) Reset() { *x = AIAgent_AgentCard_Provider{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[32] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1974,7 +2070,7 @@ func (x *AIAgent_AgentCard_Provider) String() string { func (*AIAgent_AgentCard_Provider) ProtoMessage() {} func (x *AIAgent_AgentCard_Provider) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[32] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2027,7 +2123,7 @@ type AIAgent_AgentCard_Skill struct { func (x *AIAgent_AgentCard_Skill) Reset() { *x = AIAgent_AgentCard_Skill{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[33] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2039,7 +2135,7 @@ func (x *AIAgent_AgentCard_Skill) String() string { func (*AIAgent_AgentCard_Skill) ProtoMessage() {} func (x *AIAgent_AgentCard_Skill) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[33] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2118,7 +2214,7 @@ type ListAIAgentsRequest_Filter struct { func (x *ListAIAgentsRequest_Filter) Reset() { *x = ListAIAgentsRequest_Filter{} - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[37] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2130,7 +2226,7 @@ func (x *ListAIAgentsRequest_Filter) String() string { func (*ListAIAgentsRequest_Filter) ProtoMessage() {} func (x *ListAIAgentsRequest_Filter) ProtoReflect() protoreflect.Message { - mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[37] + mi := &file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2143,7 +2239,7 @@ func (x *ListAIAgentsRequest_Filter) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAIAgentsRequest_Filter.ProtoReflect.Descriptor instead. func (*ListAIAgentsRequest_Filter) Descriptor() ([]byte, []int) { - return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{6, 0} + return file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP(), []int{7, 0} } func (x *ListAIAgentsRequest_Filter) GetNameContains() string { @@ -2202,7 +2298,7 @@ var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDesc = []byte{ 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, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcb, 0x25, 0x0a, 0x07, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x26, 0x0a, 0x07, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe0, 0x41, 0x03, 0xba, 0x48, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, @@ -2292,712 +2388,743 @@ var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDesc = []byte{ 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, - 0x61, 0x72, 0x64, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x1a, 0x71, - 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, - 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x61, 0x72, 0x64, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x56, + 0x0a, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, + 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x73, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0xa9, 0x0b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x12, 0x52, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x69, 0x12, 0x5b, 0x0a, 0x09, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x74, 0x68, 0x72, + 0x6f, 0x70, 0x69, 0x63, 0x48, 0x00, 0x52, 0x09, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, + 0x63, 0x12, 0x52, 0x0a, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x71, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x42, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, + 0x69, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x55, 0x0a, 0x07, 0x62, 0x65, 0x64, 0x72, + 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 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, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x42, 0x65, 0x64, + 0x72, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x07, 0x62, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x1a, + 0x8a, 0x01, 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, + 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, + 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, + 0x79, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x8d, 0x01, 0x0a, + 0x09, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, + 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, + 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, + 0x79, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x8a, 0x01, 0x0a, + 0x06, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, + 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, + 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x19, + 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0xaf, 0x01, 0x0a, 0x10, 0x4f, 0x70, + 0x65, 0x6e, 0x41, 0x49, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x65, + 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, + 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, + 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x13, 0xc8, + 0x01, 0x01, 0x72, 0x0e, 0x32, 0x0c, 0x5e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x2f, 0x2f, + 0x2e, 0x2a, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0xde, 0x02, 0x0a, 0x07, + 0x42, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x12, 0x3d, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x1f, 0xc8, + 0x01, 0x01, 0x72, 0x1a, 0x32, 0x18, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x7b, 0x32, 0x7d, 0x28, + 0x2d, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x2b, 0x2d, 0x5c, 0x64, 0x2b, 0x29, 0x3f, 0x24, 0x52, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x84, 0x01, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, + 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, + 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, + 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x14, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, + 0x65, 0x79, 0x49, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x8c, 0x01, + 0x0a, 0x1c, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, + 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, + 0x7d, 0x24, 0x52, 0x18, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x42, 0x11, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x1a, + 0xae, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x74, 0x0a, 0x0d, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x4f, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x49, 0xc8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, + 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, + 0x7d, 0x24, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x1a, 0x51, 0x0a, 0x09, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, + 0x11, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x67, + 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, + 0x80, 0x02, 0x52, 0x0f, 0x74, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x67, 0x65, 0x78, 0x1a, 0xce, 0x03, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x12, 0xbe, 0x01, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, + 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x98, 0x01, 0x92, 0x41, 0x87, 0x01, 0x32, + 0x84, 0x01, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x75, 0x62, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, + 0x65, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, + 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x69, 0x74, 0x73, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x20, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, + 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x12, 0x62, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, + 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x64, 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6c, 0x6d, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, + 0x6c, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0xdb, 0x04, 0x0a, 0x09, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, + 0x03, 0x18, 0x80, 0x04, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x35, 0x0a, + 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, + 0x80, 0x04, 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x57, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x50, 0x0a, + 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xa9, 0x0b, 0x0a, 0x08, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, - 0x61, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x41, 0x49, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x12, 0x5b, 0x0a, 0x09, - 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3b, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x48, 0x00, 0x52, 0x09, - 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x52, 0x0a, 0x06, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x72, 0x65, 0x64, 0x70, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, + 0x64, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x1a, + 0x54, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x0c, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x04, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0xf0, 0x01, 0x0a, 0x05, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, + 0x1d, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe0, 0x41, 0x02, + 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x18, 0x40, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, + 0x02, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, + 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x04, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x7d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, + 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, + 0x47, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x3a, 0x41, 0xea, 0x41, 0x3e, 0x0a, 0x27, 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, 0x2f, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x62, + 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x62, 0x6f, 0x74, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x62, 0x6f, 0x74, + 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x79, 0x0a, + 0x12, 0x62, 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, + 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, + 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, + 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x0f, 0x62, 0x6f, 0x74, 0x41, 0x70, 0x70, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x22, 0xb5, 0x0c, 0x0a, 0x0d, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x24, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x1e, 0xc8, 0x01, 0x01, 0x72, 0x19, 0x10, 0x03, 0x18, + 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, + 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, + 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x82, 0x01, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5d, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, + 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, + 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x2e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, + 0x01, 0x01, 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, + 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x58, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, + 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, + 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x05, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 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, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x71, 0x0a, - 0x11, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, - 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, + 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x7b, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2d, 0xba, + 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, + 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, + 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 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, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, + 0x30, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xba, 0x48, 0x06, 0x1a, 0x04, 0x18, 0x64, + 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x6b, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 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, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, + 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3d, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, 0x01, 0x1a, 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, + 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, + 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, + 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, + 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, + 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x41, 0x49, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x10, - 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, - 0x12, 0x55, 0x0a, 0x07, 0x62, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x39, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x2e, 0x42, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x07, - 0x62, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x1a, 0x8a, 0x01, 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, - 0x41, 0x49, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, - 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, - 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, - 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, - 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, - 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x8d, 0x01, 0x0a, 0x09, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, - 0x69, 0x63, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, - 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, - 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, - 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, - 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, - 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x8a, 0x01, 0x0a, 0x06, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, - 0x65, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, - 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, - 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, - 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, - 0x6c, 0x1a, 0xaf, 0x01, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, - 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, - 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, - 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, - 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x19, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x13, 0xc8, 0x01, 0x01, 0x72, 0x0e, 0x32, 0x0c, 0x5e, 0x68, - 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x2f, 0x2f, 0x2e, 0x2a, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, - 0x55, 0x72, 0x6c, 0x1a, 0xde, 0x02, 0x0a, 0x07, 0x42, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x12, - 0x3d, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x25, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x1f, 0xc8, 0x01, 0x01, 0x72, 0x1a, 0x32, 0x18, 0x5e, 0x5b, - 0x61, 0x2d, 0x7a, 0x5d, 0x7b, 0x32, 0x7d, 0x28, 0x2d, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x2b, 0x2d, - 0x5c, 0x64, 0x2b, 0x29, 0x3f, 0x24, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x84, - 0x01, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, - 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, - 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, - 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, - 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, - 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, - 0x14, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x8c, 0x01, 0x0a, 0x1c, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, - 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x18, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x52, 0x65, 0x66, 0x42, 0x11, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x1a, 0xae, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x09, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xe0, - 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x74, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4f, 0xe0, 0x41, 0x02, 0xba, 0x48, - 0x49, 0xc8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x51, 0x0a, 0x09, 0x4d, 0x43, 0x50, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x11, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0f, 0x74, 0x6f, 0x6f, 0x6c, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x65, 0x78, 0x1a, 0xce, 0x03, 0x0a, 0x08, - 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x12, 0xbe, 0x01, 0x0a, 0x0d, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x98, 0x01, 0x92, 0x41, 0x87, 0x01, 0x32, 0x84, 0x01, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, - 0x69, 0x73, 0x20, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, - 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, - 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x73, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x69, 0x74, 0x73, - 0x20, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0xe0, 0x41, - 0x02, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x62, 0x0a, 0x0b, 0x6d, 0x63, 0x70, - 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, + 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, + 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, + 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x64, 0x0a, 0x0d, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, - 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x76, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x6c, 0x6c, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6c, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x1a, 0xdb, 0x04, 0x0a, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, - 0x12, 0x23, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x04, 0x52, 0x07, 0x69, 0x63, - 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x04, 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x57, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, + 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, + 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, 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, 0x2f, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, 0x5f, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x22, 0x61, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 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, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, + 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, - 0x72, 0x64, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, - 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x1a, 0x54, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, - 0x18, 0x80, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x04, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0xf0, 0x01, - 0x0a, 0x05, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, - 0x18, 0x40, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, - 0x03, 0x18, 0x80, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x04, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x21, 0x0a, - 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x73, - 0x22, 0x7d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, - 0x4e, 0x47, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x55, - 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0f, - 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x3a, - 0x41, 0xea, 0x41, 0x3e, 0x0a, 0x27, 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, 0x2f, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2a, 0x09, 0x61, - 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x22, 0xdd, 0x0b, 0x0a, 0x0d, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xe0, 0x41, 0x02, 0xba, - 0x48, 0x1e, 0xc8, 0x01, 0x01, 0x72, 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, - 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x5d, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, - 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x64, 0x2e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x0a, - 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x58, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, - 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5f, - 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, - 0x7b, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, - 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, - 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, - 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, - 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x09, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 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, 0x2e, 0x50, 0x69, 0x70, 0x65, - 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0e, 0x6d, 0x61, 0x78, - 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x09, 0xba, 0x48, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x61, - 0x78, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x0f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x09, 0xe0, - 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x72, 0x65, + 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, + 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, + 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x59, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, + 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x22, 0x8e, 0x06, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 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, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0xa7, + 0x01, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x42, 0x89, 0x01, 0x92, 0x41, 0x74, 0x32, 0x60, 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, 0x35, 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, + 0x00, 0x59, 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xbf, 0xba, 0x48, 0x0f, 0x1a, + 0x0d, 0x18, 0x64, 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0xd8, 0x03, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x12, 0x87, 0x01, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x62, 0x92, 0x41, 0x40, 0x32, + 0x3e, 0x41, 0x6e, 0x79, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, + 0x68, 0x61, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, + 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, + 0x48, 0x1c, 0xd8, 0x01, 0x01, 0x72, 0x17, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, + 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0c, + 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xc9, 0x01, 0x0a, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 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, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, - 0x01, 0x1a, 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, - 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, - 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, - 0x64, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x1a, 0x71, 0x0a, 0x0f, - 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x72, 0x65, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x6e, 0x92, 0x41, 0x3e, 0x32, 0x3c, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6c, + 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, + 0x61, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, + 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, + 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, + 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x63, + 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x61, + 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, + 0x74, 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, 0x8c, 0x0c, 0x0a, 0x0d, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0c, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x1e, 0xba, 0x48, 0x1b, 0x72, 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, 0x32, 0x12, + 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, + 0x2b, 0x24, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x0d, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x57, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, + 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, + 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x64, 0x2e, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x4d, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, + 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 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, 0x2f, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, - 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x22, 0x61, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x08, 0x61, 0x69, - 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x63, + 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, + 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x7b, 0x0a, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, + 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, + 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, + 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 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, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xba, 0x48, 0x06, + 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, + 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 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, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, 0x01, + 0x1a, 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, 0x62, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x07, 0x61, 0x69, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, - 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, - 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, - 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x59, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, + 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0c, 0x74, + 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, 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, 0x2f, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, + 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xd9, 0x01, 0x0a, 0x14, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, + 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x54, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, + 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x22, 0x8e, 0x06, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0xa7, 0x01, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x42, 0x89, 0x01, 0x92, 0x41, 0x74, 0x32, 0x60, 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, 0x35, 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, 0x00, 0x59, 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xbf, 0xba, 0x48, - 0x0f, 0x1a, 0x0d, 0x18, 0x64, 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, - 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0xd8, 0x03, 0x0a, 0x06, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x12, 0x87, 0x01, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x62, 0x92, 0x41, - 0x40, 0x32, 0x3e, 0x41, 0x6e, 0x79, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, - 0x2e, 0xba, 0x48, 0x1c, 0xd8, 0x01, 0x01, 0x72, 0x17, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, - 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xc9, - 0x01, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x6e, 0x92, 0x41, 0x3e, 0x32, 0x3c, 0x41, 0x49, 0x20, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, - 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, - 0x20, 0x74, 0x61, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, - 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, - 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, - 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x63, 0x70, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, - 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, - 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x69, 0x41, 0x67, - 0x65, 0x6e, 0x74, 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, 0xb4, 0x0b, 0x0a, - 0x0d, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x41, - 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xba, 0x48, 0x1b, 0x72, 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, - 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, - 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7c, 0x0a, - 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x57, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, - 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x2e, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x4d, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, - 0x18, 0x80, 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x63, - 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3e, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, + 0x65, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, + 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, + 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x13, 0x53, 0x74, + 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, + 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x45, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, + 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, + 0x14, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x32, 0xa4, 0x14, 0x0a, 0x0e, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc2, 0x02, + 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x7b, 0x0a, 0x04, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, - 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, - 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, - 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 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, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xba, - 0x48, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x37, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, 0x0a, 0x09, 0x73, 0x75, 0x62, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 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, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0xba, 0x48, 0x1d, - 0x9a, 0x01, 0x1a, 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x73, - 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x0a, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, - 0x72, 0x64, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x1a, 0x71, 0x0a, - 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, + 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, + 0x01, 0x92, 0x41, 0x69, 0x12, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, + 0x6e, 0x65, 0x77, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, + 0x03, 0x32, 0x30, 0x31, 0x12, 0x37, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, + 0x24, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x18, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1f, 0x3a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x2f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0xe4, 0x02, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, - 0x2d, 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, - 0x2f, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2a, 0x09, - 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x22, 0xd9, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, - 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x12, 0x54, 0x0a, 0x08, - 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, - 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, - 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, 0x64, + 0x68, 0x61, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x01, 0x92, 0x41, 0x8f, + 0x01, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, + 0x18, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, + 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, + 0x12, 0x32, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x46, 0x0a, - 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, - 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, - 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, - 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, - 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, - 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x22, 0x45, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, - 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, - 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x32, 0xa4, 0x14, 0x0a, 0x0e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc2, 0x02, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x36, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, + 0x6f, 0x74, 0x20, 0x46, 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, + 0xda, 0xbf, 0x07, 0x2d, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x15, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x65, + 0x74, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, + 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xfc, 0x02, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, 0x01, 0x92, 0x41, 0x69, 0x12, 0x0f, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, - 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x49, - 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x31, 0x12, 0x37, - 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 0x28, 0x2e, + 0x61, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfe, 0x01, 0x92, 0x41, 0x92, 0x01, 0x12, 0x0e, + 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x38, + 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x3a, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 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, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0xe2, 0xbf, 0x07, 0x41, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x61, + 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x07, 0x65, 0x61, 0x63, 0x68, 0x2e, 0x69, 0x64, 0x1a, 0x16, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, + 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xe0, 0x02, 0x0a, 0x0d, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x01, 0x92, 0x41, 0x76, 0x12, + 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x1a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, + 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, + 0x30, 0x12, 0x32, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, + 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, + 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x1a, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xc6, 0x02, 0x0a, 0x0d, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, 0x24, 0x0a, 0x08, 0x61, 0x69, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x8a, - 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x08, 0x61, - 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xe4, 0x02, 0x0a, - 0x0a, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x47, 0x65, - 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x01, 0x92, 0x41, 0x8f, 0x01, 0x12, 0x0c, 0x47, 0x65, 0x74, - 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x47, 0x65, 0x74, 0x20, 0x61, - 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x02, 0x4f, 0x4b, - 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 0x28, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, - 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x2d, 0x0a, 0x08, - 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x15, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, - 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x8a, 0xa6, 0x1d, 0x04, 0x08, - 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x12, 0xfc, 0x02, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x34, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x92, + 0x41, 0x66, 0x12, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x1a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x41, + 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x12, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, + 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x00, 0x4a, 0x2a, 0x0a, 0x03, + 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, + 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xf5, 0x02, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x12, 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, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xfe, 0x01, 0x92, 0x41, 0x92, 0x01, 0x12, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, - 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x38, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, - 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x3a, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, - 0x20, 0x6f, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x2e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0xe2, 0xbf, 0x07, 0x41, 0x0a, 0x12, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x07, - 0x65, 0x61, 0x63, 0x68, 0x2e, 0x69, 0x64, 0x1a, 0x16, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x8a, - 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0xe0, 0x02, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 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, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x01, 0x92, 0x41, 0x76, 0x12, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x28, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x02, 0x4f, - 0x4b, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 0x28, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x53, 0x74, 0x6f, 0x70, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xfa, 0x01, 0x92, 0x41, 0x95, 0x01, 0x12, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x41, 0x49, 0x20, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x61, 0x20, 0x72, 0x75, + 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, + 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x37, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, + 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, - 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x24, 0x3a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x2f, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xc6, 0x02, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x92, 0x41, 0x66, 0x12, 0x0f, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x13, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x4a, 0x12, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x12, 0x00, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, - 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, - 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xf5, - 0x02, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 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, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 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, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfa, 0x01, 0x92, 0x41, 0x95, 0x01, - 0x12, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, - 0x18, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, - 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x30, - 0x12, 0x37, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, - 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, - 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, - 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, - 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x1a, 0x1d, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x7d, 0x3a, 0x73, 0x74, 0x6f, 0x70, 0x12, 0xfb, 0x02, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, + 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, + 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, + 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x1a, 0x1d, 0x2f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x73, 0x74, 0x6f, 0x70, 0x12, 0xfb, 0x02, 0x0a, + 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x01, 0x92, 0x41, 0x97, 0x01, 0x12, 0x0e, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x19, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x20, 0x41, 0x49, 0x20, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x37, 0x0a, - 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, - 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x20, 0x1a, 0x1e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, - 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x1a, 0x45, 0x92, 0x41, 0x42, 0x0a, 0x09, 0x41, 0x49, 0x20, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x42, 0xbb, 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, 0x0c, 0x41, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x01, 0x92, 0x41, 0x97, + 0x01, 0x12, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, + 0x65, 0x64, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, + 0x32, 0x30, 0x30, 0x12, 0x37, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, + 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, + 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, + 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x1a, 0x1e, 0x2f, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x1a, 0x45, 0x92, 0x41, 0x42, 0x0a, + 0x09, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x41, 0x49, + 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, + 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x42, 0xbb, 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, 0x0c, 0x41, 0x69, 0x41, 0x67, 0x65, + 0x6e, 0x74, 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 ( @@ -3013,125 +3140,129 @@ func file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDescGZIP() []byte { } var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 42) +var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 43) var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_goTypes = []any{ (AIAgent_State)(0), // 0: redpanda.api.dataplane.v1alpha3.AIAgent.State (*AIAgent)(nil), // 1: redpanda.api.dataplane.v1alpha3.AIAgent - (*AIAgentCreate)(nil), // 2: redpanda.api.dataplane.v1alpha3.AIAgentCreate - (*CreateAIAgentRequest)(nil), // 3: redpanda.api.dataplane.v1alpha3.CreateAIAgentRequest - (*CreateAIAgentResponse)(nil), // 4: redpanda.api.dataplane.v1alpha3.CreateAIAgentResponse - (*GetAIAgentRequest)(nil), // 5: redpanda.api.dataplane.v1alpha3.GetAIAgentRequest - (*GetAIAgentResponse)(nil), // 6: redpanda.api.dataplane.v1alpha3.GetAIAgentResponse - (*ListAIAgentsRequest)(nil), // 7: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest - (*ListAIAgentsResponse)(nil), // 8: redpanda.api.dataplane.v1alpha3.ListAIAgentsResponse - (*AIAgentUpdate)(nil), // 9: redpanda.api.dataplane.v1alpha3.AIAgentUpdate - (*UpdateAIAgentRequest)(nil), // 10: redpanda.api.dataplane.v1alpha3.UpdateAIAgentRequest - (*UpdateAIAgentResponse)(nil), // 11: redpanda.api.dataplane.v1alpha3.UpdateAIAgentResponse - (*DeleteAIAgentRequest)(nil), // 12: redpanda.api.dataplane.v1alpha3.DeleteAIAgentRequest - (*DeleteAIAgentResponse)(nil), // 13: redpanda.api.dataplane.v1alpha3.DeleteAIAgentResponse - (*StopAIAgentRequest)(nil), // 14: redpanda.api.dataplane.v1alpha3.StopAIAgentRequest - (*StopAIAgentResponse)(nil), // 15: redpanda.api.dataplane.v1alpha3.StopAIAgentResponse - (*StartAIAgentRequest)(nil), // 16: redpanda.api.dataplane.v1alpha3.StartAIAgentRequest - (*StartAIAgentResponse)(nil), // 17: redpanda.api.dataplane.v1alpha3.StartAIAgentResponse - nil, // 18: redpanda.api.dataplane.v1alpha3.AIAgent.McpServersEntry - nil, // 19: redpanda.api.dataplane.v1alpha3.AIAgent.TagsEntry - nil, // 20: redpanda.api.dataplane.v1alpha3.AIAgent.SubagentsEntry - (*AIAgent_Provider)(nil), // 21: redpanda.api.dataplane.v1alpha3.AIAgent.Provider - (*AIAgent_ServiceAccount)(nil), // 22: redpanda.api.dataplane.v1alpha3.AIAgent.ServiceAccount - (*AIAgent_MCPServer)(nil), // 23: redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer - (*AIAgent_Subagent)(nil), // 24: redpanda.api.dataplane.v1alpha3.AIAgent.Subagent - (*AIAgent_GatewayConfig)(nil), // 25: redpanda.api.dataplane.v1alpha3.AIAgent.GatewayConfig - (*AIAgent_AgentCard)(nil), // 26: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard - (*AIAgent_Provider_OpenAI)(nil), // 27: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.OpenAI - (*AIAgent_Provider_Anthropic)(nil), // 28: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Anthropic - (*AIAgent_Provider_Google)(nil), // 29: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Google - (*AIAgent_Provider_OpenAICompatible)(nil), // 30: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.OpenAICompatible - (*AIAgent_Provider_Bedrock)(nil), // 31: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Bedrock - nil, // 32: redpanda.api.dataplane.v1alpha3.AIAgent.Subagent.McpServersEntry - (*AIAgent_AgentCard_Provider)(nil), // 33: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.Provider - (*AIAgent_AgentCard_Skill)(nil), // 34: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.Skill - nil, // 35: redpanda.api.dataplane.v1alpha3.AIAgentCreate.McpServersEntry - nil, // 36: redpanda.api.dataplane.v1alpha3.AIAgentCreate.TagsEntry - nil, // 37: redpanda.api.dataplane.v1alpha3.AIAgentCreate.SubagentsEntry - (*ListAIAgentsRequest_Filter)(nil), // 38: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter - nil, // 39: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter.TagsEntry - nil, // 40: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.McpServersEntry - nil, // 41: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.TagsEntry - nil, // 42: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.SubagentsEntry - (*v1.Pipeline_Resources)(nil), // 43: redpanda.api.dataplane.v1.Pipeline.Resources - (*fieldmaskpb.FieldMask)(nil), // 44: google.protobuf.FieldMask + (*AIAgentTeamsBridge)(nil), // 2: redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge + (*AIAgentCreate)(nil), // 3: redpanda.api.dataplane.v1alpha3.AIAgentCreate + (*CreateAIAgentRequest)(nil), // 4: redpanda.api.dataplane.v1alpha3.CreateAIAgentRequest + (*CreateAIAgentResponse)(nil), // 5: redpanda.api.dataplane.v1alpha3.CreateAIAgentResponse + (*GetAIAgentRequest)(nil), // 6: redpanda.api.dataplane.v1alpha3.GetAIAgentRequest + (*GetAIAgentResponse)(nil), // 7: redpanda.api.dataplane.v1alpha3.GetAIAgentResponse + (*ListAIAgentsRequest)(nil), // 8: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest + (*ListAIAgentsResponse)(nil), // 9: redpanda.api.dataplane.v1alpha3.ListAIAgentsResponse + (*AIAgentUpdate)(nil), // 10: redpanda.api.dataplane.v1alpha3.AIAgentUpdate + (*UpdateAIAgentRequest)(nil), // 11: redpanda.api.dataplane.v1alpha3.UpdateAIAgentRequest + (*UpdateAIAgentResponse)(nil), // 12: redpanda.api.dataplane.v1alpha3.UpdateAIAgentResponse + (*DeleteAIAgentRequest)(nil), // 13: redpanda.api.dataplane.v1alpha3.DeleteAIAgentRequest + (*DeleteAIAgentResponse)(nil), // 14: redpanda.api.dataplane.v1alpha3.DeleteAIAgentResponse + (*StopAIAgentRequest)(nil), // 15: redpanda.api.dataplane.v1alpha3.StopAIAgentRequest + (*StopAIAgentResponse)(nil), // 16: redpanda.api.dataplane.v1alpha3.StopAIAgentResponse + (*StartAIAgentRequest)(nil), // 17: redpanda.api.dataplane.v1alpha3.StartAIAgentRequest + (*StartAIAgentResponse)(nil), // 18: redpanda.api.dataplane.v1alpha3.StartAIAgentResponse + nil, // 19: redpanda.api.dataplane.v1alpha3.AIAgent.McpServersEntry + nil, // 20: redpanda.api.dataplane.v1alpha3.AIAgent.TagsEntry + nil, // 21: redpanda.api.dataplane.v1alpha3.AIAgent.SubagentsEntry + (*AIAgent_Provider)(nil), // 22: redpanda.api.dataplane.v1alpha3.AIAgent.Provider + (*AIAgent_ServiceAccount)(nil), // 23: redpanda.api.dataplane.v1alpha3.AIAgent.ServiceAccount + (*AIAgent_MCPServer)(nil), // 24: redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer + (*AIAgent_Subagent)(nil), // 25: redpanda.api.dataplane.v1alpha3.AIAgent.Subagent + (*AIAgent_GatewayConfig)(nil), // 26: redpanda.api.dataplane.v1alpha3.AIAgent.GatewayConfig + (*AIAgent_AgentCard)(nil), // 27: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard + (*AIAgent_Provider_OpenAI)(nil), // 28: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.OpenAI + (*AIAgent_Provider_Anthropic)(nil), // 29: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Anthropic + (*AIAgent_Provider_Google)(nil), // 30: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Google + (*AIAgent_Provider_OpenAICompatible)(nil), // 31: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.OpenAICompatible + (*AIAgent_Provider_Bedrock)(nil), // 32: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Bedrock + nil, // 33: redpanda.api.dataplane.v1alpha3.AIAgent.Subagent.McpServersEntry + (*AIAgent_AgentCard_Provider)(nil), // 34: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.Provider + (*AIAgent_AgentCard_Skill)(nil), // 35: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.Skill + nil, // 36: redpanda.api.dataplane.v1alpha3.AIAgentCreate.McpServersEntry + nil, // 37: redpanda.api.dataplane.v1alpha3.AIAgentCreate.TagsEntry + nil, // 38: redpanda.api.dataplane.v1alpha3.AIAgentCreate.SubagentsEntry + (*ListAIAgentsRequest_Filter)(nil), // 39: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter + nil, // 40: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter.TagsEntry + nil, // 41: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.McpServersEntry + nil, // 42: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.TagsEntry + nil, // 43: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.SubagentsEntry + (*v1.Pipeline_Resources)(nil), // 44: redpanda.api.dataplane.v1.Pipeline.Resources + (*fieldmaskpb.FieldMask)(nil), // 45: google.protobuf.FieldMask } var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_depIdxs = []int32{ - 21, // 0: redpanda.api.dataplane.v1alpha3.AIAgent.provider:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider - 18, // 1: redpanda.api.dataplane.v1alpha3.AIAgent.mcp_servers:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.McpServersEntry - 43, // 2: redpanda.api.dataplane.v1alpha3.AIAgent.resources:type_name -> redpanda.api.dataplane.v1.Pipeline.Resources - 19, // 3: redpanda.api.dataplane.v1alpha3.AIAgent.tags:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.TagsEntry + 22, // 0: redpanda.api.dataplane.v1alpha3.AIAgent.provider:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider + 19, // 1: redpanda.api.dataplane.v1alpha3.AIAgent.mcp_servers:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.McpServersEntry + 44, // 2: redpanda.api.dataplane.v1alpha3.AIAgent.resources:type_name -> redpanda.api.dataplane.v1.Pipeline.Resources + 20, // 3: redpanda.api.dataplane.v1alpha3.AIAgent.tags:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.TagsEntry 0, // 4: redpanda.api.dataplane.v1alpha3.AIAgent.state:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.State - 22, // 5: redpanda.api.dataplane.v1alpha3.AIAgent.service_account:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.ServiceAccount - 20, // 6: redpanda.api.dataplane.v1alpha3.AIAgent.subagents:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.SubagentsEntry - 25, // 7: redpanda.api.dataplane.v1alpha3.AIAgent.gateway:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.GatewayConfig - 26, // 8: redpanda.api.dataplane.v1alpha3.AIAgent.agent_card:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard - 21, // 9: redpanda.api.dataplane.v1alpha3.AIAgentCreate.provider:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider - 35, // 10: redpanda.api.dataplane.v1alpha3.AIAgentCreate.mcp_servers:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentCreate.McpServersEntry - 36, // 11: redpanda.api.dataplane.v1alpha3.AIAgentCreate.tags:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentCreate.TagsEntry - 43, // 12: redpanda.api.dataplane.v1alpha3.AIAgentCreate.resources:type_name -> redpanda.api.dataplane.v1.Pipeline.Resources - 22, // 13: redpanda.api.dataplane.v1alpha3.AIAgentCreate.service_account:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.ServiceAccount - 37, // 14: redpanda.api.dataplane.v1alpha3.AIAgentCreate.subagents:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentCreate.SubagentsEntry - 25, // 15: redpanda.api.dataplane.v1alpha3.AIAgentCreate.gateway:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.GatewayConfig - 26, // 16: redpanda.api.dataplane.v1alpha3.AIAgentCreate.agent_card:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard - 2, // 17: redpanda.api.dataplane.v1alpha3.CreateAIAgentRequest.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentCreate - 1, // 18: redpanda.api.dataplane.v1alpha3.CreateAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent - 1, // 19: redpanda.api.dataplane.v1alpha3.GetAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent - 38, // 20: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.filter:type_name -> redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter - 1, // 21: redpanda.api.dataplane.v1alpha3.ListAIAgentsResponse.ai_agents:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent - 21, // 22: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.provider:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider - 40, // 23: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.mcp_servers:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentUpdate.McpServersEntry - 41, // 24: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.tags:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentUpdate.TagsEntry - 43, // 25: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.resources:type_name -> redpanda.api.dataplane.v1.Pipeline.Resources - 22, // 26: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.service_account:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.ServiceAccount - 42, // 27: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.subagents:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentUpdate.SubagentsEntry - 25, // 28: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.gateway:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.GatewayConfig - 26, // 29: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.agent_card:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard - 9, // 30: redpanda.api.dataplane.v1alpha3.UpdateAIAgentRequest.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentUpdate - 44, // 31: redpanda.api.dataplane.v1alpha3.UpdateAIAgentRequest.update_mask:type_name -> google.protobuf.FieldMask - 1, // 32: redpanda.api.dataplane.v1alpha3.UpdateAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent - 1, // 33: redpanda.api.dataplane.v1alpha3.StopAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent - 1, // 34: redpanda.api.dataplane.v1alpha3.StartAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent - 23, // 35: redpanda.api.dataplane.v1alpha3.AIAgent.McpServersEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer - 24, // 36: redpanda.api.dataplane.v1alpha3.AIAgent.SubagentsEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Subagent - 27, // 37: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.openai:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.OpenAI - 28, // 38: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.anthropic:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Anthropic - 29, // 39: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.google:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Google - 30, // 40: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.openai_compatible:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.OpenAICompatible - 31, // 41: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.bedrock:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Bedrock - 32, // 42: redpanda.api.dataplane.v1alpha3.AIAgent.Subagent.mcp_servers:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Subagent.McpServersEntry - 33, // 43: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.provider:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.Provider - 34, // 44: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.skills:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.Skill - 23, // 45: redpanda.api.dataplane.v1alpha3.AIAgent.Subagent.McpServersEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer - 23, // 46: redpanda.api.dataplane.v1alpha3.AIAgentCreate.McpServersEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer - 24, // 47: redpanda.api.dataplane.v1alpha3.AIAgentCreate.SubagentsEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Subagent - 39, // 48: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter.tags:type_name -> redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter.TagsEntry - 23, // 49: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.McpServersEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer - 24, // 50: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.SubagentsEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Subagent - 3, // 51: redpanda.api.dataplane.v1alpha3.AIAgentService.CreateAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.CreateAIAgentRequest - 5, // 52: redpanda.api.dataplane.v1alpha3.AIAgentService.GetAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.GetAIAgentRequest - 7, // 53: redpanda.api.dataplane.v1alpha3.AIAgentService.ListAIAgents:input_type -> redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest - 10, // 54: redpanda.api.dataplane.v1alpha3.AIAgentService.UpdateAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.UpdateAIAgentRequest - 12, // 55: redpanda.api.dataplane.v1alpha3.AIAgentService.DeleteAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.DeleteAIAgentRequest - 14, // 56: redpanda.api.dataplane.v1alpha3.AIAgentService.StopAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.StopAIAgentRequest - 16, // 57: redpanda.api.dataplane.v1alpha3.AIAgentService.StartAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.StartAIAgentRequest - 4, // 58: redpanda.api.dataplane.v1alpha3.AIAgentService.CreateAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.CreateAIAgentResponse - 6, // 59: redpanda.api.dataplane.v1alpha3.AIAgentService.GetAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.GetAIAgentResponse - 8, // 60: redpanda.api.dataplane.v1alpha3.AIAgentService.ListAIAgents:output_type -> redpanda.api.dataplane.v1alpha3.ListAIAgentsResponse - 11, // 61: redpanda.api.dataplane.v1alpha3.AIAgentService.UpdateAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.UpdateAIAgentResponse - 13, // 62: redpanda.api.dataplane.v1alpha3.AIAgentService.DeleteAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.DeleteAIAgentResponse - 15, // 63: redpanda.api.dataplane.v1alpha3.AIAgentService.StopAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.StopAIAgentResponse - 17, // 64: redpanda.api.dataplane.v1alpha3.AIAgentService.StartAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.StartAIAgentResponse - 58, // [58:65] is the sub-list for method output_type - 51, // [51:58] is the sub-list for method input_type - 51, // [51:51] is the sub-list for extension type_name - 51, // [51:51] is the sub-list for extension extendee - 0, // [0:51] is the sub-list for field type_name + 23, // 5: redpanda.api.dataplane.v1alpha3.AIAgent.service_account:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.ServiceAccount + 21, // 6: redpanda.api.dataplane.v1alpha3.AIAgent.subagents:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.SubagentsEntry + 26, // 7: redpanda.api.dataplane.v1alpha3.AIAgent.gateway:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.GatewayConfig + 27, // 8: redpanda.api.dataplane.v1alpha3.AIAgent.agent_card:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard + 2, // 9: redpanda.api.dataplane.v1alpha3.AIAgent.teams_bridge:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge + 22, // 10: redpanda.api.dataplane.v1alpha3.AIAgentCreate.provider:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider + 36, // 11: redpanda.api.dataplane.v1alpha3.AIAgentCreate.mcp_servers:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentCreate.McpServersEntry + 37, // 12: redpanda.api.dataplane.v1alpha3.AIAgentCreate.tags:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentCreate.TagsEntry + 44, // 13: redpanda.api.dataplane.v1alpha3.AIAgentCreate.resources:type_name -> redpanda.api.dataplane.v1.Pipeline.Resources + 23, // 14: redpanda.api.dataplane.v1alpha3.AIAgentCreate.service_account:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.ServiceAccount + 38, // 15: redpanda.api.dataplane.v1alpha3.AIAgentCreate.subagents:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentCreate.SubagentsEntry + 26, // 16: redpanda.api.dataplane.v1alpha3.AIAgentCreate.gateway:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.GatewayConfig + 27, // 17: redpanda.api.dataplane.v1alpha3.AIAgentCreate.agent_card:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard + 2, // 18: redpanda.api.dataplane.v1alpha3.AIAgentCreate.teams_bridge:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge + 3, // 19: redpanda.api.dataplane.v1alpha3.CreateAIAgentRequest.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentCreate + 1, // 20: redpanda.api.dataplane.v1alpha3.CreateAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent + 1, // 21: redpanda.api.dataplane.v1alpha3.GetAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent + 39, // 22: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.filter:type_name -> redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter + 1, // 23: redpanda.api.dataplane.v1alpha3.ListAIAgentsResponse.ai_agents:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent + 22, // 24: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.provider:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider + 41, // 25: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.mcp_servers:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentUpdate.McpServersEntry + 42, // 26: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.tags:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentUpdate.TagsEntry + 44, // 27: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.resources:type_name -> redpanda.api.dataplane.v1.Pipeline.Resources + 23, // 28: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.service_account:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.ServiceAccount + 43, // 29: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.subagents:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentUpdate.SubagentsEntry + 26, // 30: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.gateway:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.GatewayConfig + 27, // 31: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.agent_card:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard + 2, // 32: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.teams_bridge:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge + 10, // 33: redpanda.api.dataplane.v1alpha3.UpdateAIAgentRequest.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgentUpdate + 45, // 34: redpanda.api.dataplane.v1alpha3.UpdateAIAgentRequest.update_mask:type_name -> google.protobuf.FieldMask + 1, // 35: redpanda.api.dataplane.v1alpha3.UpdateAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent + 1, // 36: redpanda.api.dataplane.v1alpha3.StopAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent + 1, // 37: redpanda.api.dataplane.v1alpha3.StartAIAgentResponse.ai_agent:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent + 24, // 38: redpanda.api.dataplane.v1alpha3.AIAgent.McpServersEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer + 25, // 39: redpanda.api.dataplane.v1alpha3.AIAgent.SubagentsEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Subagent + 28, // 40: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.openai:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.OpenAI + 29, // 41: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.anthropic:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Anthropic + 30, // 42: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.google:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Google + 31, // 43: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.openai_compatible:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.OpenAICompatible + 32, // 44: redpanda.api.dataplane.v1alpha3.AIAgent.Provider.bedrock:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Provider.Bedrock + 33, // 45: redpanda.api.dataplane.v1alpha3.AIAgent.Subagent.mcp_servers:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Subagent.McpServersEntry + 34, // 46: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.provider:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.Provider + 35, // 47: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.skills:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard.Skill + 24, // 48: redpanda.api.dataplane.v1alpha3.AIAgent.Subagent.McpServersEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer + 24, // 49: redpanda.api.dataplane.v1alpha3.AIAgentCreate.McpServersEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer + 25, // 50: redpanda.api.dataplane.v1alpha3.AIAgentCreate.SubagentsEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Subagent + 40, // 51: redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter.tags:type_name -> redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter.TagsEntry + 24, // 52: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.McpServersEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.MCPServer + 25, // 53: redpanda.api.dataplane.v1alpha3.AIAgentUpdate.SubagentsEntry.value:type_name -> redpanda.api.dataplane.v1alpha3.AIAgent.Subagent + 4, // 54: redpanda.api.dataplane.v1alpha3.AIAgentService.CreateAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.CreateAIAgentRequest + 6, // 55: redpanda.api.dataplane.v1alpha3.AIAgentService.GetAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.GetAIAgentRequest + 8, // 56: redpanda.api.dataplane.v1alpha3.AIAgentService.ListAIAgents:input_type -> redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest + 11, // 57: redpanda.api.dataplane.v1alpha3.AIAgentService.UpdateAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.UpdateAIAgentRequest + 13, // 58: redpanda.api.dataplane.v1alpha3.AIAgentService.DeleteAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.DeleteAIAgentRequest + 15, // 59: redpanda.api.dataplane.v1alpha3.AIAgentService.StopAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.StopAIAgentRequest + 17, // 60: redpanda.api.dataplane.v1alpha3.AIAgentService.StartAIAgent:input_type -> redpanda.api.dataplane.v1alpha3.StartAIAgentRequest + 5, // 61: redpanda.api.dataplane.v1alpha3.AIAgentService.CreateAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.CreateAIAgentResponse + 7, // 62: redpanda.api.dataplane.v1alpha3.AIAgentService.GetAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.GetAIAgentResponse + 9, // 63: redpanda.api.dataplane.v1alpha3.AIAgentService.ListAIAgents:output_type -> redpanda.api.dataplane.v1alpha3.ListAIAgentsResponse + 12, // 64: redpanda.api.dataplane.v1alpha3.AIAgentService.UpdateAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.UpdateAIAgentResponse + 14, // 65: redpanda.api.dataplane.v1alpha3.AIAgentService.DeleteAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.DeleteAIAgentResponse + 16, // 66: redpanda.api.dataplane.v1alpha3.AIAgentService.StopAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.StopAIAgentResponse + 18, // 67: redpanda.api.dataplane.v1alpha3.AIAgentService.StartAIAgent:output_type -> redpanda.api.dataplane.v1alpha3.StartAIAgentResponse + 61, // [61:68] is the sub-list for method output_type + 54, // [54:61] is the sub-list for method input_type + 54, // [54:54] is the sub-list for extension type_name + 54, // [54:54] is the sub-list for extension extendee + 0, // [0:54] is the sub-list for field type_name } func init() { file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_init() } @@ -3139,7 +3270,7 @@ func file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_init() { if File_redpanda_api_dataplane_v1alpha3_ai_agent_proto != nil { return } - file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[20].OneofWrappers = []any{ + file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[21].OneofWrappers = []any{ (*AIAgent_Provider_Openai)(nil), (*AIAgent_Provider_Anthropic_)(nil), (*AIAgent_Provider_Google_)(nil), @@ -3152,7 +3283,7 @@ func file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 42, + NumMessages: 43, NumExtensions: 0, NumServices: 1, }, diff --git a/frontend/src/components/pages/agents/details/ai-agent-details-page.tsx b/frontend/src/components/pages/agents/details/ai-agent-details-page.tsx index 061ea43197..94febe09ae 100644 --- a/frontend/src/components/pages/agents/details/ai-agent-details-page.tsx +++ b/frontend/src/components/pages/agents/details/ai-agent-details-page.tsx @@ -14,7 +14,7 @@ import { getRouteApi, useNavigate } from '@tanstack/react-router'; const routeApi = getRouteApi('/agents/$id/'); import { Tabs, TabsContent, TabsList, TabsTrigger } from 'components/redpanda-ui/components/tabs'; -import { AlertCircle, FileText, Loader2, Network, Search, Settings } from 'lucide-react'; +import { AlertCircle, FileText, Loader2, Network, Plug, Search, Settings } from 'lucide-react'; import { useEffect } from 'react'; import { useGetAIAgentQuery } from 'react-query/api/ai-agent'; import { uiState } from 'state/ui-state'; @@ -23,6 +23,7 @@ import { AIAgentCardTab } from './ai-agent-card-tab'; import { AIAgentConfigurationTab } from './ai-agent-configuration-tab'; import { AIAgentDetailsHeader } from './ai-agent-details-header'; import { AIAgentInspectorTab } from './ai-agent-inspector-tab'; +import { AIAgentIntegrationsTab } from './ai-agent-integrations-tab'; import { AIAgentTranscriptsTab } from './ai-agent-transcripts-tab'; export const updatePageTitle = (agentName?: string) => { @@ -91,6 +92,12 @@ export const AIAgentDetailsPage = () => { Configuration + +
+ + Integrations +
+
@@ -112,6 +119,9 @@ export const AIAgentDetailsPage = () => { + + + diff --git a/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx new file mode 100644 index 0000000000..a6e2e26447 --- /dev/null +++ b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx @@ -0,0 +1,280 @@ +/** + * Copyright 2026 Redpanda Data, Inc. + * + * Use of this software is governed by the Business Source License + * included in the file https://github.com/redpanda-data/redpanda/blob/dev/licenses/bsl.md + * + * As of the Change Date specified in that file, in accordance with + * the Business Source License, use of this software will be governed + * by the Apache License, Version 2.0 + */ + +import { create } from '@bufbuild/protobuf'; +import { FieldMaskSchema } from '@bufbuild/protobuf/wkt'; +import { getRouteApi } from '@tanstack/react-router'; +import { Button } from 'components/redpanda-ui/components/button'; +import { Card, CardContent, CardHeader, CardTitle } from 'components/redpanda-ui/components/card'; +import { DynamicCodeBlock } from 'components/redpanda-ui/components/code-block-dynamic'; +import { Input } from 'components/redpanda-ui/components/input'; +import { Label } from 'components/redpanda-ui/components/label'; +import { Switch } from 'components/redpanda-ui/components/switch'; +import { Text } from 'components/redpanda-ui/components/typography'; +import { SecretSelector } from 'components/ui/secret/secret-selector'; +import { Edit, Save } from 'lucide-react'; +import { Scope } from 'protogen/redpanda/api/dataplane/v1/secret_pb'; +import { + AIAgentTeamsBridgeSchema, + AIAgentUpdateSchema, + UpdateAIAgentRequestSchema, +} from 'protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb'; +import { useMemo, useState } from 'react'; +import { useGetAIAgentQuery, useUpdateAIAgentMutation } from 'react-query/api/ai-agent'; +import { useListSecretsQuery } from 'react-query/api/secret'; +import { toast } from 'sonner'; +import { formatToastErrorMessageGRPC } from 'utils/toast.utils'; + +const routeApi = getRouteApi('/agents/$id/'); + +const SECRET_TEMPLATE_REGEX = /^\$\{secrets\.([^}]+)\}$/; + +const TEAMS_SECRET_TEXT = { + dialogDescription: 'Create a new secret for your Microsoft Teams bot client secret.', + secretNamePlaceholder: 'e.g., TEAMS_CLIENT_SECRET', + secretValuePlaceholder: 'Enter your client secret...', + secretValueDescription: 'Your Microsoft Teams bot application client secret', + emptyStateDescription: 'Create a secret to securely store your Teams bot client secret', +}; + +type TeamsBridgeState = { + enabled: boolean; + botAppId: string; + botTenantId: string; + botAppSecretName: string; +}; + +const extractSecretName = (ref: string): string => { + const match = ref.match(SECRET_TEMPLATE_REGEX); + return match ? match[1] : ''; +}; + +const getMessagingEndpointUrl = (agentUrl: string, agentId: string): string => { + try { + const url = new URL(agentUrl); + const hostParts = url.hostname.split('.'); + if (hostParts.length < 2) { + return ''; + } + const clusterDomain = hostParts.slice(1).join('.'); + return `https://msteams-bridge.${clusterDomain}/msteams/v1/${agentId}`; + } catch { + return ''; + } +}; + +// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Integrations tab with edit/view mode conditionals +export const AIAgentIntegrationsTab = () => { + const { id } = routeApi.useParams(); + const { data: aiAgentData } = useGetAIAgentQuery({ id: id || '' }, { enabled: !!id }); + const { mutateAsync: updateAIAgent, isPending: isUpdatePending } = useUpdateAIAgentMutation(); + const { data: secretsData } = useListSecretsQuery(); + + const [isEditing, setIsEditing] = useState(false); + const [editedState, setEditedState] = useState(null); + + const agent = aiAgentData?.aiAgent; + + const availableSecrets = useMemo(() => { + if (!secretsData?.secrets) { + return []; + } + return secretsData.secrets + .filter((secret): secret is NonNullable & { id: string } => !!secret?.id) + .map((secret) => ({ id: secret.id, name: secret.id })); + }, [secretsData]); + + if (!agent) { + return null; + } + + const displayState: TeamsBridgeState = editedState || { + enabled: agent.teamsBridge?.enabled ?? false, + botAppId: agent.teamsBridge?.botAppId ?? '', + botTenantId: agent.teamsBridge?.botTenantId ?? '', + botAppSecretName: extractSecretName(agent.teamsBridge?.botAppSecretRef ?? ''), + }; + + const updateField = (updates: Partial) => { + setEditedState({ ...displayState, ...updates }); + }; + + const handleSave = async () => { + if (!id) { + return; + } + + const secretRef = displayState.botAppSecretName ? `\${secrets.${displayState.botAppSecretName}}` : ''; + + try { + await updateAIAgent( + create(UpdateAIAgentRequestSchema, { + id, + aiAgent: create(AIAgentUpdateSchema, { + teamsBridge: create(AIAgentTeamsBridgeSchema, { + enabled: displayState.enabled, + botAppId: displayState.botAppId, + botTenantId: displayState.botTenantId, + botAppSecretRef: secretRef || undefined, + }), + }), + updateMask: create(FieldMaskSchema, { + paths: [ + 'teams_bridge.enabled', + 'teams_bridge.bot_app_id', + 'teams_bridge.bot_tenant_id', + 'teams_bridge.bot_app_secret_ref', + ], + }), + }), + { + onSuccess: () => { + toast.success('Teams integration updated'); + setIsEditing(false); + setEditedState(null); + }, + onError: (error) => { + toast.error(formatToastErrorMessageGRPC({ error, action: 'update', entity: 'Teams integration' })); + }, + } + ); + } catch { + // Error already handled + } + }; + + const handleCancel = () => { + setIsEditing(false); + setEditedState(null); + }; + + const messagingEndpointUrl = agent.teamsBridge?.enabled && agent.url ? getMessagingEndpointUrl(agent.url, id) : ''; + + return ( +
+ + +
+ + Microsoft Teams + + + Connect this agent to Microsoft Teams to enable conversational interactions through a Teams bot. + +
+
+ {isEditing ? ( + <> + + + + ) : ( + + )} +
+
+ + {/* Enable toggle */} +
+
+ + Activate the Microsoft Teams bridge for this agent +
+ {isEditing ? ( + updateField({ enabled: checked })} + /> + ) : ( + {displayState.enabled ? 'Enabled' : 'Disabled'} + )} +
+ + {/* Bot configuration fields */} +
+
+ + {isEditing ? ( + updateField({ botAppId: e.target.value })} + placeholder="e.g., 12345678-abcd-efgh-ijkl-123456789012" + value={displayState.botAppId} + /> + ) : ( +
+ {displayState.botAppId || '-'} +
+ )} +
+ +
+ + {isEditing ? ( + updateField({ botTenantId: e.target.value })} + placeholder="e.g., 12345678-abcd-efgh-ijkl-123456789012" + value={displayState.botTenantId} + /> + ) : ( +
+ {displayState.botTenantId || '-'} +
+ )} +
+
+ + {/* Client Secret */} +
+ + {isEditing ? ( +
+ updateField({ botAppSecretName: value })} + placeholder="Select from secrets store or create new" + scopes={[Scope.AI_AGENT]} + value={displayState.botAppSecretName} + /> +
+ ) : ( +
+ {displayState.botAppSecretName || '-'} +
+ )} +
+ + {/* Messaging endpoint URL - shown when integration is saved and enabled */} + {Boolean(agent.teamsBridge?.enabled && messagingEndpointUrl) && ( +
+ + + Configure this URL as the messaging endpoint in your Azure Bot registration. + + +
+ )} +
+
+
+ ); +}; diff --git a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts index 790d3240ca..1faccc2738 100644 --- a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts +++ b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts @@ -21,7 +21,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file redpanda/api/dataplane/v1alpha3/ai_agent.proto. */ export const file_redpanda_api_dataplane_v1alpha3_ai_agent: GenFile = /*@__PURE__*/ - fileDesc("Ci5yZWRwYW5kYS9hcGkvZGF0YXBsYW5lL3YxYWxwaGEzL2FpX2FnZW50LnByb3RvEh9yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzIswgCgdBSUFnZW50EicKAmlkGAEgASgJQhvgQQO6SBVyEzIRXltBLVphLXowLTktXy9dKyQSOgoMZGlzcGxheV9uYW1lGAIgASgJQiTgQQK6SB7IAQFyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAyABKAlCCLpIBXIDGIACEnQKDXN5c3RlbV9wcm9tcHQYBCABKAlCXZJBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQu4EECukgHyAEBcgIQChJOCghwcm92aWRlchgFIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlckIJ4EECukgDyAEBEh0KBW1vZGVsGAcgASgJQg7gQQK6SAjIAQFyAxiAARJNCgttY3Bfc2VydmVycxgIIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NY3BTZXJ2ZXJzRW50cnkS+AEKCXJlc291cmNlcxgJIAEoCzItLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjEuUGlwZWxpbmUuUmVzb3VyY2VzQrUBkkGxATKuAVRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIHJlc291cmNlcyBmb3IgdGhlIEFJIEFnZW50LiBEZXBlbmRpbmcgb24gdGhlIGJhY2tlbmQsIHRoZSByZXNvdXJjZXMgbWlnaHQgYmUgZ3VhcmFudGVlZCwgb3IgbWlnaHQgYmUgdHdlYWtlZCBiYXNlZCBvbiB0aGUgdXRpbGl6YXRpb24gb2YgdGhlIEFJIEFnZW50LhJvCgR0YWdzGAogAygLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlRhZ3NFbnRyeUItukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEkIKBXN0YXRlGAsgASgOMi4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN0YXRlQgPgQQMSEAoDdXJsGAwgASgJQgPgQQMSIQoObWF4X2l0ZXJhdGlvbnMYDSABKAVCCbpIBhoEGGQoARJbCg9zZXJ2aWNlX2FjY291bnQYDiABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnRCCeBBArpIA8gBARJsCglzdWJhZ2VudHMYDyADKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnRzRW50cnlCILpIHZoBGiIYchYQARhAMhBeW0EtWmEtejAtOV8tXSskEkcKB2dhdGV3YXkYECABKAsyNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuR2F0ZXdheUNvbmZpZxJGCgphZ2VudF9jYXJkGBEgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZBplCg9NY3BTZXJ2ZXJzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Lk1DUFNlcnZlcjoCOAEaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaYwoOU3ViYWdlbnRzRW50cnkSCwoDa2V5GAEgASgJEkAKBXZhbHVlGAIgASgLMjEucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN1YmFnZW50OgI4ARryCQoIUHJvdmlkZXISSgoGb3BlbmFpGAEgASgLMjgucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlByb3ZpZGVyLk9wZW5BSUgAElAKCWFudGhyb3BpYxgCIAEoCzI7LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5BbnRocm9waWNIABJKCgZnb29nbGUYAyABKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuR29vZ2xlSAASXwoRb3BlbmFpX2NvbXBhdGlibGUYBCABKAsyQi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuT3BlbkFJQ29tcGF0aWJsZUgAEkwKB2JlZHJvY2sYBSABKAsyOS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuQmVkcm9ja0gAGnkKBk9wZW5BSRJdCgdhcGlfa2V5GAEgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEhAKCGJhc2VfdXJsGAIgASgJGnwKCUFudGhyb3BpYxJdCgdhcGlfa2V5GAEgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEhAKCGJhc2VfdXJsGAIgASgJGnkKBkdvb2dsZRJdCgdhcGlfa2V5GAEgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEhAKCGJhc2VfdXJsGAIgASgJGp4BChBPcGVuQUlDb21wYXRpYmxlEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSKwoIYmFzZV91cmwYAiABKAlCGeBBArpIE8gBAXIOMgxeaHR0cHM/Oi8vLioapAIKB0JlZHJvY2sSNQoGcmVnaW9uGAEgASgJQiXgQQK6SB/IAQFyGjIYXlthLXpdezJ9KC1bYS16XSstXGQrKT8kEm4KGGFjY2Vzc19rZXlfaWRfc2VjcmV0X3JlZhgCIAEoCUJMukhJ2AEBckQyQl5cJFx7c2VjcmV0c1wuW0EtWmEtel9dW0EtWmEtejAtOV9dKihcLltBLVphLXpfXVtBLVphLXowLTlfXSopP1x9JBJyChxzZWNyZXRfYWNjZXNzX2tleV9zZWNyZXRfcmVmGAMgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kQhEKCHByb3ZpZGVyEgW6SAIIARqWAQoOU2VydmljZUFjY291bnQSHAoJY2xpZW50X2lkGAEgASgJQgngQQK6SAPIAQESZgoNY2xpZW50X3NlY3JldBgCIAEoCUJP4EECukhJyAEBckQyQl5cJFx7c2VjcmV0c1wuW0EtWmEtel9dW0EtWmEtejAtOV9dKihcLltBLVphLXpfXVtBLVphLXowLTlfXSopP1x9JBo8CglNQ1BTZXJ2ZXISCgoCaWQYASABKAkSIwoRdG9vbF9maWx0ZXJfcmVnZXgYAiABKAlCCLpIBXIDGIACGpsDCghTdWJhZ2VudBKwAQoNc3lzdGVtX3Byb21wdBgBIAEoCUKYAZJBhwEyhAFTeXN0ZW0gaW5zdHJ1Y3Rpb25zIHRoYXQgZGVmaW5lIGhvdyB0aGlzIHN1YmFnZW50IHNob3VsZCBiZWhhdmUuIFRoZSBzdWJhZ2VudCBpbmhlcml0cyB0aGUgcHJvdmlkZXIgYW5kIG1vZGVsIGZyb20gaXRzIHBhcmVudCBhZ2VudC7gQQK6SAfIAQFyAhAKElYKC21jcF9zZXJ2ZXJzGAIgAygLMkEucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN1YmFnZW50Lk1jcFNlcnZlcnNFbnRyeRIdCgtkZXNjcmlwdGlvbhgDIAEoCUIIukgFcgMYgAIaZQoPTWNwU2VydmVyc0VudHJ5EgsKA2tleRgBIAEoCRJBCgV2YWx1ZRgCIAEoCzIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NQ1BTZXJ2ZXI6AjgBGkUKDUdhdGV3YXlDb25maWcSHgoSdmlydHVhbF9nYXRld2F5X2lkGAEgASgJQgIYARIUCgxsbG1fcHJvdmlkZXIYAiABKAka2wMKCUFnZW50Q2FyZBIaCghpY29uX3VybBgBIAEoCUIIukgFcgMYgAQSIwoRZG9jdW1lbnRhdGlvbl91cmwYAiABKAlCCLpIBXIDGIAEEk0KCHByb3ZpZGVyGAMgASgLMjsucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZC5Qcm92aWRlchJICgZza2lsbHMYBCADKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkLlNraWxsGkEKCFByb3ZpZGVyEh4KDG9yZ2FuaXphdGlvbhgBIAEoCUIIukgFcgMYgAESFQoDdXJsGAIgASgJQgi6SAVyAxiABBqwAQoFU2tpbGwSGQoCaWQYASABKAlCDeBBArpIB8gBAXICGEASHAoEbmFtZRgCIAEoCUIO4EECukgIyAEBcgMYgAESIwoLZGVzY3JpcHRpb24YAyABKAlCDuBBArpICMgBAXIDGIAEEgwKBHRhZ3MYBCADKAkSEAoIZXhhbXBsZXMYBSADKAkSEwoLaW5wdXRfbW9kZXMYBiADKAkSFAoMb3V0cHV0X21vZGVzGAcgAygJIn0KBVN0YXRlEhUKEVNUQVRFX1VOU1BFQ0lGSUVEEAASEgoOU1RBVEVfU1RBUlRJTkcQARIRCg1TVEFURV9SVU5OSU5HEAISEgoOU1RBVEVfU1RPUFBJTkcQAxIRCg1TVEFURV9TVE9QUEVEEAQSDwoLU1RBVEVfRVJST1IQBTpB6kE+CidyZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzL0FJQWdlbnQqCWFpX2FnZW50czIIYWlfYWdlbnQipAoKDUFJQWdlbnRDcmVhdGUSOgoMZGlzcGxheV9uYW1lGAEgASgJQiTgQQK6SB7IAQFyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAiABKAlCCLpIBXIDGIACEnQKDXN5c3RlbV9wcm9tcHQYAyABKAlCXZJBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQu4EECukgHyAEBcgIQChJOCghwcm92aWRlchgEIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlckIJ4EECukgDyAEBEh0KBW1vZGVsGAYgASgJQg7gQQK6SAjIAQFyAxiAARJTCgttY3Bfc2VydmVycxgHIAMoCzI+LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZS5NY3BTZXJ2ZXJzRW50cnkSdQoEdGFncxgIIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZS5UYWdzRW50cnlCLbpIKpoBJxAQKiNyITIfXihbXHB7TH1ccHtafVxwe059Xy46Lz0rXC1AXSopJBJACglyZXNvdXJjZXMYCSABKAsyLS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxLlBpcGVsaW5lLlJlc291cmNlcxIhCg5tYXhfaXRlcmF0aW9ucxgKIAEoBUIJukgGGgQYZCgBElsKD3NlcnZpY2VfYWNjb3VudBgLIAEoCzI3LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5TZXJ2aWNlQWNjb3VudEIJ4EECukgDyAEBEnIKCXN1YmFnZW50cxgMIAMoCzI9LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZS5TdWJhZ2VudHNFbnRyeUIgukgdmgEaIhhyFhABGEAyEF5bQS1aYS16MC05Xy1dKyQSRwoHZ2F0ZXdheRgNIAEoCzI2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5HYXRld2F5Q29uZmlnEkYKCmFnZW50X2NhcmQYDiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkGmUKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuTUNQU2VydmVyOgI4ARorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpjCg5TdWJhZ2VudHNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQ6AjgBOkfqQUQKLXJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMvQUlBZ2VudENyZWF0ZSoJYWlfYWdlbnRzMghhaV9hZ2VudCJYChRDcmVhdGVBSUFnZW50UmVxdWVzdBJACghhaV9hZ2VudBgBIAEoCzIuLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZSJTChVDcmVhdGVBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQiPwoRR2V0QUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCJQChJHZXRBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQiuQUKE0xpc3RBSUFnZW50c1JlcXVlc3QSSwoGZmlsdGVyGAEgASgLMjsucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5MaXN0QUlBZ2VudHNSZXF1ZXN0LkZpbHRlchKdAQoJcGFnZV9zaXplGAIgASgFQokBkkF0MmBMaW1pdCB0aGUgcGFnaW5hdGVkIHJlc3BvbnNlIHRvIGEgbnVtYmVyIG9mIGl0ZW1zLiBEZWZhdWx0cyB0byA1MC4gVXNlIC0xIHRvIGRpc2FibGUgcGFnaW5hdGlvbi5ZAAAAAAAAWUBpAAAAAAAA8L+6SA8aDRhkKP///////////wESEgoKcGFnZV90b2tlbhgDIAEoCRqgAwoGRmlsdGVyEnkKDW5hbWVfY29udGFpbnMYASABKAlCYpJBQDI+QW55IEFJIGFnZW50cyB0aGF0IHBhcnRpYWxseSBtYXRjaCB0aGlzIG5hbWUgd2lsbCBiZSByZXR1cm5lZC66SBzYAQFyFxiAATISXltBLVphLXowLTktXyAvXSskEsMBCgR0YWdzGAIgAygLMkUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5MaXN0QUlBZ2VudHNSZXF1ZXN0LkZpbHRlci5UYWdzRW50cnlCbpJBPjI8QUkgYWdlbnRzIHRoYXQgbWF0Y2ggYWxsIHRoZSBwcm92aWRlZCB0YWdzIHdpbGwgYmUgcmV0dXJuZWQuukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEhEKCXNlY3JldF9pZBgDIAEoCRIVCg1tY3Bfc2VydmVyX2lkGAQgASgJGisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImwKFExpc3RBSUFnZW50c1Jlc3BvbnNlEjsKCWFpX2FnZW50cxgBIAMoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudBIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAki/AkKDUFJQWdlbnRVcGRhdGUSNAoMZGlzcGxheV9uYW1lGAEgASgJQh66SBtyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAiABKAlCCLpIBXIDGIACEm4KDXN5c3RlbV9wcm9tcHQYAyABKAlCV5JBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQuukgEcgIQChJDCghwcm92aWRlchgEIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlchIXCgVtb2RlbBgGIAEoCUIIukgFcgMYgAESUwoLbWNwX3NlcnZlcnMYByADKAsyPi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRVcGRhdGUuTWNwU2VydmVyc0VudHJ5EnUKBHRhZ3MYCCADKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRVcGRhdGUuVGFnc0VudHJ5Qi26SCqaAScQECojciEyH14oW1xwe0x9XHB7Wn1ccHtOfV8uOi89K1wtQF0qKSQSQAoJcmVzb3VyY2VzGAkgASgLMi0ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MS5QaXBlbGluZS5SZXNvdXJjZXMSIQoObWF4X2l0ZXJhdGlvbnMYCiABKAVCCbpIBhoEGGQoARJQCg9zZXJ2aWNlX2FjY291bnQYCyABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnQScgoJc3ViYWdlbnRzGAwgAygLMj0ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlLlN1YmFnZW50c0VudHJ5QiC6SB2aARoiGHIWEAEYQDIQXltBLVphLXowLTlfLV0rJBJHCgdnYXRld2F5GA0gASgLMjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkdhdGV3YXlDb25maWcSRgoKYWdlbnRfY2FyZBgOIAEoCzIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5BZ2VudENhcmQaZQoPTWNwU2VydmVyc0VudHJ5EgsKA2tleRgBIAEoCRJBCgV2YWx1ZRgCIAEoCzIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NQ1BTZXJ2ZXI6AjgBGisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGmMKDlN1YmFnZW50c0VudHJ5EgsKA2tleRgBIAEoCRJACgV2YWx1ZRgCIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5TdWJhZ2VudDoCOAE6R+pBRAotcmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy9BSUFnZW50VXBkYXRlKglhaV9hZ2VudHMyCGFpX2FnZW50IsABChRVcGRhdGVBSUFnZW50UmVxdWVzdBIqCgJpZBgBIAEoCUIe4EECukgYyAEBchMyEV5bQS1aYS16MC05LV8vXSskEksKCGFpX2FnZW50GAIgASgLMi4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlQgngQQK6SAPIAQESLwoLdXBkYXRlX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIlMKFVVwZGF0ZUFJQWdlbnRSZXNwb25zZRI6CghhaV9hZ2VudBgBIAEoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudCJCChREZWxldGVBSUFnZW50UmVxdWVzdBIqCgJpZBgBIAEoCUIe4EECukgYyAEBchMyEV5bQS1aYS16MC05LV8vXSskIhcKFURlbGV0ZUFJQWdlbnRSZXNwb25zZSJAChJTdG9wQUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCJRChNTdG9wQUlBZ2VudFJlc3BvbnNlEjoKCGFpX2FnZW50GAEgASgLMigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50IkEKE1N0YXJ0QUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCJSChRTdGFydEFJQWdlbnRSZXNwb25zZRI6CghhaV9hZ2VudBgBIAEoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudDKkFAoOQUlBZ2VudFNlcnZpY2USwgIKDUNyZWF0ZUFJQWdlbnQSNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkNyZWF0ZUFJQWdlbnRSZXF1ZXN0GjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5DcmVhdGVBSUFnZW50UmVzcG9uc2UiwQGSQWkSD0NyZWF0ZSBBSSBBZ2VudBoWQ3JlYXRlIGEgbmV3IEFJIGFnZW50Lko+CgMyMDESNwoHQ3JlYXRlZBIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnTavwckCghhaWFnZW50cxoYZGF0YXBsYW5lX2FpYWdlbnRfY3JlYXRliqYdBAgCEAiC0+STAh86CGFpX2FnZW50IhMvdjFhbHBoYTMvYWktYWdlbnRzEuQCCgpHZXRBSUFnZW50EjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5HZXRBSUFnZW50UmVxdWVzdBozLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuR2V0QUlBZ2VudFJlc3BvbnNlIuwBkkGPARIMR2V0IEFJIEFnZW50GhhHZXQgYSBzcGVjaWZpYyBBSSBhZ2VudC5KOQoDMjAwEjIKAk9LEiwKKhooLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudEoqCgM0MDQSIwoJTm90IEZvdW5kEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVz2r8HLQoIYWlhZ2VudHMSCnJlcXVlc3QuaWQaFWRhdGFwbGFuZV9haWFnZW50X2dldIqmHQQIARAIgtPkkwIaEhgvdjFhbHBoYTMvYWktYWdlbnRzL3tpZH0S/AIKDExpc3RBSUFnZW50cxI0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVxdWVzdBo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVzcG9uc2Ui/gGSQZIBEg5MaXN0IEFJIEFnZW50cxo4TGlzdCBBSSBhZ2VudHMuIE9wdGlvbmFsOiBmaWx0ZXIgYmFzZWQgb24gQUkgYWdlbnQgbmFtZS5KRgoDMjAwEj8KAk9LEjkKNxo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVzcG9uc2XivwdBChJyZXNwb25zZS5haV9hZ2VudHMSKwoIYWlhZ2VudHMSB2VhY2guaWQaFmRhdGFwbGFuZV9haWFnZW50X2xpc3SKph0ECAEQCILT5JMCFRITL3YxYWxwaGEzL2FpLWFnZW50cxLgAgoNVXBkYXRlQUlBZ2VudBI1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuVXBkYXRlQUlBZ2VudFJlcXVlc3QaNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlVwZGF0ZUFJQWdlbnRSZXNwb25zZSLfAZJBdhIPVXBkYXRlIEFJIEFnZW50GihVcGRhdGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gQUkgYWdlbnQuSjkKAzIwMBIyCgJPSxIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnTavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfdXBkYXRliqYdBAgCEAiC0+STAiQ6CGFpX2FnZW50GhgvdjFhbHBoYTMvYWktYWdlbnRzL3tpZH0SxgIKDURlbGV0ZUFJQWdlbnQSNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkRlbGV0ZUFJQWdlbnRSZXF1ZXN0GjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5EZWxldGVBSUFnZW50UmVzcG9uc2UixQGSQWYSD0RlbGV0ZSBBSSBBZ2VudBoTRGVsZXRlIGFuIEFJIGFnZW50LkoSCgMyMDQSCwoHRGVsZXRlZBIASioKAzQwNBIjCglOb3QgRm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXPavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfZGVsZXRliqYdBAgCEAiC0+STAhoqGC92MWFscGhhMy9haS1hZ2VudHMve2lkfRL1AgoLU3RvcEFJQWdlbnQSMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0b3BBSUFnZW50UmVxdWVzdBo0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuU3RvcEFJQWdlbnRSZXNwb25zZSL6AZJBlQESDVN0b3AgQUkgQWdlbnQaGFN0b3AgYSBydW5uaW5nIEFJIGFnZW50Lko+CgMyMDASNwoHU3RvcHBlZBIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRKKgoDNDA0EiMKCU5vdCBGb3VuZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c9q/BzAKCGFpYWdlbnRzEgpyZXF1ZXN0LmlkGhhkYXRhcGxhbmVfYWlhZ2VudF9kZWxldGWKph0ECAIQCILT5JMCHxodL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9OnN0b3AS+wIKDFN0YXJ0QUlBZ2VudBI0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuU3RhcnRBSUFnZW50UmVxdWVzdBo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuU3RhcnRBSUFnZW50UmVzcG9uc2Ui/QGSQZcBEg5TdGFydCBBSSBBZ2VudBoZU3RhcnQgYSBzdG9wcGVkIEFJIGFnZW50Lko+CgMyMDASNwoHU3RhcnRlZBIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRKKgoDNDA0EiMKCU5vdCBGb3VuZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c9q/BzAKCGFpYWdlbnRzEgpyZXF1ZXN0LmlkGhhkYXRhcGxhbmVfYWlhZ2VudF9jcmVhdGWKph0ECAIQCILT5JMCIBoeL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9OnN0YXJ0GkWSQUIKCUFJIEFnZW50cxI1Q3JlYXRlIGFuZCBtYW5hZ2UgQUkgYWdlbnRzIGFuZCB0aGVpciBjb25maWd1cmF0aW9ucy5iBnByb3RvMw", [file_buf_validate_validate, file_google_api_annotations, file_google_api_field_behavior, file_google_api_resource, file_google_protobuf_field_mask, file_protoc_gen_openapiv2_options_annotations, file_redpanda_api_auth_v1_authorization, file_redpanda_api_common_v1_options, file_redpanda_api_dataplane_v1_pipeline]); + fileDesc("Ci5yZWRwYW5kYS9hcGkvZGF0YXBsYW5lL3YxYWxwaGEzL2FpX2FnZW50LnByb3RvEh9yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzIpchCgdBSUFnZW50EicKAmlkGAEgASgJQhvgQQO6SBVyEzIRXltBLVphLXowLTktXy9dKyQSOgoMZGlzcGxheV9uYW1lGAIgASgJQiTgQQK6SB7IAQFyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAyABKAlCCLpIBXIDGIACEnQKDXN5c3RlbV9wcm9tcHQYBCABKAlCXZJBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQu4EECukgHyAEBcgIQChJOCghwcm92aWRlchgFIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlckIJ4EECukgDyAEBEh0KBW1vZGVsGAcgASgJQg7gQQK6SAjIAQFyAxiAARJNCgttY3Bfc2VydmVycxgIIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NY3BTZXJ2ZXJzRW50cnkS+AEKCXJlc291cmNlcxgJIAEoCzItLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjEuUGlwZWxpbmUuUmVzb3VyY2VzQrUBkkGxATKuAVRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIHJlc291cmNlcyBmb3IgdGhlIEFJIEFnZW50LiBEZXBlbmRpbmcgb24gdGhlIGJhY2tlbmQsIHRoZSByZXNvdXJjZXMgbWlnaHQgYmUgZ3VhcmFudGVlZCwgb3IgbWlnaHQgYmUgdHdlYWtlZCBiYXNlZCBvbiB0aGUgdXRpbGl6YXRpb24gb2YgdGhlIEFJIEFnZW50LhJvCgR0YWdzGAogAygLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlRhZ3NFbnRyeUItukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEkIKBXN0YXRlGAsgASgOMi4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN0YXRlQgPgQQMSEAoDdXJsGAwgASgJQgPgQQMSIQoObWF4X2l0ZXJhdGlvbnMYDSABKAVCCbpIBhoEGGQoARJbCg9zZXJ2aWNlX2FjY291bnQYDiABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnRCCeBBArpIA8gBARJsCglzdWJhZ2VudHMYDyADKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnRzRW50cnlCILpIHZoBGiIYchYQARhAMhBeW0EtWmEtejAtOV8tXSskEkcKB2dhdGV3YXkYECABKAsyNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuR2F0ZXdheUNvbmZpZxJGCgphZ2VudF9jYXJkGBEgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZBJJCgx0ZWFtc19icmlkZ2UYEiABKAsyMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRUZWFtc0JyaWRnZRplCg9NY3BTZXJ2ZXJzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Lk1DUFNlcnZlcjoCOAEaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaYwoOU3ViYWdlbnRzRW50cnkSCwoDa2V5GAEgASgJEkAKBXZhbHVlGAIgASgLMjEucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN1YmFnZW50OgI4ARryCQoIUHJvdmlkZXISSgoGb3BlbmFpGAEgASgLMjgucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlByb3ZpZGVyLk9wZW5BSUgAElAKCWFudGhyb3BpYxgCIAEoCzI7LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5BbnRocm9waWNIABJKCgZnb29nbGUYAyABKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuR29vZ2xlSAASXwoRb3BlbmFpX2NvbXBhdGlibGUYBCABKAsyQi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuT3BlbkFJQ29tcGF0aWJsZUgAEkwKB2JlZHJvY2sYBSABKAsyOS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuQmVkcm9ja0gAGnkKBk9wZW5BSRJdCgdhcGlfa2V5GAEgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEhAKCGJhc2VfdXJsGAIgASgJGnwKCUFudGhyb3BpYxJdCgdhcGlfa2V5GAEgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEhAKCGJhc2VfdXJsGAIgASgJGnkKBkdvb2dsZRJdCgdhcGlfa2V5GAEgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEhAKCGJhc2VfdXJsGAIgASgJGp4BChBPcGVuQUlDb21wYXRpYmxlEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSKwoIYmFzZV91cmwYAiABKAlCGeBBArpIE8gBAXIOMgxeaHR0cHM/Oi8vLioapAIKB0JlZHJvY2sSNQoGcmVnaW9uGAEgASgJQiXgQQK6SB/IAQFyGjIYXlthLXpdezJ9KC1bYS16XSstXGQrKT8kEm4KGGFjY2Vzc19rZXlfaWRfc2VjcmV0X3JlZhgCIAEoCUJMukhJ2AEBckQyQl5cJFx7c2VjcmV0c1wuW0EtWmEtel9dW0EtWmEtejAtOV9dKihcLltBLVphLXpfXVtBLVphLXowLTlfXSopP1x9JBJyChxzZWNyZXRfYWNjZXNzX2tleV9zZWNyZXRfcmVmGAMgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kQhEKCHByb3ZpZGVyEgW6SAIIARqWAQoOU2VydmljZUFjY291bnQSHAoJY2xpZW50X2lkGAEgASgJQgngQQK6SAPIAQESZgoNY2xpZW50X3NlY3JldBgCIAEoCUJP4EECukhJyAEBckQyQl5cJFx7c2VjcmV0c1wuW0EtWmEtel9dW0EtWmEtejAtOV9dKihcLltBLVphLXpfXVtBLVphLXowLTlfXSopP1x9JBo8CglNQ1BTZXJ2ZXISCgoCaWQYASABKAkSIwoRdG9vbF9maWx0ZXJfcmVnZXgYAiABKAlCCLpIBXIDGIACGpsDCghTdWJhZ2VudBKwAQoNc3lzdGVtX3Byb21wdBgBIAEoCUKYAZJBhwEyhAFTeXN0ZW0gaW5zdHJ1Y3Rpb25zIHRoYXQgZGVmaW5lIGhvdyB0aGlzIHN1YmFnZW50IHNob3VsZCBiZWhhdmUuIFRoZSBzdWJhZ2VudCBpbmhlcml0cyB0aGUgcHJvdmlkZXIgYW5kIG1vZGVsIGZyb20gaXRzIHBhcmVudCBhZ2VudC7gQQK6SAfIAQFyAhAKElYKC21jcF9zZXJ2ZXJzGAIgAygLMkEucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN1YmFnZW50Lk1jcFNlcnZlcnNFbnRyeRIdCgtkZXNjcmlwdGlvbhgDIAEoCUIIukgFcgMYgAIaZQoPTWNwU2VydmVyc0VudHJ5EgsKA2tleRgBIAEoCRJBCgV2YWx1ZRgCIAEoCzIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NQ1BTZXJ2ZXI6AjgBGkUKDUdhdGV3YXlDb25maWcSHgoSdmlydHVhbF9nYXRld2F5X2lkGAEgASgJQgIYARIUCgxsbG1fcHJvdmlkZXIYAiABKAka2wMKCUFnZW50Q2FyZBIaCghpY29uX3VybBgBIAEoCUIIukgFcgMYgAQSIwoRZG9jdW1lbnRhdGlvbl91cmwYAiABKAlCCLpIBXIDGIAEEk0KCHByb3ZpZGVyGAMgASgLMjsucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZC5Qcm92aWRlchJICgZza2lsbHMYBCADKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkLlNraWxsGkEKCFByb3ZpZGVyEh4KDG9yZ2FuaXphdGlvbhgBIAEoCUIIukgFcgMYgAESFQoDdXJsGAIgASgJQgi6SAVyAxiABBqwAQoFU2tpbGwSGQoCaWQYASABKAlCDeBBArpIB8gBAXICGEASHAoEbmFtZRgCIAEoCUIO4EECukgIyAEBcgMYgAESIwoLZGVzY3JpcHRpb24YAyABKAlCDuBBArpICMgBAXIDGIAEEgwKBHRhZ3MYBCADKAkSEAoIZXhhbXBsZXMYBSADKAkSEwoLaW5wdXRfbW9kZXMYBiADKAkSFAoMb3V0cHV0X21vZGVzGAcgAygJIn0KBVN0YXRlEhUKEVNUQVRFX1VOU1BFQ0lGSUVEEAASEgoOU1RBVEVfU1RBUlRJTkcQARIRCg1TVEFURV9SVU5OSU5HEAISEgoOU1RBVEVfU1RPUFBJTkcQAxIRCg1TVEFURV9TVE9QUEVEEAQSDwoLU1RBVEVfRVJST1IQBTpB6kE+CidyZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzL0FJQWdlbnQqCWFpX2FnZW50czIIYWlfYWdlbnQiugEKEkFJQWdlbnRUZWFtc0JyaWRnZRIPCgdlbmFibGVkGAEgASgIEhIKCmJvdF9hcHBfaWQYAiABKAkSFQoNYm90X3RlbmFudF9pZBgDIAEoCRJoChJib3RfYXBwX3NlY3JldF9yZWYYBCABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQi7woKDUFJQWdlbnRDcmVhdGUSOgoMZGlzcGxheV9uYW1lGAEgASgJQiTgQQK6SB7IAQFyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAiABKAlCCLpIBXIDGIACEnQKDXN5c3RlbV9wcm9tcHQYAyABKAlCXZJBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQu4EECukgHyAEBcgIQChJOCghwcm92aWRlchgEIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlckIJ4EECukgDyAEBEh0KBW1vZGVsGAYgASgJQg7gQQK6SAjIAQFyAxiAARJTCgttY3Bfc2VydmVycxgHIAMoCzI+LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZS5NY3BTZXJ2ZXJzRW50cnkSdQoEdGFncxgIIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZS5UYWdzRW50cnlCLbpIKpoBJxAQKiNyITIfXihbXHB7TH1ccHtafVxwe059Xy46Lz0rXC1AXSopJBJACglyZXNvdXJjZXMYCSABKAsyLS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxLlBpcGVsaW5lLlJlc291cmNlcxIhCg5tYXhfaXRlcmF0aW9ucxgKIAEoBUIJukgGGgQYZCgBElsKD3NlcnZpY2VfYWNjb3VudBgLIAEoCzI3LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5TZXJ2aWNlQWNjb3VudEIJ4EECukgDyAEBEnIKCXN1YmFnZW50cxgMIAMoCzI9LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZS5TdWJhZ2VudHNFbnRyeUIgukgdmgEaIhhyFhABGEAyEF5bQS1aYS16MC05Xy1dKyQSRwoHZ2F0ZXdheRgNIAEoCzI2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5HYXRld2F5Q29uZmlnEkYKCmFnZW50X2NhcmQYDiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkEkkKDHRlYW1zX2JyaWRnZRgPIAEoCzIzLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFRlYW1zQnJpZGdlGmUKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuTUNQU2VydmVyOgI4ARorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpjCg5TdWJhZ2VudHNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQ6AjgBOkfqQUQKLXJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMvQUlBZ2VudENyZWF0ZSoJYWlfYWdlbnRzMghhaV9hZ2VudCJYChRDcmVhdGVBSUFnZW50UmVxdWVzdBJACghhaV9hZ2VudBgBIAEoCzIuLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZSJTChVDcmVhdGVBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQiPwoRR2V0QUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCJQChJHZXRBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQiuQUKE0xpc3RBSUFnZW50c1JlcXVlc3QSSwoGZmlsdGVyGAEgASgLMjsucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5MaXN0QUlBZ2VudHNSZXF1ZXN0LkZpbHRlchKdAQoJcGFnZV9zaXplGAIgASgFQokBkkF0MmBMaW1pdCB0aGUgcGFnaW5hdGVkIHJlc3BvbnNlIHRvIGEgbnVtYmVyIG9mIGl0ZW1zLiBEZWZhdWx0cyB0byA1MC4gVXNlIC0xIHRvIGRpc2FibGUgcGFnaW5hdGlvbi5ZAAAAAAAAWUBpAAAAAAAA8L+6SA8aDRhkKP///////////wESEgoKcGFnZV90b2tlbhgDIAEoCRqgAwoGRmlsdGVyEnkKDW5hbWVfY29udGFpbnMYASABKAlCYpJBQDI+QW55IEFJIGFnZW50cyB0aGF0IHBhcnRpYWxseSBtYXRjaCB0aGlzIG5hbWUgd2lsbCBiZSByZXR1cm5lZC66SBzYAQFyFxiAATISXltBLVphLXowLTktXyAvXSskEsMBCgR0YWdzGAIgAygLMkUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5MaXN0QUlBZ2VudHNSZXF1ZXN0LkZpbHRlci5UYWdzRW50cnlCbpJBPjI8QUkgYWdlbnRzIHRoYXQgbWF0Y2ggYWxsIHRoZSBwcm92aWRlZCB0YWdzIHdpbGwgYmUgcmV0dXJuZWQuukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEhEKCXNlY3JldF9pZBgDIAEoCRIVCg1tY3Bfc2VydmVyX2lkGAQgASgJGisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImwKFExpc3RBSUFnZW50c1Jlc3BvbnNlEjsKCWFpX2FnZW50cxgBIAMoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudBIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkixwoKDUFJQWdlbnRVcGRhdGUSNAoMZGlzcGxheV9uYW1lGAEgASgJQh66SBtyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAiABKAlCCLpIBXIDGIACEm4KDXN5c3RlbV9wcm9tcHQYAyABKAlCV5JBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQuukgEcgIQChJDCghwcm92aWRlchgEIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlchIXCgVtb2RlbBgGIAEoCUIIukgFcgMYgAESUwoLbWNwX3NlcnZlcnMYByADKAsyPi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRVcGRhdGUuTWNwU2VydmVyc0VudHJ5EnUKBHRhZ3MYCCADKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRVcGRhdGUuVGFnc0VudHJ5Qi26SCqaAScQECojciEyH14oW1xwe0x9XHB7Wn1ccHtOfV8uOi89K1wtQF0qKSQSQAoJcmVzb3VyY2VzGAkgASgLMi0ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MS5QaXBlbGluZS5SZXNvdXJjZXMSIQoObWF4X2l0ZXJhdGlvbnMYCiABKAVCCbpIBhoEGGQoARJQCg9zZXJ2aWNlX2FjY291bnQYCyABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnQScgoJc3ViYWdlbnRzGAwgAygLMj0ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlLlN1YmFnZW50c0VudHJ5QiC6SB2aARoiGHIWEAEYQDIQXltBLVphLXowLTlfLV0rJBJHCgdnYXRld2F5GA0gASgLMjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkdhdGV3YXlDb25maWcSRgoKYWdlbnRfY2FyZBgOIAEoCzIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5BZ2VudENhcmQSSQoMdGVhbXNfYnJpZGdlGA8gASgLMjMucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VGVhbXNCcmlkZ2UaZQoPTWNwU2VydmVyc0VudHJ5EgsKA2tleRgBIAEoCRJBCgV2YWx1ZRgCIAEoCzIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NQ1BTZXJ2ZXI6AjgBGisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGmMKDlN1YmFnZW50c0VudHJ5EgsKA2tleRgBIAEoCRJACgV2YWx1ZRgCIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5TdWJhZ2VudDoCOAE6R+pBRAotcmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy9BSUFnZW50VXBkYXRlKglhaV9hZ2VudHMyCGFpX2FnZW50IsABChRVcGRhdGVBSUFnZW50UmVxdWVzdBIqCgJpZBgBIAEoCUIe4EECukgYyAEBchMyEV5bQS1aYS16MC05LV8vXSskEksKCGFpX2FnZW50GAIgASgLMi4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlQgngQQK6SAPIAQESLwoLdXBkYXRlX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIlMKFVVwZGF0ZUFJQWdlbnRSZXNwb25zZRI6CghhaV9hZ2VudBgBIAEoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudCJCChREZWxldGVBSUFnZW50UmVxdWVzdBIqCgJpZBgBIAEoCUIe4EECukgYyAEBchMyEV5bQS1aYS16MC05LV8vXSskIhcKFURlbGV0ZUFJQWdlbnRSZXNwb25zZSJAChJTdG9wQUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCJRChNTdG9wQUlBZ2VudFJlc3BvbnNlEjoKCGFpX2FnZW50GAEgASgLMigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50IkEKE1N0YXJ0QUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCJSChRTdGFydEFJQWdlbnRSZXNwb25zZRI6CghhaV9hZ2VudBgBIAEoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudDKkFAoOQUlBZ2VudFNlcnZpY2USwgIKDUNyZWF0ZUFJQWdlbnQSNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkNyZWF0ZUFJQWdlbnRSZXF1ZXN0GjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5DcmVhdGVBSUFnZW50UmVzcG9uc2UiwQGSQWkSD0NyZWF0ZSBBSSBBZ2VudBoWQ3JlYXRlIGEgbmV3IEFJIGFnZW50Lko+CgMyMDESNwoHQ3JlYXRlZBIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnTavwckCghhaWFnZW50cxoYZGF0YXBsYW5lX2FpYWdlbnRfY3JlYXRliqYdBAgCEAiC0+STAh86CGFpX2FnZW50IhMvdjFhbHBoYTMvYWktYWdlbnRzEuQCCgpHZXRBSUFnZW50EjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5HZXRBSUFnZW50UmVxdWVzdBozLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuR2V0QUlBZ2VudFJlc3BvbnNlIuwBkkGPARIMR2V0IEFJIEFnZW50GhhHZXQgYSBzcGVjaWZpYyBBSSBhZ2VudC5KOQoDMjAwEjIKAk9LEiwKKhooLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudEoqCgM0MDQSIwoJTm90IEZvdW5kEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVz2r8HLQoIYWlhZ2VudHMSCnJlcXVlc3QuaWQaFWRhdGFwbGFuZV9haWFnZW50X2dldIqmHQQIARAIgtPkkwIaEhgvdjFhbHBoYTMvYWktYWdlbnRzL3tpZH0S/AIKDExpc3RBSUFnZW50cxI0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVxdWVzdBo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVzcG9uc2Ui/gGSQZIBEg5MaXN0IEFJIEFnZW50cxo4TGlzdCBBSSBhZ2VudHMuIE9wdGlvbmFsOiBmaWx0ZXIgYmFzZWQgb24gQUkgYWdlbnQgbmFtZS5KRgoDMjAwEj8KAk9LEjkKNxo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVzcG9uc2XivwdBChJyZXNwb25zZS5haV9hZ2VudHMSKwoIYWlhZ2VudHMSB2VhY2guaWQaFmRhdGFwbGFuZV9haWFnZW50X2xpc3SKph0ECAEQCILT5JMCFRITL3YxYWxwaGEzL2FpLWFnZW50cxLgAgoNVXBkYXRlQUlBZ2VudBI1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuVXBkYXRlQUlBZ2VudFJlcXVlc3QaNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlVwZGF0ZUFJQWdlbnRSZXNwb25zZSLfAZJBdhIPVXBkYXRlIEFJIEFnZW50GihVcGRhdGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gQUkgYWdlbnQuSjkKAzIwMBIyCgJPSxIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnTavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfdXBkYXRliqYdBAgCEAiC0+STAiQ6CGFpX2FnZW50GhgvdjFhbHBoYTMvYWktYWdlbnRzL3tpZH0SxgIKDURlbGV0ZUFJQWdlbnQSNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkRlbGV0ZUFJQWdlbnRSZXF1ZXN0GjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5EZWxldGVBSUFnZW50UmVzcG9uc2UixQGSQWYSD0RlbGV0ZSBBSSBBZ2VudBoTRGVsZXRlIGFuIEFJIGFnZW50LkoSCgMyMDQSCwoHRGVsZXRlZBIASioKAzQwNBIjCglOb3QgRm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXPavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfZGVsZXRliqYdBAgCEAiC0+STAhoqGC92MWFscGhhMy9haS1hZ2VudHMve2lkfRL1AgoLU3RvcEFJQWdlbnQSMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0b3BBSUFnZW50UmVxdWVzdBo0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuU3RvcEFJQWdlbnRSZXNwb25zZSL6AZJBlQESDVN0b3AgQUkgQWdlbnQaGFN0b3AgYSBydW5uaW5nIEFJIGFnZW50Lko+CgMyMDASNwoHU3RvcHBlZBIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRKKgoDNDA0EiMKCU5vdCBGb3VuZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c9q/BzAKCGFpYWdlbnRzEgpyZXF1ZXN0LmlkGhhkYXRhcGxhbmVfYWlhZ2VudF9kZWxldGWKph0ECAIQCILT5JMCHxodL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9OnN0b3AS+wIKDFN0YXJ0QUlBZ2VudBI0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuU3RhcnRBSUFnZW50UmVxdWVzdBo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuU3RhcnRBSUFnZW50UmVzcG9uc2Ui/QGSQZcBEg5TdGFydCBBSSBBZ2VudBoZU3RhcnQgYSBzdG9wcGVkIEFJIGFnZW50Lko+CgMyMDASNwoHU3RhcnRlZBIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRKKgoDNDA0EiMKCU5vdCBGb3VuZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c9q/BzAKCGFpYWdlbnRzEgpyZXF1ZXN0LmlkGhhkYXRhcGxhbmVfYWlhZ2VudF9jcmVhdGWKph0ECAIQCILT5JMCIBoeL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9OnN0YXJ0GkWSQUIKCUFJIEFnZW50cxI1Q3JlYXRlIGFuZCBtYW5hZ2UgQUkgYWdlbnRzIGFuZCB0aGVpciBjb25maWd1cmF0aW9ucy5iBnByb3RvMw", [file_buf_validate_validate, file_google_api_annotations, file_google_api_field_behavior, file_google_api_resource, file_google_protobuf_field_mask, file_protoc_gen_openapiv2_options_annotations, file_redpanda_api_auth_v1_authorization, file_redpanda_api_common_v1_options, file_redpanda_api_dataplane_v1_pipeline]); /** * Defines the AI Agent resource. @@ -140,6 +140,13 @@ export type AIAgent = Message<"redpanda.api.dataplane.v1alpha3.AIAgent"> & { * @generated from field: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard agent_card = 17; */ agentCard?: AIAgent_AgentCard; + + /** + * Optional Microsoft Teams bridge configuration. + * + * @generated from field: redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge teams_bridge = 18; + */ + teamsBridge?: AIAgentTeamsBridge; }; /** @@ -623,6 +630,40 @@ export enum AIAgent_State { export const AIAgent_StateSchema: GenEnum = /*@__PURE__*/ enumDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 0, 0); +/** + * Microsoft Teams bridge configuration for connecting an AI agent to Teams. + * + * @generated from message redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge + */ +export type AIAgentTeamsBridge = Message<"redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge"> & { + /** + * @generated from field: bool enabled = 1; + */ + enabled: boolean; + + /** + * @generated from field: string bot_app_id = 2; + */ + botAppId: string; + + /** + * @generated from field: string bot_tenant_id = 3; + */ + botTenantId: string; + + /** + * @generated from field: string bot_app_secret_ref = 4; + */ + botAppSecretRef: string; +}; + +/** + * Describes the message redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge. + * Use `create(AIAgentTeamsBridgeSchema)` to create a new message. + */ +export const AIAgentTeamsBridgeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 1); + /** * AIAgentCreate contains the details for the AI agent creation request. * @@ -713,6 +754,13 @@ export type AIAgentCreate = Message<"redpanda.api.dataplane.v1alpha3.AIAgentCrea * @generated from field: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard agent_card = 14; */ agentCard?: AIAgent_AgentCard; + + /** + * Optional Microsoft Teams bridge configuration. + * + * @generated from field: redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge teams_bridge = 15; + */ + teamsBridge?: AIAgentTeamsBridge; }; /** @@ -720,7 +768,7 @@ export type AIAgentCreate = Message<"redpanda.api.dataplane.v1alpha3.AIAgentCrea * Use `create(AIAgentCreateSchema)` to create a new message. */ export const AIAgentCreateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 1); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 2); /** * CreateAIAgentRequest is the request of CreateAIAgent. @@ -739,7 +787,7 @@ export type CreateAIAgentRequest = Message<"redpanda.api.dataplane.v1alpha3.Crea * Use `create(CreateAIAgentRequestSchema)` to create a new message. */ export const CreateAIAgentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 2); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 3); /** * @generated from message redpanda.api.dataplane.v1alpha3.CreateAIAgentResponse @@ -756,7 +804,7 @@ export type CreateAIAgentResponse = Message<"redpanda.api.dataplane.v1alpha3.Cre * Use `create(CreateAIAgentResponseSchema)` to create a new message. */ export const CreateAIAgentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 3); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 4); /** * @generated from message redpanda.api.dataplane.v1alpha3.GetAIAgentRequest @@ -775,7 +823,7 @@ export type GetAIAgentRequest = Message<"redpanda.api.dataplane.v1alpha3.GetAIAg * Use `create(GetAIAgentRequestSchema)` to create a new message. */ export const GetAIAgentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 4); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 5); /** * @generated from message redpanda.api.dataplane.v1alpha3.GetAIAgentResponse @@ -792,7 +840,7 @@ export type GetAIAgentResponse = Message<"redpanda.api.dataplane.v1alpha3.GetAIA * Use `create(GetAIAgentResponseSchema)` to create a new message. */ export const GetAIAgentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 5); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 6); /** * @generated from message redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest @@ -826,7 +874,7 @@ export type ListAIAgentsRequest = Message<"redpanda.api.dataplane.v1alpha3.ListA * Use `create(ListAIAgentsRequestSchema)` to create a new message. */ export const ListAIAgentsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 6); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 7); /** * @generated from message redpanda.api.dataplane.v1alpha3.ListAIAgentsRequest.Filter @@ -862,7 +910,7 @@ export type ListAIAgentsRequest_Filter = Message<"redpanda.api.dataplane.v1alpha * Use `create(ListAIAgentsRequest_FilterSchema)` to create a new message. */ export const ListAIAgentsRequest_FilterSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 6, 0); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 7, 0); /** * @generated from message redpanda.api.dataplane.v1alpha3.ListAIAgentsResponse @@ -884,7 +932,7 @@ export type ListAIAgentsResponse = Message<"redpanda.api.dataplane.v1alpha3.List * Use `create(ListAIAgentsResponseSchema)` to create a new message. */ export const ListAIAgentsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 7); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 8); /** * @generated from message redpanda.api.dataplane.v1alpha3.AIAgentUpdate @@ -976,6 +1024,13 @@ export type AIAgentUpdate = Message<"redpanda.api.dataplane.v1alpha3.AIAgentUpda * @generated from field: redpanda.api.dataplane.v1alpha3.AIAgent.AgentCard agent_card = 14; */ agentCard?: AIAgent_AgentCard; + + /** + * Optional Microsoft Teams bridge configuration. + * + * @generated from field: redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge teams_bridge = 15; + */ + teamsBridge?: AIAgentTeamsBridge; }; /** @@ -983,7 +1038,7 @@ export type AIAgentUpdate = Message<"redpanda.api.dataplane.v1alpha3.AIAgentUpda * Use `create(AIAgentUpdateSchema)` to create a new message. */ export const AIAgentUpdateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 8); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 9); /** * @generated from message redpanda.api.dataplane.v1alpha3.UpdateAIAgentRequest @@ -1015,7 +1070,7 @@ export type UpdateAIAgentRequest = Message<"redpanda.api.dataplane.v1alpha3.Upda * Use `create(UpdateAIAgentRequestSchema)` to create a new message. */ export const UpdateAIAgentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 9); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 10); /** * @generated from message redpanda.api.dataplane.v1alpha3.UpdateAIAgentResponse @@ -1032,7 +1087,7 @@ export type UpdateAIAgentResponse = Message<"redpanda.api.dataplane.v1alpha3.Upd * Use `create(UpdateAIAgentResponseSchema)` to create a new message. */ export const UpdateAIAgentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 10); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 11); /** * @generated from message redpanda.api.dataplane.v1alpha3.DeleteAIAgentRequest @@ -1051,7 +1106,7 @@ export type DeleteAIAgentRequest = Message<"redpanda.api.dataplane.v1alpha3.Dele * Use `create(DeleteAIAgentRequestSchema)` to create a new message. */ export const DeleteAIAgentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 11); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 12); /** * @generated from message redpanda.api.dataplane.v1alpha3.DeleteAIAgentResponse @@ -1064,7 +1119,7 @@ export type DeleteAIAgentResponse = Message<"redpanda.api.dataplane.v1alpha3.Del * Use `create(DeleteAIAgentResponseSchema)` to create a new message. */ export const DeleteAIAgentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 12); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 13); /** * @generated from message redpanda.api.dataplane.v1alpha3.StopAIAgentRequest @@ -1083,7 +1138,7 @@ export type StopAIAgentRequest = Message<"redpanda.api.dataplane.v1alpha3.StopAI * Use `create(StopAIAgentRequestSchema)` to create a new message. */ export const StopAIAgentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 13); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 14); /** * @generated from message redpanda.api.dataplane.v1alpha3.StopAIAgentResponse @@ -1100,7 +1155,7 @@ export type StopAIAgentResponse = Message<"redpanda.api.dataplane.v1alpha3.StopA * Use `create(StopAIAgentResponseSchema)` to create a new message. */ export const StopAIAgentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 14); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 15); /** * @generated from message redpanda.api.dataplane.v1alpha3.StartAIAgentRequest @@ -1119,7 +1174,7 @@ export type StartAIAgentRequest = Message<"redpanda.api.dataplane.v1alpha3.Start * Use `create(StartAIAgentRequestSchema)` to create a new message. */ export const StartAIAgentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 15); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 16); /** * @generated from message redpanda.api.dataplane.v1alpha3.StartAIAgentResponse @@ -1136,7 +1191,7 @@ export type StartAIAgentResponse = Message<"redpanda.api.dataplane.v1alpha3.Star * Use `create(StartAIAgentResponseSchema)` to create a new message. */ export const StartAIAgentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 16); + messageDesc(file_redpanda_api_dataplane_v1alpha3_ai_agent, 17); /** * AIAgentService is the service for AI Agents. diff --git a/proto/gen/openapi/openapi.v1alpha2.json b/proto/gen/openapi/openapi.v1alpha2.json index 8a4eb90cb4..b1c74c7eab 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 b7564813a3..89bdd1aa11 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 069b64b4b3..383e5841e8 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"},"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"}},"required":["display_name","system_prompt","provider","model","service_account"],"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"}},"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"},"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.","properties":{"bot_app_id":{"type":"string"},"bot_app_secret_ref":{"type":"string"},"bot_tenant_id":{"type":"string"},"enabled":{"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 diff --git a/proto/gen/openapi/openapi.v1alpha3.yaml b/proto/gen/openapi/openapi.v1alpha3.yaml index 7a06993bf5..87e41b0e56 100644 --- a/proto/gen/openapi/openapi.v1alpha3.yaml +++ b/proto/gen/openapi/openapi.v1alpha3.yaml @@ -52,6 +52,8 @@ components: Tags are key-value pairs that can be assigned to an AI agent resource. They help organize AI agents and enable filtering when listing them. type: object + teams_bridge: + $ref: '#/components/schemas/AIAgentTeamsBridge' url: description: URL to connect to the AI agent endpoint. readOnly: true @@ -164,6 +166,8 @@ components: 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 @@ -171,6 +175,18 @@ components: - model - service_account type: object + AIAgentTeamsBridge: + description: Microsoft Teams bridge configuration for connecting an AI agent to Teams. + properties: + bot_app_id: + type: string + bot_app_secret_ref: + type: string + bot_tenant_id: + type: string + enabled: + type: boolean + type: object AIAgentUpdate: properties: agent_card: @@ -216,6 +232,8 @@ components: A map of tags to add, update or delete. If 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. diff --git a/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto b/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto index 62060208f1..650b027426 100644 --- a/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto +++ b/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto @@ -108,6 +108,9 @@ message AIAgent { // Not user-configurable: capabilities and authentication (managed by Redpanda). AgentCard agent_card = 17; + // Optional Microsoft Teams bridge configuration. + AIAgentTeamsBridge teams_bridge = 18; + message Provider { message OpenAI { string api_key = 1 [ @@ -296,6 +299,17 @@ message AIAgent { } } +// Microsoft Teams bridge configuration for connecting an AI agent to Teams. +message AIAgentTeamsBridge { + bool enabled = 1; + string bot_app_id = 2; + string bot_tenant_id = 3; + string bot_app_secret_ref = 4 [ + (buf.validate.field).ignore = IGNORE_IF_ZERO_VALUE, + (buf.validate.field).string.pattern = "^\\$\\{secrets\\.[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)?\\}$" + ]; +} + // AIAgentService is the service for AI Agents. // It exposes the API for creating and managing AI agents and their configurations. service AIAgentService { @@ -614,6 +628,9 @@ message AIAgentCreate { // Optional A2A agent card configuration. AIAgent.AgentCard agent_card = 14; + + // Optional Microsoft Teams bridge configuration. + AIAgentTeamsBridge teams_bridge = 15; } // CreateAIAgentRequest is the request of CreateAIAgent. @@ -755,6 +772,9 @@ message AIAgentUpdate { // Optional A2A agent card configuration. AIAgent.AgentCard agent_card = 14; + + // Optional Microsoft Teams bridge configuration. + AIAgentTeamsBridge teams_bridge = 15; } message UpdateAIAgentRequest { From ef956a20613c8ad8ec0f98cf7864eae066ee5ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Br=C3=BCderl?= Date: Wed, 6 May 2026 16:37:43 +0200 Subject: [PATCH 2/6] fix: strip both agent-id and ai-agents from URL when deriving Teams endpoint The agent URL pattern is .ai-agents..clusters.ign.rdpa.co. The old code only stripped the first subdomain, leaving ai-agents in place. Now we find the ai-agents segment and take everything after it as the cluster domain. --- .../pages/agents/details/ai-agent-integrations-tab.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx index a6e2e26447..5d104ca181 100644 --- a/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx +++ b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx @@ -57,14 +57,16 @@ const extractSecretName = (ref: string): string => { return match ? match[1] : ''; }; +// Agent URL format: https://.ai-agents..clusters.ign.rdpa.co const getMessagingEndpointUrl = (agentUrl: string, agentId: string): string => { try { const url = new URL(agentUrl); const hostParts = url.hostname.split('.'); - if (hostParts.length < 2) { + const aiAgentsIndex = hostParts.indexOf('ai-agents'); + if (aiAgentsIndex < 0 || aiAgentsIndex + 1 >= hostParts.length) { return ''; } - const clusterDomain = hostParts.slice(1).join('.'); + const clusterDomain = hostParts.slice(aiAgentsIndex + 1).join('.'); return `https://msteams-bridge.${clusterDomain}/msteams/v1/${agentId}`; } catch { return ''; From 4376678657f76842128e2f9d3f0f8f9fe4145ef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Br=C3=BCderl?= Date: Wed, 6 May 2026 16:55:07 +0200 Subject: [PATCH 3/6] feat: read teams_bridge_endpoint from status instead of deriving it Add optional OUTPUT_ONLY teams_bridge_endpoint field to AIAgent. The bridge controller populates this when it starts serving, so console just displays it -- no URL gymnastics needed. --- .../api/dataplane/v1alpha3/ai_agent.pb.go | 1401 +++++++++-------- .../details/ai-agent-integrations-tab.tsx | 24 +- .../api/dataplane/v1alpha3/ai_agent_pb.ts | 9 +- proto/gen/openapi/openapi.v1alpha3.json | 2 +- proto/gen/openapi/openapi.v1alpha3.yaml | 5 + .../api/dataplane/v1alpha3/ai_agent.proto | 3 + 6 files changed, 728 insertions(+), 716 deletions(-) diff --git a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go index 2d9c2ef676..bb27d29cc3 100644 --- a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go +++ b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go @@ -132,9 +132,11 @@ type AIAgent struct { // Not user-configurable: capabilities and authentication (managed by Redpanda). AgentCard *AIAgent_AgentCard `protobuf:"bytes,17,opt,name=agent_card,json=agentCard,proto3" json:"agent_card,omitempty"` // Optional Microsoft Teams bridge configuration. - TeamsBridge *AIAgentTeamsBridge `protobuf:"bytes,18,opt,name=teams_bridge,json=teamsBridge,proto3" json:"teams_bridge,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + TeamsBridge *AIAgentTeamsBridge `protobuf:"bytes,18,opt,name=teams_bridge,json=teamsBridge,proto3" json:"teams_bridge,omitempty"` + // Messaging endpoint URL for the Teams bridge, populated by the bridge controller. + TeamsBridgeEndpoint *string `protobuf:"bytes,19,opt,name=teams_bridge_endpoint,json=teamsBridgeEndpoint,proto3,oneof" json:"teams_bridge_endpoint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AIAgent) Reset() { @@ -286,6 +288,13 @@ func (x *AIAgent) GetTeamsBridge() *AIAgentTeamsBridge { return nil } +func (x *AIAgent) GetTeamsBridgeEndpoint() string { + if x != nil && x.TeamsBridgeEndpoint != nil { + return *x.TeamsBridgeEndpoint + } + return "" +} + // Microsoft Teams bridge configuration for connecting an AI agent to Teams. type AIAgentTeamsBridge struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2298,7 +2307,7 @@ var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDesc = []byte{ 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, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x26, 0x0a, 0x07, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfb, 0x26, 0x0a, 0x07, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xe0, 0x41, 0x03, 0xba, 0x48, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, @@ -2394,737 +2403,742 @@ var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDesc = []byte{ 0x61, 0x70, 0x69, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x73, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x15, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x5f, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x13, 0x74, 0x65, + 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, + 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0xa9, 0x0b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x52, + 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, + 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, + 0x61, 0x69, 0x12, 0x5b, 0x0a, 0x09, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0xa9, 0x0b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x52, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x70, - 0x65, 0x6e, 0x61, 0x69, 0x12, 0x5b, 0x0a, 0x09, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, - 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, + 0x69, 0x63, 0x48, 0x00, 0x52, 0x09, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x12, + 0x52, 0x0a, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x12, 0x71, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, + 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, + 0x6c, 0x65, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x43, 0x6f, 0x6d, 0x70, + 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x55, 0x0a, 0x07, 0x62, 0x65, 0x64, 0x72, 0x6f, 0x63, + 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x74, 0x68, 0x72, - 0x6f, 0x70, 0x69, 0x63, 0x48, 0x00, 0x52, 0x09, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, - 0x63, 0x12, 0x52, 0x0a, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x71, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x5f, - 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x42, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, - 0x69, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x55, 0x0a, 0x07, 0x62, 0x65, 0x64, 0x72, - 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 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, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x42, 0x65, 0x64, - 0x72, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x07, 0x62, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x1a, - 0x8a, 0x01, 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, - 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, - 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, - 0x79, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x8d, 0x01, 0x0a, - 0x09, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, - 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, - 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, - 0x79, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x8a, 0x01, 0x0a, - 0x06, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, - 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, - 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, - 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, - 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x19, - 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0xaf, 0x01, 0x0a, 0x10, 0x4f, 0x70, - 0x65, 0x6e, 0x41, 0x49, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x65, - 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, - 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, - 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, - 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x13, 0xc8, - 0x01, 0x01, 0x72, 0x0e, 0x32, 0x0c, 0x5e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x2f, 0x2f, - 0x2e, 0x2a, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0xde, 0x02, 0x0a, 0x07, - 0x42, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x12, 0x3d, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x1f, 0xc8, - 0x01, 0x01, 0x72, 0x1a, 0x32, 0x18, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x7b, 0x32, 0x7d, 0x28, - 0x2d, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x2b, 0x2d, 0x5c, 0x64, 0x2b, 0x29, 0x3f, 0x24, 0x52, 0x06, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x84, 0x01, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, - 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, + 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x42, 0x65, 0x64, 0x72, 0x6f, + 0x63, 0x6b, 0x48, 0x00, 0x52, 0x07, 0x62, 0x65, 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x1a, 0x8a, 0x01, + 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, - 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x14, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, - 0x65, 0x79, 0x49, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x8c, 0x01, - 0x0a, 0x1c, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, - 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, - 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, - 0x7d, 0x24, 0x52, 0x18, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x42, 0x11, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x1a, - 0xae, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x74, 0x0a, 0x0d, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x4f, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x49, 0xc8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, - 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, - 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, - 0x7d, 0x24, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x1a, 0x51, 0x0a, 0x09, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, - 0x11, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x67, - 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, - 0x80, 0x02, 0x52, 0x0f, 0x74, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x67, 0x65, 0x78, 0x1a, 0xce, 0x03, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x12, 0xbe, 0x01, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, - 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x98, 0x01, 0x92, 0x41, 0x87, 0x01, 0x32, - 0x84, 0x01, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, - 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x75, 0x62, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, - 0x65, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, - 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x69, 0x74, 0x73, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x20, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, - 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, - 0x74, 0x12, 0x62, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, - 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x64, 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6c, 0x6d, 0x5f, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, - 0x6c, 0x6d, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0xdb, 0x04, 0x0a, 0x09, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, - 0x03, 0x18, 0x80, 0x04, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x35, 0x0a, - 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, - 0x80, 0x04, 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x57, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x50, 0x0a, - 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, - 0x64, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x1a, - 0x54, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x0c, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x04, - 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0xf0, 0x01, 0x0a, 0x05, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, - 0x1d, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe0, 0x41, 0x02, - 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x18, 0x40, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, - 0x02, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, - 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x04, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x7d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, - 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, - 0x47, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, - 0x50, 0x50, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x3a, 0x41, 0xea, 0x41, 0x3e, 0x0a, 0x27, 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, 0x2f, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x62, - 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x62, 0x6f, 0x74, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x62, 0x6f, 0x74, - 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x79, 0x0a, - 0x12, 0x62, 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, - 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, + 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, + 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x8d, 0x01, 0x0a, 0x09, 0x41, + 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, - 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x0f, 0x62, 0x6f, 0x74, 0x41, 0x70, 0x70, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x22, 0xb5, 0x0c, 0x0a, 0x0d, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x24, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x1e, 0xc8, 0x01, 0x01, 0x72, 0x19, 0x10, 0x03, 0x18, - 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, - 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, - 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x82, 0x01, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5d, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, - 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, - 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x2e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, - 0x01, 0x01, 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, - 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x58, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, - 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, - 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x05, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 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, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x7b, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2d, 0xba, - 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, - 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, - 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 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, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, - 0x30, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xba, 0x48, 0x06, 0x1a, 0x04, 0x18, 0x64, - 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x6b, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 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, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, - 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3d, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, 0x01, 0x1a, 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, - 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, - 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, - 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, - 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, + 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, + 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x8a, 0x01, 0x0a, 0x06, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x65, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, + 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, + 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, + 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0xaf, 0x01, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x6e, + 0x41, 0x49, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x65, 0x0a, 0x07, + 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, + 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x06, 0x61, 0x70, 0x69, + 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x13, 0xc8, 0x01, 0x01, + 0x72, 0x0e, 0x32, 0x0c, 0x5e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x2f, 0x2f, 0x2e, 0x2a, + 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0xde, 0x02, 0x0a, 0x07, 0x42, 0x65, + 0x64, 0x72, 0x6f, 0x63, 0x6b, 0x12, 0x3d, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x1f, 0xc8, 0x01, 0x01, + 0x72, 0x1a, 0x32, 0x18, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x7b, 0x32, 0x7d, 0x28, 0x2d, 0x5b, + 0x61, 0x2d, 0x7a, 0x5d, 0x2b, 0x2d, 0x5c, 0x64, 0x2b, 0x29, 0x3f, 0x24, 0x52, 0x06, 0x72, 0x65, + 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x84, 0x01, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, + 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, + 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, + 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, + 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, 0x14, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, + 0x49, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x8c, 0x01, 0x0a, 0x1c, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, + 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, + 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, + 0x52, 0x18, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, + 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x42, 0x11, 0x0a, 0x08, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x1a, 0xae, 0x01, + 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x26, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x74, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x4f, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x49, 0xc8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, + 0x24, 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, + 0x5d, 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, + 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x51, + 0x0a, 0x09, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x11, 0x74, + 0x6f, 0x6f, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, + 0x52, 0x0f, 0x74, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x1a, 0xce, 0x03, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x12, 0xbe, + 0x01, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x98, 0x01, 0x92, 0x41, 0x87, 0x01, 0x32, 0x84, 0x01, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, + 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x2e, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, + 0x68, 0x65, 0x72, 0x69, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x66, 0x72, + 0x6f, 0x6d, 0x20, 0x69, 0x74, 0x73, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, + 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, + 0x62, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, + 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, + 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, + 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, - 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, - 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, - 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, - 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, 0x72, 0x65, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, + 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x64, 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x10, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6c, 0x6d, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6c, 0x6d, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0xdb, 0x04, 0x0a, 0x09, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, + 0x80, 0x04, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x11, 0x64, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x04, + 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, + 0x72, 0x6c, 0x12, 0x57, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x06, 0x73, + 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x2f, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, 0x5f, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x22, 0x61, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 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, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, - 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, - 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, - 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x59, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, - 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x22, 0x8e, 0x06, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x72, 0x65, 0x64, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, + 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x06, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x1a, 0x54, 0x0a, + 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x04, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x1a, 0xf0, 0x01, 0x0a, 0x05, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xe0, 0x41, 0x02, 0xba, 0x48, + 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x18, 0x40, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xba, + 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x30, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, + 0x72, 0x03, 0x18, 0x80, 0x04, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x7d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x12, 0x0a, + 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, + 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, + 0x45, 0x44, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x05, 0x3a, 0x41, 0xea, 0x41, 0x3e, 0x0a, 0x27, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0xa7, - 0x01, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x42, 0x89, 0x01, 0x92, 0x41, 0x74, 0x32, 0x60, 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, 0x35, 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, - 0x00, 0x59, 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xbf, 0xba, 0x48, 0x0f, 0x1a, - 0x0d, 0x18, 0x64, 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0xd8, 0x03, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0x87, 0x01, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x62, 0x92, 0x41, 0x40, 0x32, - 0x3e, 0x41, 0x6e, 0x79, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, - 0x48, 0x1c, 0xd8, 0x01, 0x01, 0x72, 0x17, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, - 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0c, - 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xc9, 0x01, 0x0a, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x6e, 0x92, 0x41, 0x3e, 0x32, 0x3c, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6c, - 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, - 0x61, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, - 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, - 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, - 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x63, - 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x61, - 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, + 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, + 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x65, 0x61, + 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, + 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x62, 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x41, 0x70, 0x70, 0x49, + 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x62, 0x6f, 0x74, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x54, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x79, 0x0a, 0x12, 0x62, 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, + 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, + 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, + 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, + 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, + 0x0f, 0x62, 0x6f, 0x74, 0x41, 0x70, 0x70, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, + 0x22, 0xb5, 0x0c, 0x0a, 0x0d, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x1e, + 0xc8, 0x01, 0x01, 0x72, 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, + 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x5d, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x49, + 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, + 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, + 0x2e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x58, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, - 0x74, 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, 0x8c, 0x0c, 0x0a, 0x0d, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0c, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1e, 0xba, 0x48, 0x1b, 0x72, 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, 0x32, 0x12, - 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, - 0x2b, 0x24, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x0d, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x57, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, - 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, - 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x64, 0x2e, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x4d, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x72, 0x65, + 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, + 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5f, 0x0a, 0x0b, + 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x7b, 0x0a, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, - 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, + 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, + 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, + 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x63, - 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, - 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x7b, 0x0a, 0x04, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, - 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, - 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, - 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x65, 0x64, 0x70, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, + 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x09, 0xba, 0x48, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, + 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x0f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x37, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x09, 0xe0, 0x41, 0x02, + 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 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, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xba, 0x48, 0x06, - 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, - 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 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, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, 0x01, - 0x1a, 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, 0x62, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, - 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0c, 0x74, - 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, + 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, 0x01, 0x1a, + 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, 0x62, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, + 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0c, 0x74, 0x65, + 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, + 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, + 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, + 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, 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, 0x2f, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, + 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x61, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x49, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, 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, 0x2f, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, - 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xd9, 0x01, 0x0a, 0x14, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, - 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x54, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, - 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, - 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, - 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, - 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x13, 0x53, 0x74, - 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, + 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x15, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, + 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x59, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x8e, 0x06, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x53, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3b, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0xa7, 0x01, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x89, 0x01, 0x92, 0x41, 0x74, + 0x32, 0x60, 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, 0x35, 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, 0x00, 0x59, 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0xbf, 0xba, 0x48, 0x0f, 0x1a, 0x0d, 0x18, 0x64, 0x28, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, + 0xd8, 0x03, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x87, 0x01, 0x0a, 0x0d, 0x6e, + 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x62, 0x92, 0x41, 0x40, 0x32, 0x3e, 0x41, 0x6e, 0x79, 0x20, 0x41, 0x49, 0x20, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, 0x48, 0x1c, 0xd8, 0x01, 0x01, 0x72, 0x17, 0x18, + 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, + 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x45, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, - 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x45, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, - 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, - 0x14, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x32, 0xa4, 0x14, 0x0a, 0x0e, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc2, 0x02, - 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x6e, 0x92, 0x41, 0x3e, 0x32, + 0x3c, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x61, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, 0x48, 0x2a, + 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, + 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, + 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, + 0x0d, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, + 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, - 0x01, 0x92, 0x41, 0x69, 0x12, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, - 0x6e, 0x65, 0x77, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, - 0x03, 0x32, 0x30, 0x31, 0x12, 0x37, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, - 0x2c, 0x0a, 0x2a, 0x1a, 0x28, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x08, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x8c, 0x0c, 0x0a, 0x0d, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xba, 0x48, 0x1b, 0x72, + 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, + 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, + 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x57, 0x92, 0x41, 0x4d, 0x32, + 0x4b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x2e, 0xba, 0x48, 0x04, 0x72, + 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x12, 0x4d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, - 0x24, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x18, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1f, 0x3a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x2f, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0xe4, 0x02, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 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, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x12, 0x1e, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 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, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x01, 0x92, 0x41, 0x8f, - 0x01, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, - 0x18, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, - 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, - 0x12, 0x32, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, - 0x6f, 0x74, 0x20, 0x46, 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, - 0xda, 0xbf, 0x07, 0x2d, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x15, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x65, - 0x74, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, - 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xfc, 0x02, 0x0a, 0x0c, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfe, 0x01, 0x92, 0x41, 0x92, 0x01, 0x12, 0x0e, - 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x38, - 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x3a, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x4a, 0x46, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, - 0x3f, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x39, 0x0a, 0x37, 0x1a, 0x35, 0x2e, 0x72, 0x65, 0x64, 0x70, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x73, 0x12, 0x7b, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, + 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, + 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, + 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4b, + 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 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, 0x2e, 0x50, 0x69, + 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0e, 0x6d, + 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x09, 0xba, 0x48, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x0d, + 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, + 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x7d, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3d, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, 0x01, 0x1a, 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, + 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, + 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, + 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x12, 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, + 0x61, 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0xe2, 0xbf, 0x07, 0x41, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x61, - 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x07, 0x65, 0x61, 0x63, 0x68, 0x2e, 0x69, 0x64, 0x1a, 0x16, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, - 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xe0, 0x02, 0x0a, 0x0d, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x2e, 0x72, 0x65, 0x64, + 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, + 0x74, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, + 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, + 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x01, 0x92, 0x41, 0x76, 0x12, - 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x1a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, - 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, - 0x30, 0x12, 0x32, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 0x28, 0x2e, 0x72, 0x65, + 0x61, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, 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, 0x2f, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, + 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x22, 0xd9, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, + 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x12, 0x54, 0x0a, 0x08, 0x61, 0x69, + 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 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, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, 0xe0, 0x41, + 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5c, 0x0a, + 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x14, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, + 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x0a, 0x12, + 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, + 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, - 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, - 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x1a, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xc6, 0x02, 0x0a, 0x0d, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x92, - 0x41, 0x66, 0x12, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x1a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x41, - 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x12, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, - 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x00, 0x4a, 0x2a, 0x0a, 0x03, - 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, - 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xf5, 0x02, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x12, 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, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x72, 0x65, 0x64, 0x70, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x45, + 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, + 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, + 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, + 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x32, 0xa4, 0x14, 0x0a, 0x0e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc2, 0x02, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, 0x01, 0x92, 0x41, 0x69, 0x12, 0x0f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x16, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x49, 0x20, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x31, 0x12, 0x37, 0x0a, 0x07, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, 0x24, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x73, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, + 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, + 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x08, 0x61, 0x69, 0x5f, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, + 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xe4, 0x02, 0x0a, 0x0a, 0x47, + 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x53, 0x74, 0x6f, 0x70, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xfa, 0x01, 0x92, 0x41, 0x95, 0x01, 0x12, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x41, 0x49, 0x20, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x61, 0x20, 0x72, 0x75, - 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, - 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x37, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, - 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, - 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, - 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x1a, 0x1d, 0x2f, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x73, 0x74, 0x6f, 0x70, 0x12, 0xfb, 0x02, 0x0a, - 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x2e, + 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x01, 0x92, 0x41, 0x97, - 0x01, 0x12, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, - 0x32, 0x30, 0x30, 0x12, 0x37, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, + 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xec, 0x01, 0x92, 0x41, 0x8f, 0x01, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x41, + 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, + 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0xda, 0xbf, 0x07, 0x2d, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, - 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x1a, 0x1e, 0x2f, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x1a, 0x45, 0x92, 0x41, 0x42, 0x0a, - 0x09, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x41, 0x49, - 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, - 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x42, 0xbb, 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, 0x0c, 0x41, 0x69, 0x41, 0x67, 0x65, - 0x6e, 0x74, 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, + 0x69, 0x64, 0x1a, 0x15, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, + 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x12, 0xfc, 0x02, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 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, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xfe, 0x01, 0x92, 0x41, 0x92, 0x01, 0x12, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x38, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x3a, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, + 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2e, + 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0xe2, 0xbf, 0x07, 0x41, 0x0a, 0x12, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x2b, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x07, 0x65, 0x61, + 0x63, 0x68, 0x2e, 0x69, 0x64, 0x1a, 0x16, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x8a, 0xa6, 0x1d, + 0x04, 0x08, 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0xe0, 0x02, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 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, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xdf, 0x01, 0x92, 0x41, 0x76, 0x12, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, + 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x02, 0x4f, 0x4b, 0x12, + 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, + 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, + 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x7d, 0x12, 0xc6, 0x02, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x92, 0x41, 0x66, 0x12, 0x0f, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x13, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x4a, 0x12, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x12, 0x00, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, + 0x6f, 0x74, 0x20, 0x46, 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, + 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, + 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xf5, 0x02, 0x0a, + 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 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, 0x53, + 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 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, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfa, 0x01, 0x92, 0x41, 0x95, 0x01, 0x12, 0x0d, + 0x53, 0x74, 0x6f, 0x70, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x53, + 0x74, 0x6f, 0x70, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x49, + 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x37, + 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, + 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x1a, 0x1d, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, + 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, + 0x73, 0x74, 0x6f, 0x70, 0x12, 0xfb, 0x02, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 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, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xfd, 0x01, 0x92, 0x41, 0x97, 0x01, 0x12, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x37, 0x0a, 0x07, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, + 0x6f, 0x74, 0x20, 0x46, 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, + 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x20, 0x1a, 0x1e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, + 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x1a, 0x45, 0x92, 0x41, 0x42, 0x0a, 0x09, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x35, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x42, 0xbb, 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, 0x0c, 0x41, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 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 ( @@ -3270,6 +3284,7 @@ func file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_init() { if File_redpanda_api_dataplane_v1alpha3_ai_agent_proto != nil { return } + file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[0].OneofWrappers = []any{} file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_msgTypes[21].OneofWrappers = []any{ (*AIAgent_Provider_Openai)(nil), (*AIAgent_Provider_Anthropic_)(nil), diff --git a/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx index 5d104ca181..314b3f41f0 100644 --- a/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx +++ b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx @@ -57,22 +57,6 @@ const extractSecretName = (ref: string): string => { return match ? match[1] : ''; }; -// Agent URL format: https://.ai-agents..clusters.ign.rdpa.co -const getMessagingEndpointUrl = (agentUrl: string, agentId: string): string => { - try { - const url = new URL(agentUrl); - const hostParts = url.hostname.split('.'); - const aiAgentsIndex = hostParts.indexOf('ai-agents'); - if (aiAgentsIndex < 0 || aiAgentsIndex + 1 >= hostParts.length) { - return ''; - } - const clusterDomain = hostParts.slice(aiAgentsIndex + 1).join('.'); - return `https://msteams-bridge.${clusterDomain}/msteams/v1/${agentId}`; - } catch { - return ''; - } -}; - // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Integrations tab with edit/view mode conditionals export const AIAgentIntegrationsTab = () => { const { id } = routeApi.useParams(); @@ -158,8 +142,6 @@ export const AIAgentIntegrationsTab = () => { setEditedState(null); }; - const messagingEndpointUrl = agent.teamsBridge?.enabled && agent.url ? getMessagingEndpointUrl(agent.url, id) : ''; - return (
@@ -265,14 +247,14 @@ export const AIAgentIntegrationsTab = () => { )}
- {/* Messaging endpoint URL - shown when integration is saved and enabled */} - {Boolean(agent.teamsBridge?.enabled && messagingEndpointUrl) && ( + {/* Messaging endpoint URL - populated by the bridge controller */} + {Boolean(agent.teamsBridgeEndpoint) && (
Configure this URL as the messaging endpoint in your Azure Bot registration. - +
)} diff --git a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts index 1faccc2738..a814b3cff0 100644 --- a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts +++ b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts @@ -21,7 +21,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file redpanda/api/dataplane/v1alpha3/ai_agent.proto. */ export const file_redpanda_api_dataplane_v1alpha3_ai_agent: GenFile = /*@__PURE__*/ - fileDesc("Ci5yZWRwYW5kYS9hcGkvZGF0YXBsYW5lL3YxYWxwaGEzL2FpX2FnZW50LnByb3RvEh9yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzIpchCgdBSUFnZW50EicKAmlkGAEgASgJQhvgQQO6SBVyEzIRXltBLVphLXowLTktXy9dKyQSOgoMZGlzcGxheV9uYW1lGAIgASgJQiTgQQK6SB7IAQFyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAyABKAlCCLpIBXIDGIACEnQKDXN5c3RlbV9wcm9tcHQYBCABKAlCXZJBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQu4EECukgHyAEBcgIQChJOCghwcm92aWRlchgFIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlckIJ4EECukgDyAEBEh0KBW1vZGVsGAcgASgJQg7gQQK6SAjIAQFyAxiAARJNCgttY3Bfc2VydmVycxgIIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NY3BTZXJ2ZXJzRW50cnkS+AEKCXJlc291cmNlcxgJIAEoCzItLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjEuUGlwZWxpbmUuUmVzb3VyY2VzQrUBkkGxATKuAVRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIHJlc291cmNlcyBmb3IgdGhlIEFJIEFnZW50LiBEZXBlbmRpbmcgb24gdGhlIGJhY2tlbmQsIHRoZSByZXNvdXJjZXMgbWlnaHQgYmUgZ3VhcmFudGVlZCwgb3IgbWlnaHQgYmUgdHdlYWtlZCBiYXNlZCBvbiB0aGUgdXRpbGl6YXRpb24gb2YgdGhlIEFJIEFnZW50LhJvCgR0YWdzGAogAygLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlRhZ3NFbnRyeUItukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEkIKBXN0YXRlGAsgASgOMi4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN0YXRlQgPgQQMSEAoDdXJsGAwgASgJQgPgQQMSIQoObWF4X2l0ZXJhdGlvbnMYDSABKAVCCbpIBhoEGGQoARJbCg9zZXJ2aWNlX2FjY291bnQYDiABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnRCCeBBArpIA8gBARJsCglzdWJhZ2VudHMYDyADKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnRzRW50cnlCILpIHZoBGiIYchYQARhAMhBeW0EtWmEtejAtOV8tXSskEkcKB2dhdGV3YXkYECABKAsyNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuR2F0ZXdheUNvbmZpZxJGCgphZ2VudF9jYXJkGBEgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZBJJCgx0ZWFtc19icmlkZ2UYEiABKAsyMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRUZWFtc0JyaWRnZRplCg9NY3BTZXJ2ZXJzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Lk1DUFNlcnZlcjoCOAEaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaYwoOU3ViYWdlbnRzRW50cnkSCwoDa2V5GAEgASgJEkAKBXZhbHVlGAIgASgLMjEucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN1YmFnZW50OgI4ARryCQoIUHJvdmlkZXISSgoGb3BlbmFpGAEgASgLMjgucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlByb3ZpZGVyLk9wZW5BSUgAElAKCWFudGhyb3BpYxgCIAEoCzI7LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5BbnRocm9waWNIABJKCgZnb29nbGUYAyABKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuR29vZ2xlSAASXwoRb3BlbmFpX2NvbXBhdGlibGUYBCABKAsyQi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuT3BlbkFJQ29tcGF0aWJsZUgAEkwKB2JlZHJvY2sYBSABKAsyOS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuQmVkcm9ja0gAGnkKBk9wZW5BSRJdCgdhcGlfa2V5GAEgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEhAKCGJhc2VfdXJsGAIgASgJGnwKCUFudGhyb3BpYxJdCgdhcGlfa2V5GAEgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEhAKCGJhc2VfdXJsGAIgASgJGnkKBkdvb2dsZRJdCgdhcGlfa2V5GAEgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEhAKCGJhc2VfdXJsGAIgASgJGp4BChBPcGVuQUlDb21wYXRpYmxlEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSKwoIYmFzZV91cmwYAiABKAlCGeBBArpIE8gBAXIOMgxeaHR0cHM/Oi8vLioapAIKB0JlZHJvY2sSNQoGcmVnaW9uGAEgASgJQiXgQQK6SB/IAQFyGjIYXlthLXpdezJ9KC1bYS16XSstXGQrKT8kEm4KGGFjY2Vzc19rZXlfaWRfc2VjcmV0X3JlZhgCIAEoCUJMukhJ2AEBckQyQl5cJFx7c2VjcmV0c1wuW0EtWmEtel9dW0EtWmEtejAtOV9dKihcLltBLVphLXpfXVtBLVphLXowLTlfXSopP1x9JBJyChxzZWNyZXRfYWNjZXNzX2tleV9zZWNyZXRfcmVmGAMgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kQhEKCHByb3ZpZGVyEgW6SAIIARqWAQoOU2VydmljZUFjY291bnQSHAoJY2xpZW50X2lkGAEgASgJQgngQQK6SAPIAQESZgoNY2xpZW50X3NlY3JldBgCIAEoCUJP4EECukhJyAEBckQyQl5cJFx7c2VjcmV0c1wuW0EtWmEtel9dW0EtWmEtejAtOV9dKihcLltBLVphLXpfXVtBLVphLXowLTlfXSopP1x9JBo8CglNQ1BTZXJ2ZXISCgoCaWQYASABKAkSIwoRdG9vbF9maWx0ZXJfcmVnZXgYAiABKAlCCLpIBXIDGIACGpsDCghTdWJhZ2VudBKwAQoNc3lzdGVtX3Byb21wdBgBIAEoCUKYAZJBhwEyhAFTeXN0ZW0gaW5zdHJ1Y3Rpb25zIHRoYXQgZGVmaW5lIGhvdyB0aGlzIHN1YmFnZW50IHNob3VsZCBiZWhhdmUuIFRoZSBzdWJhZ2VudCBpbmhlcml0cyB0aGUgcHJvdmlkZXIgYW5kIG1vZGVsIGZyb20gaXRzIHBhcmVudCBhZ2VudC7gQQK6SAfIAQFyAhAKElYKC21jcF9zZXJ2ZXJzGAIgAygLMkEucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN1YmFnZW50Lk1jcFNlcnZlcnNFbnRyeRIdCgtkZXNjcmlwdGlvbhgDIAEoCUIIukgFcgMYgAIaZQoPTWNwU2VydmVyc0VudHJ5EgsKA2tleRgBIAEoCRJBCgV2YWx1ZRgCIAEoCzIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NQ1BTZXJ2ZXI6AjgBGkUKDUdhdGV3YXlDb25maWcSHgoSdmlydHVhbF9nYXRld2F5X2lkGAEgASgJQgIYARIUCgxsbG1fcHJvdmlkZXIYAiABKAka2wMKCUFnZW50Q2FyZBIaCghpY29uX3VybBgBIAEoCUIIukgFcgMYgAQSIwoRZG9jdW1lbnRhdGlvbl91cmwYAiABKAlCCLpIBXIDGIAEEk0KCHByb3ZpZGVyGAMgASgLMjsucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZC5Qcm92aWRlchJICgZza2lsbHMYBCADKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkLlNraWxsGkEKCFByb3ZpZGVyEh4KDG9yZ2FuaXphdGlvbhgBIAEoCUIIukgFcgMYgAESFQoDdXJsGAIgASgJQgi6SAVyAxiABBqwAQoFU2tpbGwSGQoCaWQYASABKAlCDeBBArpIB8gBAXICGEASHAoEbmFtZRgCIAEoCUIO4EECukgIyAEBcgMYgAESIwoLZGVzY3JpcHRpb24YAyABKAlCDuBBArpICMgBAXIDGIAEEgwKBHRhZ3MYBCADKAkSEAoIZXhhbXBsZXMYBSADKAkSEwoLaW5wdXRfbW9kZXMYBiADKAkSFAoMb3V0cHV0X21vZGVzGAcgAygJIn0KBVN0YXRlEhUKEVNUQVRFX1VOU1BFQ0lGSUVEEAASEgoOU1RBVEVfU1RBUlRJTkcQARIRCg1TVEFURV9SVU5OSU5HEAISEgoOU1RBVEVfU1RPUFBJTkcQAxIRCg1TVEFURV9TVE9QUEVEEAQSDwoLU1RBVEVfRVJST1IQBTpB6kE+CidyZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzL0FJQWdlbnQqCWFpX2FnZW50czIIYWlfYWdlbnQiugEKEkFJQWdlbnRUZWFtc0JyaWRnZRIPCgdlbmFibGVkGAEgASgIEhIKCmJvdF9hcHBfaWQYAiABKAkSFQoNYm90X3RlbmFudF9pZBgDIAEoCRJoChJib3RfYXBwX3NlY3JldF9yZWYYBCABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQi7woKDUFJQWdlbnRDcmVhdGUSOgoMZGlzcGxheV9uYW1lGAEgASgJQiTgQQK6SB7IAQFyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAiABKAlCCLpIBXIDGIACEnQKDXN5c3RlbV9wcm9tcHQYAyABKAlCXZJBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQu4EECukgHyAEBcgIQChJOCghwcm92aWRlchgEIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlckIJ4EECukgDyAEBEh0KBW1vZGVsGAYgASgJQg7gQQK6SAjIAQFyAxiAARJTCgttY3Bfc2VydmVycxgHIAMoCzI+LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZS5NY3BTZXJ2ZXJzRW50cnkSdQoEdGFncxgIIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZS5UYWdzRW50cnlCLbpIKpoBJxAQKiNyITIfXihbXHB7TH1ccHtafVxwe059Xy46Lz0rXC1AXSopJBJACglyZXNvdXJjZXMYCSABKAsyLS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxLlBpcGVsaW5lLlJlc291cmNlcxIhCg5tYXhfaXRlcmF0aW9ucxgKIAEoBUIJukgGGgQYZCgBElsKD3NlcnZpY2VfYWNjb3VudBgLIAEoCzI3LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5TZXJ2aWNlQWNjb3VudEIJ4EECukgDyAEBEnIKCXN1YmFnZW50cxgMIAMoCzI9LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZS5TdWJhZ2VudHNFbnRyeUIgukgdmgEaIhhyFhABGEAyEF5bQS1aYS16MC05Xy1dKyQSRwoHZ2F0ZXdheRgNIAEoCzI2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5HYXRld2F5Q29uZmlnEkYKCmFnZW50X2NhcmQYDiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkEkkKDHRlYW1zX2JyaWRnZRgPIAEoCzIzLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFRlYW1zQnJpZGdlGmUKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuTUNQU2VydmVyOgI4ARorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpjCg5TdWJhZ2VudHNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQ6AjgBOkfqQUQKLXJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMvQUlBZ2VudENyZWF0ZSoJYWlfYWdlbnRzMghhaV9hZ2VudCJYChRDcmVhdGVBSUFnZW50UmVxdWVzdBJACghhaV9hZ2VudBgBIAEoCzIuLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudENyZWF0ZSJTChVDcmVhdGVBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQiPwoRR2V0QUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCJQChJHZXRBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQiuQUKE0xpc3RBSUFnZW50c1JlcXVlc3QSSwoGZmlsdGVyGAEgASgLMjsucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5MaXN0QUlBZ2VudHNSZXF1ZXN0LkZpbHRlchKdAQoJcGFnZV9zaXplGAIgASgFQokBkkF0MmBMaW1pdCB0aGUgcGFnaW5hdGVkIHJlc3BvbnNlIHRvIGEgbnVtYmVyIG9mIGl0ZW1zLiBEZWZhdWx0cyB0byA1MC4gVXNlIC0xIHRvIGRpc2FibGUgcGFnaW5hdGlvbi5ZAAAAAAAAWUBpAAAAAAAA8L+6SA8aDRhkKP///////////wESEgoKcGFnZV90b2tlbhgDIAEoCRqgAwoGRmlsdGVyEnkKDW5hbWVfY29udGFpbnMYASABKAlCYpJBQDI+QW55IEFJIGFnZW50cyB0aGF0IHBhcnRpYWxseSBtYXRjaCB0aGlzIG5hbWUgd2lsbCBiZSByZXR1cm5lZC66SBzYAQFyFxiAATISXltBLVphLXowLTktXyAvXSskEsMBCgR0YWdzGAIgAygLMkUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5MaXN0QUlBZ2VudHNSZXF1ZXN0LkZpbHRlci5UYWdzRW50cnlCbpJBPjI8QUkgYWdlbnRzIHRoYXQgbWF0Y2ggYWxsIHRoZSBwcm92aWRlZCB0YWdzIHdpbGwgYmUgcmV0dXJuZWQuukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEhEKCXNlY3JldF9pZBgDIAEoCRIVCg1tY3Bfc2VydmVyX2lkGAQgASgJGisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImwKFExpc3RBSUFnZW50c1Jlc3BvbnNlEjsKCWFpX2FnZW50cxgBIAMoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudBIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkixwoKDUFJQWdlbnRVcGRhdGUSNAoMZGlzcGxheV9uYW1lGAEgASgJQh66SBtyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAiABKAlCCLpIBXIDGIACEm4KDXN5c3RlbV9wcm9tcHQYAyABKAlCV5JBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQuukgEcgIQChJDCghwcm92aWRlchgEIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlchIXCgVtb2RlbBgGIAEoCUIIukgFcgMYgAESUwoLbWNwX3NlcnZlcnMYByADKAsyPi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRVcGRhdGUuTWNwU2VydmVyc0VudHJ5EnUKBHRhZ3MYCCADKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRVcGRhdGUuVGFnc0VudHJ5Qi26SCqaAScQECojciEyH14oW1xwe0x9XHB7Wn1ccHtOfV8uOi89K1wtQF0qKSQSQAoJcmVzb3VyY2VzGAkgASgLMi0ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MS5QaXBlbGluZS5SZXNvdXJjZXMSIQoObWF4X2l0ZXJhdGlvbnMYCiABKAVCCbpIBhoEGGQoARJQCg9zZXJ2aWNlX2FjY291bnQYCyABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnQScgoJc3ViYWdlbnRzGAwgAygLMj0ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlLlN1YmFnZW50c0VudHJ5QiC6SB2aARoiGHIWEAEYQDIQXltBLVphLXowLTlfLV0rJBJHCgdnYXRld2F5GA0gASgLMjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkdhdGV3YXlDb25maWcSRgoKYWdlbnRfY2FyZBgOIAEoCzIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5BZ2VudENhcmQSSQoMdGVhbXNfYnJpZGdlGA8gASgLMjMucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VGVhbXNCcmlkZ2UaZQoPTWNwU2VydmVyc0VudHJ5EgsKA2tleRgBIAEoCRJBCgV2YWx1ZRgCIAEoCzIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NQ1BTZXJ2ZXI6AjgBGisKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGmMKDlN1YmFnZW50c0VudHJ5EgsKA2tleRgBIAEoCRJACgV2YWx1ZRgCIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5TdWJhZ2VudDoCOAE6R+pBRAotcmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy9BSUFnZW50VXBkYXRlKglhaV9hZ2VudHMyCGFpX2FnZW50IsABChRVcGRhdGVBSUFnZW50UmVxdWVzdBIqCgJpZBgBIAEoCUIe4EECukgYyAEBchMyEV5bQS1aYS16MC05LV8vXSskEksKCGFpX2FnZW50GAIgASgLMi4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlQgngQQK6SAPIAQESLwoLdXBkYXRlX21hc2sYAyABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIlMKFVVwZGF0ZUFJQWdlbnRSZXNwb25zZRI6CghhaV9hZ2VudBgBIAEoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudCJCChREZWxldGVBSUFnZW50UmVxdWVzdBIqCgJpZBgBIAEoCUIe4EECukgYyAEBchMyEV5bQS1aYS16MC05LV8vXSskIhcKFURlbGV0ZUFJQWdlbnRSZXNwb25zZSJAChJTdG9wQUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCJRChNTdG9wQUlBZ2VudFJlc3BvbnNlEjoKCGFpX2FnZW50GAEgASgLMigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50IkEKE1N0YXJ0QUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCJSChRTdGFydEFJQWdlbnRSZXNwb25zZRI6CghhaV9hZ2VudBgBIAEoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudDKkFAoOQUlBZ2VudFNlcnZpY2USwgIKDUNyZWF0ZUFJQWdlbnQSNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkNyZWF0ZUFJQWdlbnRSZXF1ZXN0GjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5DcmVhdGVBSUFnZW50UmVzcG9uc2UiwQGSQWkSD0NyZWF0ZSBBSSBBZ2VudBoWQ3JlYXRlIGEgbmV3IEFJIGFnZW50Lko+CgMyMDESNwoHQ3JlYXRlZBIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnTavwckCghhaWFnZW50cxoYZGF0YXBsYW5lX2FpYWdlbnRfY3JlYXRliqYdBAgCEAiC0+STAh86CGFpX2FnZW50IhMvdjFhbHBoYTMvYWktYWdlbnRzEuQCCgpHZXRBSUFnZW50EjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5HZXRBSUFnZW50UmVxdWVzdBozLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuR2V0QUlBZ2VudFJlc3BvbnNlIuwBkkGPARIMR2V0IEFJIEFnZW50GhhHZXQgYSBzcGVjaWZpYyBBSSBhZ2VudC5KOQoDMjAwEjIKAk9LEiwKKhooLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudEoqCgM0MDQSIwoJTm90IEZvdW5kEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVz2r8HLQoIYWlhZ2VudHMSCnJlcXVlc3QuaWQaFWRhdGFwbGFuZV9haWFnZW50X2dldIqmHQQIARAIgtPkkwIaEhgvdjFhbHBoYTMvYWktYWdlbnRzL3tpZH0S/AIKDExpc3RBSUFnZW50cxI0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVxdWVzdBo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVzcG9uc2Ui/gGSQZIBEg5MaXN0IEFJIEFnZW50cxo4TGlzdCBBSSBhZ2VudHMuIE9wdGlvbmFsOiBmaWx0ZXIgYmFzZWQgb24gQUkgYWdlbnQgbmFtZS5KRgoDMjAwEj8KAk9LEjkKNxo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVzcG9uc2XivwdBChJyZXNwb25zZS5haV9hZ2VudHMSKwoIYWlhZ2VudHMSB2VhY2guaWQaFmRhdGFwbGFuZV9haWFnZW50X2xpc3SKph0ECAEQCILT5JMCFRITL3YxYWxwaGEzL2FpLWFnZW50cxLgAgoNVXBkYXRlQUlBZ2VudBI1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuVXBkYXRlQUlBZ2VudFJlcXVlc3QaNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlVwZGF0ZUFJQWdlbnRSZXNwb25zZSLfAZJBdhIPVXBkYXRlIEFJIEFnZW50GihVcGRhdGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gQUkgYWdlbnQuSjkKAzIwMBIyCgJPSxIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnTavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfdXBkYXRliqYdBAgCEAiC0+STAiQ6CGFpX2FnZW50GhgvdjFhbHBoYTMvYWktYWdlbnRzL3tpZH0SxgIKDURlbGV0ZUFJQWdlbnQSNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkRlbGV0ZUFJQWdlbnRSZXF1ZXN0GjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5EZWxldGVBSUFnZW50UmVzcG9uc2UixQGSQWYSD0RlbGV0ZSBBSSBBZ2VudBoTRGVsZXRlIGFuIEFJIGFnZW50LkoSCgMyMDQSCwoHRGVsZXRlZBIASioKAzQwNBIjCglOb3QgRm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXPavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfZGVsZXRliqYdBAgCEAiC0+STAhoqGC92MWFscGhhMy9haS1hZ2VudHMve2lkfRL1AgoLU3RvcEFJQWdlbnQSMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0b3BBSUFnZW50UmVxdWVzdBo0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuU3RvcEFJQWdlbnRSZXNwb25zZSL6AZJBlQESDVN0b3AgQUkgQWdlbnQaGFN0b3AgYSBydW5uaW5nIEFJIGFnZW50Lko+CgMyMDASNwoHU3RvcHBlZBIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRKKgoDNDA0EiMKCU5vdCBGb3VuZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c9q/BzAKCGFpYWdlbnRzEgpyZXF1ZXN0LmlkGhhkYXRhcGxhbmVfYWlhZ2VudF9kZWxldGWKph0ECAIQCILT5JMCHxodL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9OnN0b3AS+wIKDFN0YXJ0QUlBZ2VudBI0LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuU3RhcnRBSUFnZW50UmVxdWVzdBo1LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuU3RhcnRBSUFnZW50UmVzcG9uc2Ui/QGSQZcBEg5TdGFydCBBSSBBZ2VudBoZU3RhcnQgYSBzdG9wcGVkIEFJIGFnZW50Lko+CgMyMDASNwoHU3RhcnRlZBIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRKKgoDNDA0EiMKCU5vdCBGb3VuZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c9q/BzAKCGFpYWdlbnRzEgpyZXF1ZXN0LmlkGhhkYXRhcGxhbmVfYWlhZ2VudF9jcmVhdGWKph0ECAIQCILT5JMCIBoeL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9OnN0YXJ0GkWSQUIKCUFJIEFnZW50cxI1Q3JlYXRlIGFuZCBtYW5hZ2UgQUkgYWdlbnRzIGFuZCB0aGVpciBjb25maWd1cmF0aW9ucy5iBnByb3RvMw", [file_buf_validate_validate, file_google_api_annotations, file_google_api_field_behavior, file_google_api_resource, file_google_protobuf_field_mask, file_protoc_gen_openapiv2_options_annotations, file_redpanda_api_auth_v1_authorization, file_redpanda_api_common_v1_options, file_redpanda_api_dataplane_v1_pipeline]); + fileDesc("Ci5yZWRwYW5kYS9hcGkvZGF0YXBsYW5lL3YxYWxwaGEzL2FpX2FnZW50LnByb3RvEh9yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzItohCgdBSUFnZW50EicKAmlkGAEgASgJQhvgQQO6SBVyEzIRXltBLVphLXowLTktXy9dKyQSOgoMZGlzcGxheV9uYW1lGAIgASgJQiTgQQK6SB7IAQFyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAyABKAlCCLpIBXIDGIACEnQKDXN5c3RlbV9wcm9tcHQYBCABKAlCXZJBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQu4EECukgHyAEBcgIQChJOCghwcm92aWRlchgFIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlckIJ4EECukgDyAEBEh0KBW1vZGVsGAcgASgJQg7gQQK6SAjIAQFyAxiAARJNCgttY3Bfc2VydmVycxgIIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NY3BTZXJ2ZXJzRW50cnkS+AEKCXJlc291cmNlcxgJIAEoCzItLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjEuUGlwZWxpbmUuUmVzb3VyY2VzQrUBkkGxATKuAVRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIHJlc291cmNlcyBmb3IgdGhlIEFJIEFnZW50LiBEZXBlbmRpbmcgb24gdGhlIGJhY2tlbmQsIHRoZSByZXNvdXJjZXMgbWlnaHQgYmUgZ3VhcmFudGVlZCwgb3IgbWlnaHQgYmUgdHdlYWtlZCBiYXNlZCBvbiB0aGUgdXRpbGl6YXRpb24gb2YgdGhlIEFJIEFnZW50LhJvCgR0YWdzGAogAygLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlRhZ3NFbnRyeUItukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEkIKBXN0YXRlGAsgASgOMi4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN0YXRlQgPgQQMSEAoDdXJsGAwgASgJQgPgQQMSIQoObWF4X2l0ZXJhdGlvbnMYDSABKAVCCbpIBhoEGGQoARJbCg9zZXJ2aWNlX2FjY291bnQYDiABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnRCCeBBArpIA8gBARJsCglzdWJhZ2VudHMYDyADKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnRzRW50cnlCILpIHZoBGiIYchYQARhAMhBeW0EtWmEtejAtOV8tXSskEkcKB2dhdGV3YXkYECABKAsyNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuR2F0ZXdheUNvbmZpZxJGCgphZ2VudF9jYXJkGBEgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZBJJCgx0ZWFtc19icmlkZ2UYEiABKAsyMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRUZWFtc0JyaWRnZRInChV0ZWFtc19icmlkZ2VfZW5kcG9pbnQYEyABKAlCA+BBA0gAiAEBGmUKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuTUNQU2VydmVyOgI4ARorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpjCg5TdWJhZ2VudHNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQ6AjgBGvIJCghQcm92aWRlchJKCgZvcGVuYWkYASABKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuT3BlbkFJSAASUAoJYW50aHJvcGljGAIgASgLMjsucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlByb3ZpZGVyLkFudGhyb3BpY0gAEkoKBmdvb2dsZRgDIAEoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5Hb29nbGVIABJfChFvcGVuYWlfY29tcGF0aWJsZRgEIAEoCzJCLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5PcGVuQUlDb21wYXRpYmxlSAASTAoHYmVkcm9jaxgFIAEoCzI5LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5CZWRyb2NrSAAaeQoGT3BlbkFJEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSEAoIYmFzZV91cmwYAiABKAkafAoJQW50aHJvcGljEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSEAoIYmFzZV91cmwYAiABKAkaeQoGR29vZ2xlEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSEAoIYmFzZV91cmwYAiABKAkangEKEE9wZW5BSUNvbXBhdGlibGUSXQoHYXBpX2tleRgBIAEoCUJMukhJ2AEBckQyQl5cJFx7c2VjcmV0c1wuW0EtWmEtel9dW0EtWmEtejAtOV9dKihcLltBLVphLXpfXVtBLVphLXowLTlfXSopP1x9JBIrCghiYXNlX3VybBgCIAEoCUIZ4EECukgTyAEBcg4yDF5odHRwcz86Ly8uKhqkAgoHQmVkcm9jaxI1CgZyZWdpb24YASABKAlCJeBBArpIH8gBAXIaMhheW2Etel17Mn0oLVthLXpdKy1cZCspPyQSbgoYYWNjZXNzX2tleV9pZF9zZWNyZXRfcmVmGAIgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEnIKHHNlY3JldF9hY2Nlc3Nfa2V5X3NlY3JldF9yZWYYAyABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSRCEQoIcHJvdmlkZXISBbpIAggBGpYBCg5TZXJ2aWNlQWNjb3VudBIcCgljbGllbnRfaWQYASABKAlCCeBBArpIA8gBARJmCg1jbGllbnRfc2VjcmV0GAIgASgJQk/gQQK6SEnIAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kGjwKCU1DUFNlcnZlchIKCgJpZBgBIAEoCRIjChF0b29sX2ZpbHRlcl9yZWdleBgCIAEoCUIIukgFcgMYgAIamwMKCFN1YmFnZW50ErABCg1zeXN0ZW1fcHJvbXB0GAEgASgJQpgBkkGHATKEAVN5c3RlbSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgaG93IHRoaXMgc3ViYWdlbnQgc2hvdWxkIGJlaGF2ZS4gVGhlIHN1YmFnZW50IGluaGVyaXRzIHRoZSBwcm92aWRlciBhbmQgbW9kZWwgZnJvbSBpdHMgcGFyZW50IGFnZW50LuBBArpIB8gBAXICEAoSVgoLbWNwX3NlcnZlcnMYAiADKAsyQS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQuTWNwU2VydmVyc0VudHJ5Eh0KC2Rlc2NyaXB0aW9uGAMgASgJQgi6SAVyAxiAAhplCg9NY3BTZXJ2ZXJzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Lk1DUFNlcnZlcjoCOAEaRQoNR2F0ZXdheUNvbmZpZxIeChJ2aXJ0dWFsX2dhdGV3YXlfaWQYASABKAlCAhgBEhQKDGxsbV9wcm92aWRlchgCIAEoCRrbAwoJQWdlbnRDYXJkEhoKCGljb25fdXJsGAEgASgJQgi6SAVyAxiABBIjChFkb2N1bWVudGF0aW9uX3VybBgCIAEoCUIIukgFcgMYgAQSTQoIcHJvdmlkZXIYAyABKAsyOy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkLlByb3ZpZGVyEkgKBnNraWxscxgEIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5BZ2VudENhcmQuU2tpbGwaQQoIUHJvdmlkZXISHgoMb3JnYW5pemF0aW9uGAEgASgJQgi6SAVyAxiAARIVCgN1cmwYAiABKAlCCLpIBXIDGIAEGrABCgVTa2lsbBIZCgJpZBgBIAEoCUIN4EECukgHyAEBcgIYQBIcCgRuYW1lGAIgASgJQg7gQQK6SAjIAQFyAxiAARIjCgtkZXNjcmlwdGlvbhgDIAEoCUIO4EECukgIyAEBcgMYgAQSDAoEdGFncxgEIAMoCRIQCghleGFtcGxlcxgFIAMoCRITCgtpbnB1dF9tb2RlcxgGIAMoCRIUCgxvdXRwdXRfbW9kZXMYByADKAkifQoFU3RhdGUSFQoRU1RBVEVfVU5TUEVDSUZJRUQQABISCg5TVEFURV9TVEFSVElORxABEhEKDVNUQVRFX1JVTk5JTkcQAhISCg5TVEFURV9TVE9QUElORxADEhEKDVNUQVRFX1NUT1BQRUQQBBIPCgtTVEFURV9FUlJPUhAFOkHqQT4KJ3JlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMvQUlBZ2VudCoJYWlfYWdlbnRzMghhaV9hZ2VudEIYChZfdGVhbXNfYnJpZGdlX2VuZHBvaW50IroBChJBSUFnZW50VGVhbXNCcmlkZ2USDwoHZW5hYmxlZBgBIAEoCBISCgpib3RfYXBwX2lkGAIgASgJEhUKDWJvdF90ZW5hbnRfaWQYAyABKAkSaAoSYm90X2FwcF9zZWNyZXRfcmVmGAQgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kIu8KCg1BSUFnZW50Q3JlYXRlEjoKDGRpc3BsYXlfbmFtZRgBIAEoCUIk4EECukgeyAEBchkQAxiAATISXltBLVphLXowLTktXyAvXSskEh0KC2Rlc2NyaXB0aW9uGAIgASgJQgi6SAVyAxiAAhJ0Cg1zeXN0ZW1fcHJvbXB0GAMgASgJQl2SQU0yS1N5c3RlbSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgaG93IHRoZSBBSSBhZ2VudCBzaG91bGQgYmVoYXZlIGFuZCByZXNwb25kLuBBArpIB8gBAXICEAoSTgoIcHJvdmlkZXIYBCABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXJCCeBBArpIA8gBARIdCgVtb2RlbBgGIAEoCUIO4EECukgIyAEBcgMYgAESUwoLbWNwX3NlcnZlcnMYByADKAsyPi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUuTWNwU2VydmVyc0VudHJ5EnUKBHRhZ3MYCCADKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUuVGFnc0VudHJ5Qi26SCqaAScQECojciEyH14oW1xwe0x9XHB7Wn1ccHtOfV8uOi89K1wtQF0qKSQSQAoJcmVzb3VyY2VzGAkgASgLMi0ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MS5QaXBlbGluZS5SZXNvdXJjZXMSIQoObWF4X2l0ZXJhdGlvbnMYCiABKAVCCbpIBhoEGGQoARJbCg9zZXJ2aWNlX2FjY291bnQYCyABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnRCCeBBArpIA8gBARJyCglzdWJhZ2VudHMYDCADKAsyPS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUuU3ViYWdlbnRzRW50cnlCILpIHZoBGiIYchYQARhAMhBeW0EtWmEtejAtOV8tXSskEkcKB2dhdGV3YXkYDSABKAsyNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuR2F0ZXdheUNvbmZpZxJGCgphZ2VudF9jYXJkGA4gASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZBJJCgx0ZWFtc19icmlkZ2UYDyABKAsyMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRUZWFtc0JyaWRnZRplCg9NY3BTZXJ2ZXJzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Lk1DUFNlcnZlcjoCOAEaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaYwoOU3ViYWdlbnRzRW50cnkSCwoDa2V5GAEgASgJEkAKBXZhbHVlGAIgASgLMjEucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN1YmFnZW50OgI4ATpH6kFECi1yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzL0FJQWdlbnRDcmVhdGUqCWFpX2FnZW50czIIYWlfYWdlbnQiWAoUQ3JlYXRlQUlBZ2VudFJlcXVlc3QSQAoIYWlfYWdlbnQYASABKAsyLi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUiUwoVQ3JlYXRlQUlBZ2VudFJlc3BvbnNlEjoKCGFpX2FnZW50GAEgASgLMigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Ij8KEUdldEFJQWdlbnRSZXF1ZXN0EioKAmlkGAEgASgJQh7gQQK6SBjIAQFyEzIRXltBLVphLXowLTktXy9dKyQiUAoSR2V0QUlBZ2VudFJlc3BvbnNlEjoKCGFpX2FnZW50GAEgASgLMigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50IrkFChNMaXN0QUlBZ2VudHNSZXF1ZXN0EksKBmZpbHRlchgBIAEoCzI7LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVxdWVzdC5GaWx0ZXISnQEKCXBhZ2Vfc2l6ZRgCIAEoBUKJAZJBdDJgTGltaXQgdGhlIHBhZ2luYXRlZCByZXNwb25zZSB0byBhIG51bWJlciBvZiBpdGVtcy4gRGVmYXVsdHMgdG8gNTAuIFVzZSAtMSB0byBkaXNhYmxlIHBhZ2luYXRpb24uWQAAAAAAAFlAaQAAAAAAAPC/ukgPGg0YZCj///////////8BEhIKCnBhZ2VfdG9rZW4YAyABKAkaoAMKBkZpbHRlchJ5Cg1uYW1lX2NvbnRhaW5zGAEgASgJQmKSQUAyPkFueSBBSSBhZ2VudHMgdGhhdCBwYXJ0aWFsbHkgbWF0Y2ggdGhpcyBuYW1lIHdpbGwgYmUgcmV0dXJuZWQuukgc2AEBchcYgAEyEl5bQS1aYS16MC05LV8gL10rJBLDAQoEdGFncxgCIAMoCzJFLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVxdWVzdC5GaWx0ZXIuVGFnc0VudHJ5Qm6SQT4yPEFJIGFnZW50cyB0aGF0IG1hdGNoIGFsbCB0aGUgcHJvdmlkZWQgdGFncyB3aWxsIGJlIHJldHVybmVkLrpIKpoBJxAQKiNyITIfXihbXHB7TH1ccHtafVxwe059Xy46Lz0rXC1AXSopJBIRCglzZWNyZXRfaWQYAyABKAkSFQoNbWNwX3NlcnZlcl9pZBgEIAEoCRorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJsChRMaXN0QUlBZ2VudHNSZXNwb25zZRI7CglhaV9hZ2VudHMYASADKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJIscKCg1BSUFnZW50VXBkYXRlEjQKDGRpc3BsYXlfbmFtZRgBIAEoCUIeukgbchkQAxiAATISXltBLVphLXowLTktXyAvXSskEh0KC2Rlc2NyaXB0aW9uGAIgASgJQgi6SAVyAxiAAhJuCg1zeXN0ZW1fcHJvbXB0GAMgASgJQleSQU0yS1N5c3RlbSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgaG93IHRoZSBBSSBhZ2VudCBzaG91bGQgYmVoYXZlIGFuZCByZXNwb25kLrpIBHICEAoSQwoIcHJvdmlkZXIYBCABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXISFwoFbW9kZWwYBiABKAlCCLpIBXIDGIABElMKC21jcF9zZXJ2ZXJzGAcgAygLMj4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlLk1jcFNlcnZlcnNFbnRyeRJ1CgR0YWdzGAggAygLMjgucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlLlRhZ3NFbnRyeUItukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEkAKCXJlc291cmNlcxgJIAEoCzItLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjEuUGlwZWxpbmUuUmVzb3VyY2VzEiEKDm1heF9pdGVyYXRpb25zGAogASgFQgm6SAYaBBhkKAESUAoPc2VydmljZV9hY2NvdW50GAsgASgLMjcucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlNlcnZpY2VBY2NvdW50EnIKCXN1YmFnZW50cxgMIAMoCzI9LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFVwZGF0ZS5TdWJhZ2VudHNFbnRyeUIgukgdmgEaIhhyFhABGEAyEF5bQS1aYS16MC05Xy1dKyQSRwoHZ2F0ZXdheRgNIAEoCzI2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5HYXRld2F5Q29uZmlnEkYKCmFnZW50X2NhcmQYDiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkEkkKDHRlYW1zX2JyaWRnZRgPIAEoCzIzLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFRlYW1zQnJpZGdlGmUKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuTUNQU2VydmVyOgI4ARorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpjCg5TdWJhZ2VudHNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQ6AjgBOkfqQUQKLXJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMvQUlBZ2VudFVwZGF0ZSoJYWlfYWdlbnRzMghhaV9hZ2VudCLAAQoUVXBkYXRlQUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJBJLCghhaV9hZ2VudBgCIAEoCzIuLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFVwZGF0ZUIJ4EECukgDyAEBEi8KC3VwZGF0ZV9tYXNrGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayJTChVVcGRhdGVBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQiQgoURGVsZXRlQUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCIXChVEZWxldGVBSUFnZW50UmVzcG9uc2UiQAoSU3RvcEFJQWdlbnRSZXF1ZXN0EioKAmlkGAEgASgJQh7gQQK6SBjIAQFyEzIRXltBLVphLXowLTktXy9dKyQiUQoTU3RvcEFJQWdlbnRSZXNwb25zZRI6CghhaV9hZ2VudBgBIAEoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudCJBChNTdGFydEFJQWdlbnRSZXF1ZXN0EioKAmlkGAEgASgJQh7gQQK6SBjIAQFyEzIRXltBLVphLXowLTktXy9dKyQiUgoUU3RhcnRBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQypBQKDkFJQWdlbnRTZXJ2aWNlEsICCg1DcmVhdGVBSUFnZW50EjUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5DcmVhdGVBSUFnZW50UmVxdWVzdBo2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQ3JlYXRlQUlBZ2VudFJlc3BvbnNlIsEBkkFpEg9DcmVhdGUgQUkgQWdlbnQaFkNyZWF0ZSBhIG5ldyBBSSBhZ2VudC5KPgoDMjAxEjcKB0NyZWF0ZWQSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW502r8HJAoIYWlhZ2VudHMaGGRhdGFwbGFuZV9haWFnZW50X2NyZWF0ZYqmHQQIAhAIgtPkkwIfOghhaV9hZ2VudCITL3YxYWxwaGEzL2FpLWFnZW50cxLkAgoKR2V0QUlBZ2VudBIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuR2V0QUlBZ2VudFJlcXVlc3QaMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkdldEFJQWdlbnRSZXNwb25zZSLsAZJBjwESDEdldCBBSSBBZ2VudBoYR2V0IGEgc3BlY2lmaWMgQUkgYWdlbnQuSjkKAzIwMBIyCgJPSxIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRKKgoDNDA0EiMKCU5vdCBGb3VuZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c9q/By0KCGFpYWdlbnRzEgpyZXF1ZXN0LmlkGhVkYXRhcGxhbmVfYWlhZ2VudF9nZXSKph0ECAEQCILT5JMCGhIYL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9EvwCCgxMaXN0QUlBZ2VudHMSNC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RBSUFnZW50c1JlcXVlc3QaNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RBSUFnZW50c1Jlc3BvbnNlIv4BkkGSARIOTGlzdCBBSSBBZ2VudHMaOExpc3QgQUkgYWdlbnRzLiBPcHRpb25hbDogZmlsdGVyIGJhc2VkIG9uIEFJIGFnZW50IG5hbWUuSkYKAzIwMBI/CgJPSxI5CjcaNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RBSUFnZW50c1Jlc3BvbnNl4r8HQQoScmVzcG9uc2UuYWlfYWdlbnRzEisKCGFpYWdlbnRzEgdlYWNoLmlkGhZkYXRhcGxhbmVfYWlhZ2VudF9saXN0iqYdBAgBEAiC0+STAhUSEy92MWFscGhhMy9haS1hZ2VudHMS4AIKDVVwZGF0ZUFJQWdlbnQSNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlVwZGF0ZUFJQWdlbnRSZXF1ZXN0GjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5VcGRhdGVBSUFnZW50UmVzcG9uc2Ui3wGSQXYSD1VwZGF0ZSBBSSBBZ2VudBooVXBkYXRlIHRoZSBjb25maWd1cmF0aW9uIG9mIGFuIEFJIGFnZW50Lko5CgMyMDASMgoCT0sSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW502r8HMAoIYWlhZ2VudHMSCnJlcXVlc3QuaWQaGGRhdGFwbGFuZV9haWFnZW50X3VwZGF0ZYqmHQQIAhAIgtPkkwIkOghhaV9hZ2VudBoYL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9EsYCCg1EZWxldGVBSUFnZW50EjUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5EZWxldGVBSUFnZW50UmVxdWVzdBo2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuRGVsZXRlQUlBZ2VudFJlc3BvbnNlIsUBkkFmEg9EZWxldGUgQUkgQWdlbnQaE0RlbGV0ZSBhbiBBSSBhZ2VudC5KEgoDMjA0EgsKB0RlbGV0ZWQSAEoqCgM0MDQSIwoJTm90IEZvdW5kEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVz2r8HMAoIYWlhZ2VudHMSCnJlcXVlc3QuaWQaGGRhdGFwbGFuZV9haWFnZW50X2RlbGV0ZYqmHQQIAhAIgtPkkwIaKhgvdjFhbHBoYTMvYWktYWdlbnRzL3tpZH0S9QIKC1N0b3BBSUFnZW50EjMucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5TdG9wQUlBZ2VudFJlcXVlc3QaNC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0b3BBSUFnZW50UmVzcG9uc2Ui+gGSQZUBEg1TdG9wIEFJIEFnZW50GhhTdG9wIGEgcnVubmluZyBBSSBhZ2VudC5KPgoDMjAwEjcKB1N0b3BwZWQSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50SioKAzQwNBIjCglOb3QgRm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXPavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfZGVsZXRliqYdBAgCEAiC0+STAh8aHS92MWFscGhhMy9haS1hZ2VudHMve2lkfTpzdG9wEvsCCgxTdGFydEFJQWdlbnQSNC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0YXJ0QUlBZ2VudFJlcXVlc3QaNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0YXJ0QUlBZ2VudFJlc3BvbnNlIv0BkkGXARIOU3RhcnQgQUkgQWdlbnQaGVN0YXJ0IGEgc3RvcHBlZCBBSSBhZ2VudC5KPgoDMjAwEjcKB1N0YXJ0ZWQSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50SioKAzQwNBIjCglOb3QgRm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXPavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfY3JlYXRliqYdBAgCEAiC0+STAiAaHi92MWFscGhhMy9haS1hZ2VudHMve2lkfTpzdGFydBpFkkFCCglBSSBBZ2VudHMSNUNyZWF0ZSBhbmQgbWFuYWdlIEFJIGFnZW50cyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbnMuYgZwcm90bzM", [file_buf_validate_validate, file_google_api_annotations, file_google_api_field_behavior, file_google_api_resource, file_google_protobuf_field_mask, file_protoc_gen_openapiv2_options_annotations, file_redpanda_api_auth_v1_authorization, file_redpanda_api_common_v1_options, file_redpanda_api_dataplane_v1_pipeline]); /** * Defines the AI Agent resource. @@ -147,6 +147,13 @@ export type AIAgent = Message<"redpanda.api.dataplane.v1alpha3.AIAgent"> & { * @generated from field: redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge teams_bridge = 18; */ teamsBridge?: AIAgentTeamsBridge; + + /** + * Messaging endpoint URL for the Teams bridge, populated by the bridge controller. + * + * @generated from field: optional string teams_bridge_endpoint = 19; + */ + teamsBridgeEndpoint?: string; }; /** diff --git a/proto/gen/openapi/openapi.v1alpha3.json b/proto/gen/openapi/openapi.v1alpha3.json index 383e5841e8..c5d42ee1bf 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"},"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.","properties":{"bot_app_id":{"type":"string"},"bot_app_secret_ref":{"type":"string"},"bot_tenant_id":{"type":"string"},"enabled":{"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.","properties":{"bot_app_id":{"type":"string"},"bot_app_secret_ref":{"type":"string"},"bot_tenant_id":{"type":"string"},"enabled":{"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 diff --git a/proto/gen/openapi/openapi.v1alpha3.yaml b/proto/gen/openapi/openapi.v1alpha3.yaml index 87e41b0e56..55995fb3f8 100644 --- a/proto/gen/openapi/openapi.v1alpha3.yaml +++ b/proto/gen/openapi/openapi.v1alpha3.yaml @@ -54,6 +54,11 @@ components: 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 diff --git a/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto b/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto index 650b027426..f947ffb61d 100644 --- a/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto +++ b/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto @@ -111,6 +111,9 @@ message AIAgent { // Optional Microsoft Teams bridge configuration. AIAgentTeamsBridge teams_bridge = 18; + // Messaging endpoint URL for the Teams bridge, populated by the bridge controller. + optional string teams_bridge_endpoint = 19 [(google.api.field_behavior) = OUTPUT_ONLY]; + message Provider { message OpenAI { string api_key = 1 [ From f0595e0a8ffae8c477929342e10cf0da7b5b7342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Br=C3=BCderl?= Date: Thu, 7 May 2026 13:11:04 +0200 Subject: [PATCH 4/6] fix: use bare secret key for botAppSecretRef, not ${secrets.} wrapper The bridge expects a bare key (e.g. TEAMS_BOT_SECRET) that it resolves directly from the secret store. The ${secrets.} template pattern is for interpolation in deployment env vars, not for ref fields read by external services. Removes extractSecretName regex and SECRET_TEMPLATE_REGEX. Proto validation updated to accept bare UPPER_SNAKE_CASE keys. --- .../agents/details/ai-agent-integrations-tab.tsx | 11 ++--------- proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto | 2 +- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx index 314b3f41f0..933c66e2e6 100644 --- a/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx +++ b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx @@ -35,8 +35,6 @@ import { formatToastErrorMessageGRPC } from 'utils/toast.utils'; const routeApi = getRouteApi('/agents/$id/'); -const SECRET_TEMPLATE_REGEX = /^\$\{secrets\.([^}]+)\}$/; - const TEAMS_SECRET_TEXT = { dialogDescription: 'Create a new secret for your Microsoft Teams bot client secret.', secretNamePlaceholder: 'e.g., TEAMS_CLIENT_SECRET', @@ -52,11 +50,6 @@ type TeamsBridgeState = { botAppSecretName: string; }; -const extractSecretName = (ref: string): string => { - const match = ref.match(SECRET_TEMPLATE_REGEX); - return match ? match[1] : ''; -}; - // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Integrations tab with edit/view mode conditionals export const AIAgentIntegrationsTab = () => { const { id } = routeApi.useParams(); @@ -86,7 +79,7 @@ export const AIAgentIntegrationsTab = () => { enabled: agent.teamsBridge?.enabled ?? false, botAppId: agent.teamsBridge?.botAppId ?? '', botTenantId: agent.teamsBridge?.botTenantId ?? '', - botAppSecretName: extractSecretName(agent.teamsBridge?.botAppSecretRef ?? ''), + botAppSecretName: agent.teamsBridge?.botAppSecretRef ?? '', }; const updateField = (updates: Partial) => { @@ -98,7 +91,7 @@ export const AIAgentIntegrationsTab = () => { return; } - const secretRef = displayState.botAppSecretName ? `\${secrets.${displayState.botAppSecretName}}` : ''; + const secretRef = displayState.botAppSecretName || ''; try { await updateAIAgent( diff --git a/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto b/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto index f947ffb61d..96e97a3ba9 100644 --- a/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto +++ b/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto @@ -309,7 +309,7 @@ message AIAgentTeamsBridge { string bot_tenant_id = 3; string bot_app_secret_ref = 4 [ (buf.validate.field).ignore = IGNORE_IF_ZERO_VALUE, - (buf.validate.field).string.pattern = "^\\$\\{secrets\\.[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)?\\}$" + (buf.validate.field).string.pattern = "^[A-Za-z_][A-Za-z0-9_]*$" ]; } From c09a75258bbd2e95e383dde25e5e198180c668b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Br=C3=BCderl?= Date: Thu, 7 May 2026 13:58:16 +0200 Subject: [PATCH 5/6] proto: regenerate after validation pattern change bot_app_secret_ref validation changed from ${secrets.X} pattern to bare UPPER_SNAKE_CASE key. Regenerate pb.go and pb.ts. --- .../api/dataplane/v1alpha3/ai_agent.pb.go | 972 +++++++++--------- .../api/dataplane/v1alpha3/ai_agent_pb.ts | 2 +- 2 files changed, 486 insertions(+), 488 deletions(-) diff --git a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go index bb27d29cc3..ebaad6354b 100644 --- a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go +++ b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go @@ -2619,526 +2619,524 @@ var file_redpanda_api_dataplane_v1alpha3_ai_agent_proto_rawDesc = []byte{ 0x65, 0x6e, 0x74, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, + 0x6e, 0x74, 0x22, 0xc1, 0x01, 0x0a, 0x12, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x62, 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x62, 0x6f, 0x74, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x79, 0x0a, 0x12, 0x62, 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, + 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x12, 0x62, 0x6f, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x4c, 0xba, 0x48, 0x49, 0xd8, 0x01, 0x01, 0x72, 0x44, 0x32, 0x42, 0x5e, 0x5c, 0x24, - 0x5c, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, - 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, - 0x2a, 0x28, 0x5c, 0x2e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, - 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x5d, 0x2a, 0x29, 0x3f, 0x5c, 0x7d, 0x24, 0x52, - 0x0f, 0x62, 0x6f, 0x74, 0x41, 0x70, 0x70, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, - 0x22, 0xb5, 0x0c, 0x0a, 0x0d, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x1e, - 0xc8, 0x01, 0x01, 0x72, 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, - 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0b, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x5d, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x49, - 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, - 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, - 0x2e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x58, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, - 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, - 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5f, 0x0a, 0x0b, - 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3e, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, + 0x09, 0x42, 0x22, 0xba, 0x48, 0x1f, 0xd8, 0x01, 0x01, 0x72, 0x1a, 0x32, 0x18, 0x5e, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5f, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5f, 0x5d, 0x2a, 0x24, 0x52, 0x0f, 0x62, 0x6f, 0x74, 0x41, 0x70, 0x70, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x52, 0x65, 0x66, 0x22, 0xb5, 0x0c, 0x0a, 0x0d, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, + 0xe0, 0x41, 0x02, 0xba, 0x48, 0x1e, 0xc8, 0x01, 0x01, 0x72, 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, + 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, + 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x82, 0x01, + 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5d, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, + 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x2e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, + 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, + 0x70, 0x74, 0x12, 0x58, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, + 0x01, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x05, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xe0, 0x41, 0x02, + 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x73, 0x12, 0x7b, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x7b, 0x0a, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, - 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, - 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, - 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 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, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, - 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, - 0x09, 0xba, 0x48, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, - 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x0f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x37, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x09, 0xe0, 0x41, 0x02, - 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 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, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, 0x01, 0x1a, - 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, 0x62, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, - 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0c, 0x74, 0x65, - 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, - 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, - 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, 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, 0x2f, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, - 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x61, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x49, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x15, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, - 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x59, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x8e, 0x06, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x53, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x3b, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0xa7, 0x01, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x89, 0x01, 0x92, 0x41, 0x74, - 0x32, 0x60, 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, 0x35, 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, 0x00, 0x59, 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0xbf, 0xba, 0x48, 0x0f, 0x1a, 0x0d, 0x18, 0x64, 0x28, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, - 0xd8, 0x03, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x87, 0x01, 0x0a, 0x0d, 0x6e, - 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x62, 0x92, 0x41, 0x40, 0x32, 0x3e, 0x41, 0x6e, 0x79, 0x20, 0x41, 0x49, 0x20, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, - 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, 0x48, 0x1c, 0xd8, 0x01, 0x01, 0x72, 0x17, 0x18, - 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, - 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x45, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x6e, 0x92, 0x41, 0x3e, 0x32, - 0x3c, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x61, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, 0x48, 0x2a, + 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, - 0x0d, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, - 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x08, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x8c, 0x0c, 0x0a, 0x0d, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xba, 0x48, 0x1b, 0x72, - 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, - 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, - 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x57, 0x92, 0x41, 0x4d, 0x32, - 0x4b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, - 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x2e, 0xba, 0x48, 0x04, 0x72, - 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, - 0x74, 0x12, 0x4d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x1e, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x73, 0x12, 0x7b, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x38, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x64, + 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 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, 0x2e, + 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, + 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xba, 0x48, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, + 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x6b, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 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, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, 0x0a, 0x09, + 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3d, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, - 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, - 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, - 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4b, - 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 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, 0x2e, 0x50, 0x69, - 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0e, 0x6d, - 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x09, 0xba, 0x48, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x0d, - 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, - 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, + 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2e, + 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, + 0xba, 0x48, 0x1d, 0x9a, 0x01, 0x1a, 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, 0x32, 0x10, + 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, + 0x52, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x51, 0x0a, + 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, + 0x12, 0x56, 0x0a, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x7d, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3d, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, 0x01, 0x1a, 0x22, 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, - 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, - 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, - 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x12, 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, - 0x61, 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, - 0x74, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, - 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, - 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, 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, 0x2f, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, - 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x22, 0xd9, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, - 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x12, 0x54, 0x0a, 0x08, 0x61, 0x69, - 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, + 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x65, 0x61, + 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, 0xe0, 0x41, - 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, - 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5c, 0x0a, - 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, + 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x2d, 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, 0x2f, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x61, + 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x14, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, - 0x02, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x0a, 0x12, - 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, - 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, + 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x22, 0x5c, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, + 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, + 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x59, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, + 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, + 0x8e, 0x06, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 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, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0xa7, 0x01, 0x0a, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x89, 0x01, 0x92, 0x41, 0x74, 0x32, 0x60, 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, 0x35, 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, 0x00, 0x59, + 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xbf, 0xba, 0x48, 0x0f, 0x1a, 0x0d, 0x18, + 0x64, 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0xd8, 0x03, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x87, 0x01, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x62, 0x92, 0x41, 0x40, 0x32, 0x3e, 0x41, + 0x6e, 0x79, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0xba, 0x48, 0x1c, + 0xd8, 0x01, 0x01, 0x72, 0x17, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x0c, 0x6e, 0x61, + 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x04, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 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, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x6e, 0x92, 0x41, 0x3e, 0x32, 0x3c, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6c, 0x6c, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x61, 0x67, + 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x65, 0x64, 0x2e, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, + 0x1f, 0x5e, 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, + 0x7b, 0x4e, 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, + 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x63, 0x70, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x85, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x61, 0x69, 0x5f, + 0x61, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x8c, 0x0c, 0x0a, 0x0d, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1e, 0xba, 0x48, 0x1b, 0x72, 0x19, 0x10, 0x03, 0x18, 0x80, 0x01, 0x32, 0x12, 0x5e, 0x5b, + 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x20, 0x2f, 0x5d, 0x2b, 0x24, + 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x0d, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x57, 0x92, 0x41, 0x4d, 0x32, 0x4b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, + 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, + 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x64, 0x2e, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x0a, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x4d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, + 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x63, 0x70, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 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, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x45, - 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, - 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, - 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, - 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x32, 0xa4, 0x14, 0x0a, 0x0e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc2, 0x02, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x63, 0x70, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x63, 0x70, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x7b, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, + 0x2d, 0xba, 0x48, 0x2a, 0x9a, 0x01, 0x27, 0x10, 0x10, 0x2a, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, + 0x28, 0x5b, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, + 0x7d, 0x5f, 0x2e, 0x3a, 0x2f, 0x3d, 0x2b, 0x5c, 0x2d, 0x40, 0x5d, 0x2a, 0x29, 0x24, 0x52, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 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, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x12, 0x30, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xba, 0x48, 0x06, 0x1a, 0x04, + 0x18, 0x64, 0x28, 0x01, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 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, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x7d, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 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, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0xba, 0x48, 0x1d, 0x9a, 0x01, 0x1a, 0x22, + 0x18, 0x72, 0x16, 0x10, 0x01, 0x18, 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x73, 0x75, 0x62, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, + 0x63, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x09, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x56, 0x0a, 0x0c, 0x74, 0x65, 0x61, + 0x6d, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x1a, 0x71, 0x0a, 0x0f, 0x4d, 0x63, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x4d, 0x43, 0x50, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, + 0x0e, 0x53, 0x75, 0x62, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x47, + 0xea, 0x41, 0x44, 0x0a, 0x2d, 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, 0x2f, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x2a, 0x09, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x08, 0x61, + 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xd9, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, + 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x54, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2e, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x42, 0x09, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x07, 0x61, + 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, + 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, 0x01, 0x92, 0x41, 0x69, 0x12, 0x0f, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x16, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x49, 0x20, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x31, 0x12, 0x37, 0x0a, 0x07, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, 0x24, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x73, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, - 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, - 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x08, 0x61, 0x69, 0x5f, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, - 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xe4, 0x02, 0x0a, 0x0a, 0x47, - 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x47, 0x65, 0x74, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, + 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x22, 0x46, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, + 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, + 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x44, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, 0x01, 0x01, 0x72, + 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, + 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x69, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x22, 0x45, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xe0, 0x41, 0x02, 0xba, 0x48, 0x18, 0xc8, + 0x01, 0x01, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x2d, 0x5f, 0x2f, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x14, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x07, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x32, 0xa4, 0x14, 0x0a, 0x0e, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc2, 0x02, 0x0a, 0x0d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, - 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xec, 0x01, 0x92, 0x41, 0x8f, 0x01, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x41, - 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x2c, - 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, - 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x2d, 0x0a, 0x08, 0x61, 0x69, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x69, 0x64, 0x1a, 0x15, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, - 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x7d, 0x12, 0xfc, 0x02, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, - 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, - 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, 0x41, - 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xfe, 0x01, 0x92, 0x41, 0x92, 0x01, 0x12, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x38, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x3a, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, - 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2e, - 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, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, 0x01, 0x92, + 0x41, 0x69, 0x12, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x1a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, + 0x77, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, + 0x30, 0x31, 0x12, 0x37, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, + 0x2a, 0x1a, 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, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0xe2, 0xbf, 0x07, 0x41, 0x0a, 0x12, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x2b, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x07, 0x65, 0x61, - 0x63, 0x68, 0x2e, 0x69, 0x64, 0x1a, 0x16, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x8a, 0xa6, 0x1d, - 0x04, 0x08, 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, + 0x68, 0x61, 0x33, 0x2e, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, 0x24, 0x0a, + 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1f, 0x3a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0xe0, 0x02, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, - 0x6e, 0x74, 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, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xdf, 0x01, 0x92, 0x41, 0x76, 0x12, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x02, 0x4f, 0x4b, 0x12, - 0x2c, 0x0a, 0x2a, 0x1a, 0x28, 0x2e, 0x72, 0x65, 0x64, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x2e, 0x61, + 0x12, 0xe4, 0x02, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, - 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, - 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x12, 0xc6, 0x02, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x92, 0x41, 0x66, 0x12, 0x0f, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x13, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x4a, 0x12, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x12, 0x00, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, - 0x6f, 0x74, 0x20, 0x46, 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, - 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, - 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xf5, 0x02, 0x0a, - 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 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, 0x53, - 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 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, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfa, 0x01, 0x92, 0x41, 0x95, 0x01, 0x12, 0x0d, - 0x53, 0x74, 0x6f, 0x70, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x53, - 0x74, 0x6f, 0x70, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x49, - 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x37, - 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, - 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, - 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x01, 0x92, 0x41, 0x8f, 0x01, 0x12, + 0x0c, 0x47, 0x65, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x47, + 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x41, 0x49, + 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x32, + 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, + 0x20, 0x46, 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, 0xda, 0xbf, + 0x07, 0x2d, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x15, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x8a, + 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xfc, 0x02, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, + 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfe, 0x01, 0x92, 0x41, 0x92, 0x01, 0x12, 0x0e, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x38, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x3a, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x62, + 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 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, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0xe2, 0xbf, + 0x07, 0x41, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x61, 0x69, 0x5f, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x07, 0x65, 0x61, 0x63, 0x68, 0x2e, 0x69, 0x64, 0x1a, 0x16, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x01, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xe0, 0x02, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x01, 0x92, 0x41, 0x76, 0x12, 0x0f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x28, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x41, + 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x39, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, + 0x32, 0x0a, 0x02, 0x4f, 0x4b, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x1a, 0x1d, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, - 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, - 0x73, 0x74, 0x6f, 0x70, 0x12, 0xfb, 0x02, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, - 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x65, + 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x08, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x1a, + 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xc6, 0x02, 0x0a, 0x0d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x01, 0x92, 0x41, 0x66, + 0x12, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x1a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x41, 0x49, 0x20, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x12, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x0b, 0x0a, + 0x07, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x00, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, + 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, + 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, + 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x12, 0xf5, 0x02, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x12, 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, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x49, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfa, 0x01, + 0x92, 0x41, 0x95, 0x01, 0x12, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, + 0x03, 0x32, 0x30, 0x30, 0x12, 0x37, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, + 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, + 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, + 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, + 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x8a, 0xa6, 0x1d, + 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x1a, 0x1d, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x73, 0x74, 0x6f, 0x70, 0x12, 0xfb, 0x02, 0x0a, 0x0c, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xfd, 0x01, 0x92, 0x41, 0x97, 0x01, 0x12, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x37, 0x0a, 0x07, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, 0x1a, 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, 0x41, 0x49, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, - 0x6f, 0x74, 0x20, 0x46, 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, - 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x20, 0x1a, 0x1e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, - 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x1a, 0x45, 0x92, 0x41, 0x42, 0x0a, 0x09, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x35, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x42, 0xbb, 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, 0x0c, 0x41, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, + 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x01, 0x92, 0x41, 0x97, 0x01, 0x12, + 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x1a, + 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, + 0x20, 0x41, 0x49, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x3e, 0x0a, 0x03, 0x32, 0x30, + 0x30, 0x12, 0x37, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x2a, + 0x1a, 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, 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4a, 0x2a, 0x0a, 0x03, 0x34, 0x30, + 0x34, 0x12, 0x23, 0x0a, 0x09, 0x4e, 0x6f, 0x74, 0x20, 0x46, 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, 0xda, 0xbf, 0x07, 0x30, 0x0a, 0x08, 0x61, 0x69, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x69, 0x64, + 0x1a, 0x18, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x61, 0x69, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x8a, 0xa6, 0x1d, 0x04, 0x08, 0x02, + 0x10, 0x08, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x1a, 0x1e, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x33, 0x2f, 0x61, 0x69, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x1a, 0x45, 0x92, 0x41, 0x42, 0x0a, 0x09, 0x41, + 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x41, 0x49, 0x20, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x42, + 0xbb, 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, 0x0c, 0x41, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, + 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 ( diff --git a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts index a814b3cff0..bd5238c027 100644 --- a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts +++ b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts @@ -21,7 +21,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file redpanda/api/dataplane/v1alpha3/ai_agent.proto. */ export const file_redpanda_api_dataplane_v1alpha3_ai_agent: GenFile = /*@__PURE__*/ - fileDesc("Ci5yZWRwYW5kYS9hcGkvZGF0YXBsYW5lL3YxYWxwaGEzL2FpX2FnZW50LnByb3RvEh9yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzItohCgdBSUFnZW50EicKAmlkGAEgASgJQhvgQQO6SBVyEzIRXltBLVphLXowLTktXy9dKyQSOgoMZGlzcGxheV9uYW1lGAIgASgJQiTgQQK6SB7IAQFyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAyABKAlCCLpIBXIDGIACEnQKDXN5c3RlbV9wcm9tcHQYBCABKAlCXZJBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQu4EECukgHyAEBcgIQChJOCghwcm92aWRlchgFIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlckIJ4EECukgDyAEBEh0KBW1vZGVsGAcgASgJQg7gQQK6SAjIAQFyAxiAARJNCgttY3Bfc2VydmVycxgIIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NY3BTZXJ2ZXJzRW50cnkS+AEKCXJlc291cmNlcxgJIAEoCzItLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjEuUGlwZWxpbmUuUmVzb3VyY2VzQrUBkkGxATKuAVRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIHJlc291cmNlcyBmb3IgdGhlIEFJIEFnZW50LiBEZXBlbmRpbmcgb24gdGhlIGJhY2tlbmQsIHRoZSByZXNvdXJjZXMgbWlnaHQgYmUgZ3VhcmFudGVlZCwgb3IgbWlnaHQgYmUgdHdlYWtlZCBiYXNlZCBvbiB0aGUgdXRpbGl6YXRpb24gb2YgdGhlIEFJIEFnZW50LhJvCgR0YWdzGAogAygLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlRhZ3NFbnRyeUItukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEkIKBXN0YXRlGAsgASgOMi4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN0YXRlQgPgQQMSEAoDdXJsGAwgASgJQgPgQQMSIQoObWF4X2l0ZXJhdGlvbnMYDSABKAVCCbpIBhoEGGQoARJbCg9zZXJ2aWNlX2FjY291bnQYDiABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnRCCeBBArpIA8gBARJsCglzdWJhZ2VudHMYDyADKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnRzRW50cnlCILpIHZoBGiIYchYQARhAMhBeW0EtWmEtejAtOV8tXSskEkcKB2dhdGV3YXkYECABKAsyNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuR2F0ZXdheUNvbmZpZxJGCgphZ2VudF9jYXJkGBEgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZBJJCgx0ZWFtc19icmlkZ2UYEiABKAsyMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRUZWFtc0JyaWRnZRInChV0ZWFtc19icmlkZ2VfZW5kcG9pbnQYEyABKAlCA+BBA0gAiAEBGmUKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuTUNQU2VydmVyOgI4ARorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpjCg5TdWJhZ2VudHNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQ6AjgBGvIJCghQcm92aWRlchJKCgZvcGVuYWkYASABKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuT3BlbkFJSAASUAoJYW50aHJvcGljGAIgASgLMjsucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlByb3ZpZGVyLkFudGhyb3BpY0gAEkoKBmdvb2dsZRgDIAEoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5Hb29nbGVIABJfChFvcGVuYWlfY29tcGF0aWJsZRgEIAEoCzJCLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5PcGVuQUlDb21wYXRpYmxlSAASTAoHYmVkcm9jaxgFIAEoCzI5LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5CZWRyb2NrSAAaeQoGT3BlbkFJEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSEAoIYmFzZV91cmwYAiABKAkafAoJQW50aHJvcGljEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSEAoIYmFzZV91cmwYAiABKAkaeQoGR29vZ2xlEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSEAoIYmFzZV91cmwYAiABKAkangEKEE9wZW5BSUNvbXBhdGlibGUSXQoHYXBpX2tleRgBIAEoCUJMukhJ2AEBckQyQl5cJFx7c2VjcmV0c1wuW0EtWmEtel9dW0EtWmEtejAtOV9dKihcLltBLVphLXpfXVtBLVphLXowLTlfXSopP1x9JBIrCghiYXNlX3VybBgCIAEoCUIZ4EECukgTyAEBcg4yDF5odHRwcz86Ly8uKhqkAgoHQmVkcm9jaxI1CgZyZWdpb24YASABKAlCJeBBArpIH8gBAXIaMhheW2Etel17Mn0oLVthLXpdKy1cZCspPyQSbgoYYWNjZXNzX2tleV9pZF9zZWNyZXRfcmVmGAIgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEnIKHHNlY3JldF9hY2Nlc3Nfa2V5X3NlY3JldF9yZWYYAyABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSRCEQoIcHJvdmlkZXISBbpIAggBGpYBCg5TZXJ2aWNlQWNjb3VudBIcCgljbGllbnRfaWQYASABKAlCCeBBArpIA8gBARJmCg1jbGllbnRfc2VjcmV0GAIgASgJQk/gQQK6SEnIAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kGjwKCU1DUFNlcnZlchIKCgJpZBgBIAEoCRIjChF0b29sX2ZpbHRlcl9yZWdleBgCIAEoCUIIukgFcgMYgAIamwMKCFN1YmFnZW50ErABCg1zeXN0ZW1fcHJvbXB0GAEgASgJQpgBkkGHATKEAVN5c3RlbSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgaG93IHRoaXMgc3ViYWdlbnQgc2hvdWxkIGJlaGF2ZS4gVGhlIHN1YmFnZW50IGluaGVyaXRzIHRoZSBwcm92aWRlciBhbmQgbW9kZWwgZnJvbSBpdHMgcGFyZW50IGFnZW50LuBBArpIB8gBAXICEAoSVgoLbWNwX3NlcnZlcnMYAiADKAsyQS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQuTWNwU2VydmVyc0VudHJ5Eh0KC2Rlc2NyaXB0aW9uGAMgASgJQgi6SAVyAxiAAhplCg9NY3BTZXJ2ZXJzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Lk1DUFNlcnZlcjoCOAEaRQoNR2F0ZXdheUNvbmZpZxIeChJ2aXJ0dWFsX2dhdGV3YXlfaWQYASABKAlCAhgBEhQKDGxsbV9wcm92aWRlchgCIAEoCRrbAwoJQWdlbnRDYXJkEhoKCGljb25fdXJsGAEgASgJQgi6SAVyAxiABBIjChFkb2N1bWVudGF0aW9uX3VybBgCIAEoCUIIukgFcgMYgAQSTQoIcHJvdmlkZXIYAyABKAsyOy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkLlByb3ZpZGVyEkgKBnNraWxscxgEIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5BZ2VudENhcmQuU2tpbGwaQQoIUHJvdmlkZXISHgoMb3JnYW5pemF0aW9uGAEgASgJQgi6SAVyAxiAARIVCgN1cmwYAiABKAlCCLpIBXIDGIAEGrABCgVTa2lsbBIZCgJpZBgBIAEoCUIN4EECukgHyAEBcgIYQBIcCgRuYW1lGAIgASgJQg7gQQK6SAjIAQFyAxiAARIjCgtkZXNjcmlwdGlvbhgDIAEoCUIO4EECukgIyAEBcgMYgAQSDAoEdGFncxgEIAMoCRIQCghleGFtcGxlcxgFIAMoCRITCgtpbnB1dF9tb2RlcxgGIAMoCRIUCgxvdXRwdXRfbW9kZXMYByADKAkifQoFU3RhdGUSFQoRU1RBVEVfVU5TUEVDSUZJRUQQABISCg5TVEFURV9TVEFSVElORxABEhEKDVNUQVRFX1JVTk5JTkcQAhISCg5TVEFURV9TVE9QUElORxADEhEKDVNUQVRFX1NUT1BQRUQQBBIPCgtTVEFURV9FUlJPUhAFOkHqQT4KJ3JlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMvQUlBZ2VudCoJYWlfYWdlbnRzMghhaV9hZ2VudEIYChZfdGVhbXNfYnJpZGdlX2VuZHBvaW50IroBChJBSUFnZW50VGVhbXNCcmlkZ2USDwoHZW5hYmxlZBgBIAEoCBISCgpib3RfYXBwX2lkGAIgASgJEhUKDWJvdF90ZW5hbnRfaWQYAyABKAkSaAoSYm90X2FwcF9zZWNyZXRfcmVmGAQgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kIu8KCg1BSUFnZW50Q3JlYXRlEjoKDGRpc3BsYXlfbmFtZRgBIAEoCUIk4EECukgeyAEBchkQAxiAATISXltBLVphLXowLTktXyAvXSskEh0KC2Rlc2NyaXB0aW9uGAIgASgJQgi6SAVyAxiAAhJ0Cg1zeXN0ZW1fcHJvbXB0GAMgASgJQl2SQU0yS1N5c3RlbSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgaG93IHRoZSBBSSBhZ2VudCBzaG91bGQgYmVoYXZlIGFuZCByZXNwb25kLuBBArpIB8gBAXICEAoSTgoIcHJvdmlkZXIYBCABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXJCCeBBArpIA8gBARIdCgVtb2RlbBgGIAEoCUIO4EECukgIyAEBcgMYgAESUwoLbWNwX3NlcnZlcnMYByADKAsyPi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUuTWNwU2VydmVyc0VudHJ5EnUKBHRhZ3MYCCADKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUuVGFnc0VudHJ5Qi26SCqaAScQECojciEyH14oW1xwe0x9XHB7Wn1ccHtOfV8uOi89K1wtQF0qKSQSQAoJcmVzb3VyY2VzGAkgASgLMi0ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MS5QaXBlbGluZS5SZXNvdXJjZXMSIQoObWF4X2l0ZXJhdGlvbnMYCiABKAVCCbpIBhoEGGQoARJbCg9zZXJ2aWNlX2FjY291bnQYCyABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnRCCeBBArpIA8gBARJyCglzdWJhZ2VudHMYDCADKAsyPS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUuU3ViYWdlbnRzRW50cnlCILpIHZoBGiIYchYQARhAMhBeW0EtWmEtejAtOV8tXSskEkcKB2dhdGV3YXkYDSABKAsyNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuR2F0ZXdheUNvbmZpZxJGCgphZ2VudF9jYXJkGA4gASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZBJJCgx0ZWFtc19icmlkZ2UYDyABKAsyMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRUZWFtc0JyaWRnZRplCg9NY3BTZXJ2ZXJzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Lk1DUFNlcnZlcjoCOAEaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaYwoOU3ViYWdlbnRzRW50cnkSCwoDa2V5GAEgASgJEkAKBXZhbHVlGAIgASgLMjEucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN1YmFnZW50OgI4ATpH6kFECi1yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzL0FJQWdlbnRDcmVhdGUqCWFpX2FnZW50czIIYWlfYWdlbnQiWAoUQ3JlYXRlQUlBZ2VudFJlcXVlc3QSQAoIYWlfYWdlbnQYASABKAsyLi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUiUwoVQ3JlYXRlQUlBZ2VudFJlc3BvbnNlEjoKCGFpX2FnZW50GAEgASgLMigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Ij8KEUdldEFJQWdlbnRSZXF1ZXN0EioKAmlkGAEgASgJQh7gQQK6SBjIAQFyEzIRXltBLVphLXowLTktXy9dKyQiUAoSR2V0QUlBZ2VudFJlc3BvbnNlEjoKCGFpX2FnZW50GAEgASgLMigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50IrkFChNMaXN0QUlBZ2VudHNSZXF1ZXN0EksKBmZpbHRlchgBIAEoCzI7LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVxdWVzdC5GaWx0ZXISnQEKCXBhZ2Vfc2l6ZRgCIAEoBUKJAZJBdDJgTGltaXQgdGhlIHBhZ2luYXRlZCByZXNwb25zZSB0byBhIG51bWJlciBvZiBpdGVtcy4gRGVmYXVsdHMgdG8gNTAuIFVzZSAtMSB0byBkaXNhYmxlIHBhZ2luYXRpb24uWQAAAAAAAFlAaQAAAAAAAPC/ukgPGg0YZCj///////////8BEhIKCnBhZ2VfdG9rZW4YAyABKAkaoAMKBkZpbHRlchJ5Cg1uYW1lX2NvbnRhaW5zGAEgASgJQmKSQUAyPkFueSBBSSBhZ2VudHMgdGhhdCBwYXJ0aWFsbHkgbWF0Y2ggdGhpcyBuYW1lIHdpbGwgYmUgcmV0dXJuZWQuukgc2AEBchcYgAEyEl5bQS1aYS16MC05LV8gL10rJBLDAQoEdGFncxgCIAMoCzJFLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVxdWVzdC5GaWx0ZXIuVGFnc0VudHJ5Qm6SQT4yPEFJIGFnZW50cyB0aGF0IG1hdGNoIGFsbCB0aGUgcHJvdmlkZWQgdGFncyB3aWxsIGJlIHJldHVybmVkLrpIKpoBJxAQKiNyITIfXihbXHB7TH1ccHtafVxwe059Xy46Lz0rXC1AXSopJBIRCglzZWNyZXRfaWQYAyABKAkSFQoNbWNwX3NlcnZlcl9pZBgEIAEoCRorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJsChRMaXN0QUlBZ2VudHNSZXNwb25zZRI7CglhaV9hZ2VudHMYASADKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJIscKCg1BSUFnZW50VXBkYXRlEjQKDGRpc3BsYXlfbmFtZRgBIAEoCUIeukgbchkQAxiAATISXltBLVphLXowLTktXyAvXSskEh0KC2Rlc2NyaXB0aW9uGAIgASgJQgi6SAVyAxiAAhJuCg1zeXN0ZW1fcHJvbXB0GAMgASgJQleSQU0yS1N5c3RlbSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgaG93IHRoZSBBSSBhZ2VudCBzaG91bGQgYmVoYXZlIGFuZCByZXNwb25kLrpIBHICEAoSQwoIcHJvdmlkZXIYBCABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXISFwoFbW9kZWwYBiABKAlCCLpIBXIDGIABElMKC21jcF9zZXJ2ZXJzGAcgAygLMj4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlLk1jcFNlcnZlcnNFbnRyeRJ1CgR0YWdzGAggAygLMjgucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlLlRhZ3NFbnRyeUItukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEkAKCXJlc291cmNlcxgJIAEoCzItLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjEuUGlwZWxpbmUuUmVzb3VyY2VzEiEKDm1heF9pdGVyYXRpb25zGAogASgFQgm6SAYaBBhkKAESUAoPc2VydmljZV9hY2NvdW50GAsgASgLMjcucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlNlcnZpY2VBY2NvdW50EnIKCXN1YmFnZW50cxgMIAMoCzI9LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFVwZGF0ZS5TdWJhZ2VudHNFbnRyeUIgukgdmgEaIhhyFhABGEAyEF5bQS1aYS16MC05Xy1dKyQSRwoHZ2F0ZXdheRgNIAEoCzI2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5HYXRld2F5Q29uZmlnEkYKCmFnZW50X2NhcmQYDiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkEkkKDHRlYW1zX2JyaWRnZRgPIAEoCzIzLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFRlYW1zQnJpZGdlGmUKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuTUNQU2VydmVyOgI4ARorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpjCg5TdWJhZ2VudHNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQ6AjgBOkfqQUQKLXJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMvQUlBZ2VudFVwZGF0ZSoJYWlfYWdlbnRzMghhaV9hZ2VudCLAAQoUVXBkYXRlQUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJBJLCghhaV9hZ2VudBgCIAEoCzIuLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFVwZGF0ZUIJ4EECukgDyAEBEi8KC3VwZGF0ZV9tYXNrGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayJTChVVcGRhdGVBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQiQgoURGVsZXRlQUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCIXChVEZWxldGVBSUFnZW50UmVzcG9uc2UiQAoSU3RvcEFJQWdlbnRSZXF1ZXN0EioKAmlkGAEgASgJQh7gQQK6SBjIAQFyEzIRXltBLVphLXowLTktXy9dKyQiUQoTU3RvcEFJQWdlbnRSZXNwb25zZRI6CghhaV9hZ2VudBgBIAEoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudCJBChNTdGFydEFJQWdlbnRSZXF1ZXN0EioKAmlkGAEgASgJQh7gQQK6SBjIAQFyEzIRXltBLVphLXowLTktXy9dKyQiUgoUU3RhcnRBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQypBQKDkFJQWdlbnRTZXJ2aWNlEsICCg1DcmVhdGVBSUFnZW50EjUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5DcmVhdGVBSUFnZW50UmVxdWVzdBo2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQ3JlYXRlQUlBZ2VudFJlc3BvbnNlIsEBkkFpEg9DcmVhdGUgQUkgQWdlbnQaFkNyZWF0ZSBhIG5ldyBBSSBhZ2VudC5KPgoDMjAxEjcKB0NyZWF0ZWQSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW502r8HJAoIYWlhZ2VudHMaGGRhdGFwbGFuZV9haWFnZW50X2NyZWF0ZYqmHQQIAhAIgtPkkwIfOghhaV9hZ2VudCITL3YxYWxwaGEzL2FpLWFnZW50cxLkAgoKR2V0QUlBZ2VudBIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuR2V0QUlBZ2VudFJlcXVlc3QaMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkdldEFJQWdlbnRSZXNwb25zZSLsAZJBjwESDEdldCBBSSBBZ2VudBoYR2V0IGEgc3BlY2lmaWMgQUkgYWdlbnQuSjkKAzIwMBIyCgJPSxIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRKKgoDNDA0EiMKCU5vdCBGb3VuZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c9q/By0KCGFpYWdlbnRzEgpyZXF1ZXN0LmlkGhVkYXRhcGxhbmVfYWlhZ2VudF9nZXSKph0ECAEQCILT5JMCGhIYL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9EvwCCgxMaXN0QUlBZ2VudHMSNC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RBSUFnZW50c1JlcXVlc3QaNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RBSUFnZW50c1Jlc3BvbnNlIv4BkkGSARIOTGlzdCBBSSBBZ2VudHMaOExpc3QgQUkgYWdlbnRzLiBPcHRpb25hbDogZmlsdGVyIGJhc2VkIG9uIEFJIGFnZW50IG5hbWUuSkYKAzIwMBI/CgJPSxI5CjcaNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RBSUFnZW50c1Jlc3BvbnNl4r8HQQoScmVzcG9uc2UuYWlfYWdlbnRzEisKCGFpYWdlbnRzEgdlYWNoLmlkGhZkYXRhcGxhbmVfYWlhZ2VudF9saXN0iqYdBAgBEAiC0+STAhUSEy92MWFscGhhMy9haS1hZ2VudHMS4AIKDVVwZGF0ZUFJQWdlbnQSNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlVwZGF0ZUFJQWdlbnRSZXF1ZXN0GjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5VcGRhdGVBSUFnZW50UmVzcG9uc2Ui3wGSQXYSD1VwZGF0ZSBBSSBBZ2VudBooVXBkYXRlIHRoZSBjb25maWd1cmF0aW9uIG9mIGFuIEFJIGFnZW50Lko5CgMyMDASMgoCT0sSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW502r8HMAoIYWlhZ2VudHMSCnJlcXVlc3QuaWQaGGRhdGFwbGFuZV9haWFnZW50X3VwZGF0ZYqmHQQIAhAIgtPkkwIkOghhaV9hZ2VudBoYL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9EsYCCg1EZWxldGVBSUFnZW50EjUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5EZWxldGVBSUFnZW50UmVxdWVzdBo2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuRGVsZXRlQUlBZ2VudFJlc3BvbnNlIsUBkkFmEg9EZWxldGUgQUkgQWdlbnQaE0RlbGV0ZSBhbiBBSSBhZ2VudC5KEgoDMjA0EgsKB0RlbGV0ZWQSAEoqCgM0MDQSIwoJTm90IEZvdW5kEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVz2r8HMAoIYWlhZ2VudHMSCnJlcXVlc3QuaWQaGGRhdGFwbGFuZV9haWFnZW50X2RlbGV0ZYqmHQQIAhAIgtPkkwIaKhgvdjFhbHBoYTMvYWktYWdlbnRzL3tpZH0S9QIKC1N0b3BBSUFnZW50EjMucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5TdG9wQUlBZ2VudFJlcXVlc3QaNC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0b3BBSUFnZW50UmVzcG9uc2Ui+gGSQZUBEg1TdG9wIEFJIEFnZW50GhhTdG9wIGEgcnVubmluZyBBSSBhZ2VudC5KPgoDMjAwEjcKB1N0b3BwZWQSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50SioKAzQwNBIjCglOb3QgRm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXPavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfZGVsZXRliqYdBAgCEAiC0+STAh8aHS92MWFscGhhMy9haS1hZ2VudHMve2lkfTpzdG9wEvsCCgxTdGFydEFJQWdlbnQSNC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0YXJ0QUlBZ2VudFJlcXVlc3QaNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0YXJ0QUlBZ2VudFJlc3BvbnNlIv0BkkGXARIOU3RhcnQgQUkgQWdlbnQaGVN0YXJ0IGEgc3RvcHBlZCBBSSBhZ2VudC5KPgoDMjAwEjcKB1N0YXJ0ZWQSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50SioKAzQwNBIjCglOb3QgRm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXPavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfY3JlYXRliqYdBAgCEAiC0+STAiAaHi92MWFscGhhMy9haS1hZ2VudHMve2lkfTpzdGFydBpFkkFCCglBSSBBZ2VudHMSNUNyZWF0ZSBhbmQgbWFuYWdlIEFJIGFnZW50cyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbnMuYgZwcm90bzM", [file_buf_validate_validate, file_google_api_annotations, file_google_api_field_behavior, file_google_api_resource, file_google_protobuf_field_mask, file_protoc_gen_openapiv2_options_annotations, file_redpanda_api_auth_v1_authorization, file_redpanda_api_common_v1_options, file_redpanda_api_dataplane_v1_pipeline]); + fileDesc("Ci5yZWRwYW5kYS9hcGkvZGF0YXBsYW5lL3YxYWxwaGEzL2FpX2FnZW50LnByb3RvEh9yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzItohCgdBSUFnZW50EicKAmlkGAEgASgJQhvgQQO6SBVyEzIRXltBLVphLXowLTktXy9dKyQSOgoMZGlzcGxheV9uYW1lGAIgASgJQiTgQQK6SB7IAQFyGRADGIABMhJeW0EtWmEtejAtOS1fIC9dKyQSHQoLZGVzY3JpcHRpb24YAyABKAlCCLpIBXIDGIACEnQKDXN5c3RlbV9wcm9tcHQYBCABKAlCXZJBTTJLU3lzdGVtIGluc3RydWN0aW9ucyB0aGF0IGRlZmluZSBob3cgdGhlIEFJIGFnZW50IHNob3VsZCBiZWhhdmUgYW5kIHJlc3BvbmQu4EECukgHyAEBcgIQChJOCghwcm92aWRlchgFIAEoCzIxLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlckIJ4EECukgDyAEBEh0KBW1vZGVsGAcgASgJQg7gQQK6SAjIAQFyAxiAARJNCgttY3Bfc2VydmVycxgIIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5NY3BTZXJ2ZXJzRW50cnkS+AEKCXJlc291cmNlcxgJIAEoCzItLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjEuUGlwZWxpbmUuUmVzb3VyY2VzQrUBkkGxATKuAVRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIHJlc291cmNlcyBmb3IgdGhlIEFJIEFnZW50LiBEZXBlbmRpbmcgb24gdGhlIGJhY2tlbmQsIHRoZSByZXNvdXJjZXMgbWlnaHQgYmUgZ3VhcmFudGVlZCwgb3IgbWlnaHQgYmUgdHdlYWtlZCBiYXNlZCBvbiB0aGUgdXRpbGl6YXRpb24gb2YgdGhlIEFJIEFnZW50LhJvCgR0YWdzGAogAygLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlRhZ3NFbnRyeUItukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEkIKBXN0YXRlGAsgASgOMi4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN0YXRlQgPgQQMSEAoDdXJsGAwgASgJQgPgQQMSIQoObWF4X2l0ZXJhdGlvbnMYDSABKAVCCbpIBhoEGGQoARJbCg9zZXJ2aWNlX2FjY291bnQYDiABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnRCCeBBArpIA8gBARJsCglzdWJhZ2VudHMYDyADKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnRzRW50cnlCILpIHZoBGiIYchYQARhAMhBeW0EtWmEtejAtOV8tXSskEkcKB2dhdGV3YXkYECABKAsyNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuR2F0ZXdheUNvbmZpZxJGCgphZ2VudF9jYXJkGBEgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZBJJCgx0ZWFtc19icmlkZ2UYEiABKAsyMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRUZWFtc0JyaWRnZRInChV0ZWFtc19icmlkZ2VfZW5kcG9pbnQYEyABKAlCA+BBA0gAiAEBGmUKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuTUNQU2VydmVyOgI4ARorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpjCg5TdWJhZ2VudHNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQ6AjgBGvIJCghQcm92aWRlchJKCgZvcGVuYWkYASABKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXIuT3BlbkFJSAASUAoJYW50aHJvcGljGAIgASgLMjsucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlByb3ZpZGVyLkFudGhyb3BpY0gAEkoKBmdvb2dsZRgDIAEoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5Hb29nbGVIABJfChFvcGVuYWlfY29tcGF0aWJsZRgEIAEoCzJCLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5PcGVuQUlDb21wYXRpYmxlSAASTAoHYmVkcm9jaxgFIAEoCzI5LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5Qcm92aWRlci5CZWRyb2NrSAAaeQoGT3BlbkFJEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSEAoIYmFzZV91cmwYAiABKAkafAoJQW50aHJvcGljEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSEAoIYmFzZV91cmwYAiABKAkaeQoGR29vZ2xlEl0KB2FwaV9rZXkYASABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSQSEAoIYmFzZV91cmwYAiABKAkangEKEE9wZW5BSUNvbXBhdGlibGUSXQoHYXBpX2tleRgBIAEoCUJMukhJ2AEBckQyQl5cJFx7c2VjcmV0c1wuW0EtWmEtel9dW0EtWmEtejAtOV9dKihcLltBLVphLXpfXVtBLVphLXowLTlfXSopP1x9JBIrCghiYXNlX3VybBgCIAEoCUIZ4EECukgTyAEBcg4yDF5odHRwcz86Ly8uKhqkAgoHQmVkcm9jaxI1CgZyZWdpb24YASABKAlCJeBBArpIH8gBAXIaMhheW2Etel17Mn0oLVthLXpdKy1cZCspPyQSbgoYYWNjZXNzX2tleV9pZF9zZWNyZXRfcmVmGAIgASgJQky6SEnYAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kEnIKHHNlY3JldF9hY2Nlc3Nfa2V5X3NlY3JldF9yZWYYAyABKAlCTLpISdgBAXJEMkJeXCRce3NlY3JldHNcLltBLVphLXpfXVtBLVphLXowLTlfXSooXC5bQS1aYS16X11bQS1aYS16MC05X10qKT9cfSRCEQoIcHJvdmlkZXISBbpIAggBGpYBCg5TZXJ2aWNlQWNjb3VudBIcCgljbGllbnRfaWQYASABKAlCCeBBArpIA8gBARJmCg1jbGllbnRfc2VjcmV0GAIgASgJQk/gQQK6SEnIAQFyRDJCXlwkXHtzZWNyZXRzXC5bQS1aYS16X11bQS1aYS16MC05X10qKFwuW0EtWmEtel9dW0EtWmEtejAtOV9dKik/XH0kGjwKCU1DUFNlcnZlchIKCgJpZBgBIAEoCRIjChF0b29sX2ZpbHRlcl9yZWdleBgCIAEoCUIIukgFcgMYgAIamwMKCFN1YmFnZW50ErABCg1zeXN0ZW1fcHJvbXB0GAEgASgJQpgBkkGHATKEAVN5c3RlbSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgaG93IHRoaXMgc3ViYWdlbnQgc2hvdWxkIGJlaGF2ZS4gVGhlIHN1YmFnZW50IGluaGVyaXRzIHRoZSBwcm92aWRlciBhbmQgbW9kZWwgZnJvbSBpdHMgcGFyZW50IGFnZW50LuBBArpIB8gBAXICEAoSVgoLbWNwX3NlcnZlcnMYAiADKAsyQS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQuTWNwU2VydmVyc0VudHJ5Eh0KC2Rlc2NyaXB0aW9uGAMgASgJQgi6SAVyAxiAAhplCg9NY3BTZXJ2ZXJzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Lk1DUFNlcnZlcjoCOAEaRQoNR2F0ZXdheUNvbmZpZxIeChJ2aXJ0dWFsX2dhdGV3YXlfaWQYASABKAlCAhgBEhQKDGxsbV9wcm92aWRlchgCIAEoCRrbAwoJQWdlbnRDYXJkEhoKCGljb25fdXJsGAEgASgJQgi6SAVyAxiABBIjChFkb2N1bWVudGF0aW9uX3VybBgCIAEoCUIIukgFcgMYgAQSTQoIcHJvdmlkZXIYAyABKAsyOy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkLlByb3ZpZGVyEkgKBnNraWxscxgEIAMoCzI4LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5BZ2VudENhcmQuU2tpbGwaQQoIUHJvdmlkZXISHgoMb3JnYW5pemF0aW9uGAEgASgJQgi6SAVyAxiAARIVCgN1cmwYAiABKAlCCLpIBXIDGIAEGrABCgVTa2lsbBIZCgJpZBgBIAEoCUIN4EECukgHyAEBcgIYQBIcCgRuYW1lGAIgASgJQg7gQQK6SAjIAQFyAxiAARIjCgtkZXNjcmlwdGlvbhgDIAEoCUIO4EECukgIyAEBcgMYgAQSDAoEdGFncxgEIAMoCRIQCghleGFtcGxlcxgFIAMoCRITCgtpbnB1dF9tb2RlcxgGIAMoCRIUCgxvdXRwdXRfbW9kZXMYByADKAkifQoFU3RhdGUSFQoRU1RBVEVfVU5TUEVDSUZJRUQQABISCg5TVEFURV9TVEFSVElORxABEhEKDVNUQVRFX1JVTk5JTkcQAhISCg5TVEFURV9TVE9QUElORxADEhEKDVNUQVRFX1NUT1BQRUQQBBIPCgtTVEFURV9FUlJPUhAFOkHqQT4KJ3JlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMvQUlBZ2VudCoJYWlfYWdlbnRzMghhaV9hZ2VudEIYChZfdGVhbXNfYnJpZGdlX2VuZHBvaW50IpABChJBSUFnZW50VGVhbXNCcmlkZ2USDwoHZW5hYmxlZBgBIAEoCBISCgpib3RfYXBwX2lkGAIgASgJEhUKDWJvdF90ZW5hbnRfaWQYAyABKAkSPgoSYm90X2FwcF9zZWNyZXRfcmVmGAQgASgJQiK6SB/YAQFyGjIYXltBLVphLXpfXVtBLVphLXowLTlfXSokIu8KCg1BSUFnZW50Q3JlYXRlEjoKDGRpc3BsYXlfbmFtZRgBIAEoCUIk4EECukgeyAEBchkQAxiAATISXltBLVphLXowLTktXyAvXSskEh0KC2Rlc2NyaXB0aW9uGAIgASgJQgi6SAVyAxiAAhJ0Cg1zeXN0ZW1fcHJvbXB0GAMgASgJQl2SQU0yS1N5c3RlbSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgaG93IHRoZSBBSSBhZ2VudCBzaG91bGQgYmVoYXZlIGFuZCByZXNwb25kLuBBArpIB8gBAXICEAoSTgoIcHJvdmlkZXIYBCABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXJCCeBBArpIA8gBARIdCgVtb2RlbBgGIAEoCUIO4EECukgIyAEBcgMYgAESUwoLbWNwX3NlcnZlcnMYByADKAsyPi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUuTWNwU2VydmVyc0VudHJ5EnUKBHRhZ3MYCCADKAsyOC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUuVGFnc0VudHJ5Qi26SCqaAScQECojciEyH14oW1xwe0x9XHB7Wn1ccHtOfV8uOi89K1wtQF0qKSQSQAoJcmVzb3VyY2VzGAkgASgLMi0ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MS5QaXBlbGluZS5SZXNvdXJjZXMSIQoObWF4X2l0ZXJhdGlvbnMYCiABKAVCCbpIBhoEGGQoARJbCg9zZXJ2aWNlX2FjY291bnQYCyABKAsyNy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU2VydmljZUFjY291bnRCCeBBArpIA8gBARJyCglzdWJhZ2VudHMYDCADKAsyPS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUuU3ViYWdlbnRzRW50cnlCILpIHZoBGiIYchYQARhAMhBeW0EtWmEtejAtOV8tXSskEkcKB2dhdGV3YXkYDSABKAsyNi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuR2F0ZXdheUNvbmZpZxJGCgphZ2VudF9jYXJkGA4gASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LkFnZW50Q2FyZBJJCgx0ZWFtc19icmlkZ2UYDyABKAsyMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRUZWFtc0JyaWRnZRplCg9NY3BTZXJ2ZXJzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Lk1DUFNlcnZlcjoCOAEaKwoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaYwoOU3ViYWdlbnRzRW50cnkSCwoDa2V5GAEgASgJEkAKBXZhbHVlGAIgASgLMjEucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlN1YmFnZW50OgI4ATpH6kFECi1yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzL0FJQWdlbnRDcmVhdGUqCWFpX2FnZW50czIIYWlfYWdlbnQiWAoUQ3JlYXRlQUlBZ2VudFJlcXVlc3QSQAoIYWlfYWdlbnQYASABKAsyLi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRDcmVhdGUiUwoVQ3JlYXRlQUlBZ2VudFJlc3BvbnNlEjoKCGFpX2FnZW50GAEgASgLMigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50Ij8KEUdldEFJQWdlbnRSZXF1ZXN0EioKAmlkGAEgASgJQh7gQQK6SBjIAQFyEzIRXltBLVphLXowLTktXy9dKyQiUAoSR2V0QUlBZ2VudFJlc3BvbnNlEjoKCGFpX2FnZW50GAEgASgLMigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50IrkFChNMaXN0QUlBZ2VudHNSZXF1ZXN0EksKBmZpbHRlchgBIAEoCzI7LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVxdWVzdC5GaWx0ZXISnQEKCXBhZ2Vfc2l6ZRgCIAEoBUKJAZJBdDJgTGltaXQgdGhlIHBhZ2luYXRlZCByZXNwb25zZSB0byBhIG51bWJlciBvZiBpdGVtcy4gRGVmYXVsdHMgdG8gNTAuIFVzZSAtMSB0byBkaXNhYmxlIHBhZ2luYXRpb24uWQAAAAAAAFlAaQAAAAAAAPC/ukgPGg0YZCj///////////8BEhIKCnBhZ2VfdG9rZW4YAyABKAkaoAMKBkZpbHRlchJ5Cg1uYW1lX2NvbnRhaW5zGAEgASgJQmKSQUAyPkFueSBBSSBhZ2VudHMgdGhhdCBwYXJ0aWFsbHkgbWF0Y2ggdGhpcyBuYW1lIHdpbGwgYmUgcmV0dXJuZWQuukgc2AEBchcYgAEyEl5bQS1aYS16MC05LV8gL10rJBLDAQoEdGFncxgCIAMoCzJFLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuTGlzdEFJQWdlbnRzUmVxdWVzdC5GaWx0ZXIuVGFnc0VudHJ5Qm6SQT4yPEFJIGFnZW50cyB0aGF0IG1hdGNoIGFsbCB0aGUgcHJvdmlkZWQgdGFncyB3aWxsIGJlIHJldHVybmVkLrpIKpoBJxAQKiNyITIfXihbXHB7TH1ccHtafVxwe059Xy46Lz0rXC1AXSopJBIRCglzZWNyZXRfaWQYAyABKAkSFQoNbWNwX3NlcnZlcl9pZBgEIAEoCRorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJsChRMaXN0QUlBZ2VudHNSZXNwb25zZRI7CglhaV9hZ2VudHMYASADKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJIscKCg1BSUFnZW50VXBkYXRlEjQKDGRpc3BsYXlfbmFtZRgBIAEoCUIeukgbchkQAxiAATISXltBLVphLXowLTktXyAvXSskEh0KC2Rlc2NyaXB0aW9uGAIgASgJQgi6SAVyAxiAAhJuCg1zeXN0ZW1fcHJvbXB0GAMgASgJQleSQU0yS1N5c3RlbSBpbnN0cnVjdGlvbnMgdGhhdCBkZWZpbmUgaG93IHRoZSBBSSBhZ2VudCBzaG91bGQgYmVoYXZlIGFuZCByZXNwb25kLrpIBHICEAoSQwoIcHJvdmlkZXIYBCABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuUHJvdmlkZXISFwoFbW9kZWwYBiABKAlCCLpIBXIDGIABElMKC21jcF9zZXJ2ZXJzGAcgAygLMj4ucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlLk1jcFNlcnZlcnNFbnRyeRJ1CgR0YWdzGAggAygLMjgucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50VXBkYXRlLlRhZ3NFbnRyeUItukgqmgEnEBAqI3IhMh9eKFtccHtMfVxwe1p9XHB7Tn1fLjovPStcLUBdKikkEkAKCXJlc291cmNlcxgJIAEoCzItLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjEuUGlwZWxpbmUuUmVzb3VyY2VzEiEKDm1heF9pdGVyYXRpb25zGAogASgFQgm6SAYaBBhkKAESUAoPc2VydmljZV9hY2NvdW50GAsgASgLMjcucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50LlNlcnZpY2VBY2NvdW50EnIKCXN1YmFnZW50cxgMIAMoCzI9LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFVwZGF0ZS5TdWJhZ2VudHNFbnRyeUIgukgdmgEaIhhyFhABGEAyEF5bQS1aYS16MC05Xy1dKyQSRwoHZ2F0ZXdheRgNIAEoCzI2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudC5HYXRld2F5Q29uZmlnEkYKCmFnZW50X2NhcmQYDiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuQWdlbnRDYXJkEkkKDHRlYW1zX2JyaWRnZRgPIAEoCzIzLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFRlYW1zQnJpZGdlGmUKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuTUNQU2VydmVyOgI4ARorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpjCg5TdWJhZ2VudHNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQuU3ViYWdlbnQ6AjgBOkfqQUQKLXJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMvQUlBZ2VudFVwZGF0ZSoJYWlfYWdlbnRzMghhaV9hZ2VudCLAAQoUVXBkYXRlQUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJBJLCghhaV9hZ2VudBgCIAEoCzIuLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudFVwZGF0ZUIJ4EECukgDyAEBEi8KC3VwZGF0ZV9tYXNrGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayJTChVVcGRhdGVBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQiQgoURGVsZXRlQUlBZ2VudFJlcXVlc3QSKgoCaWQYASABKAlCHuBBArpIGMgBAXITMhFeW0EtWmEtejAtOS1fL10rJCIXChVEZWxldGVBSUFnZW50UmVzcG9uc2UiQAoSU3RvcEFJQWdlbnRSZXF1ZXN0EioKAmlkGAEgASgJQh7gQQK6SBjIAQFyEzIRXltBLVphLXowLTktXy9dKyQiUQoTU3RvcEFJQWdlbnRSZXNwb25zZRI6CghhaV9hZ2VudBgBIAEoCzIoLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQUlBZ2VudCJBChNTdGFydEFJQWdlbnRSZXF1ZXN0EioKAmlkGAEgASgJQh7gQQK6SBjIAQFyEzIRXltBLVphLXowLTktXy9dKyQiUgoUU3RhcnRBSUFnZW50UmVzcG9uc2USOgoIYWlfYWdlbnQYASABKAsyKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnQypBQKDkFJQWdlbnRTZXJ2aWNlEsICCg1DcmVhdGVBSUFnZW50EjUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5DcmVhdGVBSUFnZW50UmVxdWVzdBo2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuQ3JlYXRlQUlBZ2VudFJlc3BvbnNlIsEBkkFpEg9DcmVhdGUgQUkgQWdlbnQaFkNyZWF0ZSBhIG5ldyBBSSBhZ2VudC5KPgoDMjAxEjcKB0NyZWF0ZWQSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW502r8HJAoIYWlhZ2VudHMaGGRhdGFwbGFuZV9haWFnZW50X2NyZWF0ZYqmHQQIAhAIgtPkkwIfOghhaV9hZ2VudCITL3YxYWxwaGEzL2FpLWFnZW50cxLkAgoKR2V0QUlBZ2VudBIyLnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuR2V0QUlBZ2VudFJlcXVlc3QaMy5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkdldEFJQWdlbnRSZXNwb25zZSLsAZJBjwESDEdldCBBSSBBZ2VudBoYR2V0IGEgc3BlY2lmaWMgQUkgYWdlbnQuSjkKAzIwMBIyCgJPSxIsCioaKC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkFJQWdlbnRKKgoDNDA0EiMKCU5vdCBGb3VuZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c9q/By0KCGFpYWdlbnRzEgpyZXF1ZXN0LmlkGhVkYXRhcGxhbmVfYWlhZ2VudF9nZXSKph0ECAEQCILT5JMCGhIYL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9EvwCCgxMaXN0QUlBZ2VudHMSNC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RBSUFnZW50c1JlcXVlc3QaNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RBSUFnZW50c1Jlc3BvbnNlIv4BkkGSARIOTGlzdCBBSSBBZ2VudHMaOExpc3QgQUkgYWdlbnRzLiBPcHRpb25hbDogZmlsdGVyIGJhc2VkIG9uIEFJIGFnZW50IG5hbWUuSkYKAzIwMBI/CgJPSxI5CjcaNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLkxpc3RBSUFnZW50c1Jlc3BvbnNl4r8HQQoScmVzcG9uc2UuYWlfYWdlbnRzEisKCGFpYWdlbnRzEgdlYWNoLmlkGhZkYXRhcGxhbmVfYWlhZ2VudF9saXN0iqYdBAgBEAiC0+STAhUSEy92MWFscGhhMy9haS1hZ2VudHMS4AIKDVVwZGF0ZUFJQWdlbnQSNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlVwZGF0ZUFJQWdlbnRSZXF1ZXN0GjYucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5VcGRhdGVBSUFnZW50UmVzcG9uc2Ui3wGSQXYSD1VwZGF0ZSBBSSBBZ2VudBooVXBkYXRlIHRoZSBjb25maWd1cmF0aW9uIG9mIGFuIEFJIGFnZW50Lko5CgMyMDASMgoCT0sSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW502r8HMAoIYWlhZ2VudHMSCnJlcXVlc3QuaWQaGGRhdGFwbGFuZV9haWFnZW50X3VwZGF0ZYqmHQQIAhAIgtPkkwIkOghhaV9hZ2VudBoYL3YxYWxwaGEzL2FpLWFnZW50cy97aWR9EsYCCg1EZWxldGVBSUFnZW50EjUucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5EZWxldGVBSUFnZW50UmVxdWVzdBo2LnJlZHBhbmRhLmFwaS5kYXRhcGxhbmUudjFhbHBoYTMuRGVsZXRlQUlBZ2VudFJlc3BvbnNlIsUBkkFmEg9EZWxldGUgQUkgQWdlbnQaE0RlbGV0ZSBhbiBBSSBhZ2VudC5KEgoDMjA0EgsKB0RlbGV0ZWQSAEoqCgM0MDQSIwoJTm90IEZvdW5kEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVz2r8HMAoIYWlhZ2VudHMSCnJlcXVlc3QuaWQaGGRhdGFwbGFuZV9haWFnZW50X2RlbGV0ZYqmHQQIAhAIgtPkkwIaKhgvdjFhbHBoYTMvYWktYWdlbnRzL3tpZH0S9QIKC1N0b3BBSUFnZW50EjMucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5TdG9wQUlBZ2VudFJlcXVlc3QaNC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0b3BBSUFnZW50UmVzcG9uc2Ui+gGSQZUBEg1TdG9wIEFJIEFnZW50GhhTdG9wIGEgcnVubmluZyBBSSBhZ2VudC5KPgoDMjAwEjcKB1N0b3BwZWQSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50SioKAzQwNBIjCglOb3QgRm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXPavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfZGVsZXRliqYdBAgCEAiC0+STAh8aHS92MWFscGhhMy9haS1hZ2VudHMve2lkfTpzdG9wEvsCCgxTdGFydEFJQWdlbnQSNC5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0YXJ0QUlBZ2VudFJlcXVlc3QaNS5yZWRwYW5kYS5hcGkuZGF0YXBsYW5lLnYxYWxwaGEzLlN0YXJ0QUlBZ2VudFJlc3BvbnNlIv0BkkGXARIOU3RhcnQgQUkgQWdlbnQaGVN0YXJ0IGEgc3RvcHBlZCBBSSBhZ2VudC5KPgoDMjAwEjcKB1N0YXJ0ZWQSLAoqGigucmVkcGFuZGEuYXBpLmRhdGFwbGFuZS52MWFscGhhMy5BSUFnZW50SioKAzQwNBIjCglOb3QgRm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXPavwcwCghhaWFnZW50cxIKcmVxdWVzdC5pZBoYZGF0YXBsYW5lX2FpYWdlbnRfY3JlYXRliqYdBAgCEAiC0+STAiAaHi92MWFscGhhMy9haS1hZ2VudHMve2lkfTpzdGFydBpFkkFCCglBSSBBZ2VudHMSNUNyZWF0ZSBhbmQgbWFuYWdlIEFJIGFnZW50cyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbnMuYgZwcm90bzM", [file_buf_validate_validate, file_google_api_annotations, file_google_api_field_behavior, file_google_api_resource, file_google_protobuf_field_mask, file_protoc_gen_openapiv2_options_annotations, file_redpanda_api_auth_v1_authorization, file_redpanda_api_common_v1_options, file_redpanda_api_dataplane_v1_pipeline]); /** * Defines the AI Agent resource. From 32ed96048542baef429ede80905a32f8be41c57f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Br=C3=BCderl?= Date: Mon, 11 May 2026 17:17:12 +0200 Subject: [PATCH 6/6] feat: gate Teams Integrations tab behind enableTeamsBridge feature flag Off by default. Cloud-ui pipes the LaunchDarkly value through useConsoleFeatureFlags; without it the tab and its content are not rendered. Also: disable Save when enabled with incomplete fields, consolidate isEditing into editedState, fix dark-mode classes on read-only fields, document proto fields including bare-key divergence on bot_app_secret_ref. --- .gitignore | 1 + .../api/dataplane/v1alpha3/ai_agent.pb.go | 19 ++++++++++---- frontend/src/components/constants.ts | 1 + .../agents/details/ai-agent-details-page.tsx | 25 ++++++++++++------- .../details/ai-agent-integrations-tab.tsx | 18 +++++++------ .../api/dataplane/v1alpha3/ai_agent_pb.ts | 13 ++++++++++ proto/gen/openapi/openapi.v1alpha3.json | 2 +- proto/gen/openapi/openapi.v1alpha3.yaml | 13 +++++++++- .../api/dataplane/v1alpha3/ai_agent.proto | 9 +++++++ 9 files changed, 77 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 5c07c3cefa..5067d0ca48 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ requests.txt build .cursor +.claude/worktrees/ diff --git a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go index ebaad6354b..b71dd50bfa 100644 --- a/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go +++ b/backend/pkg/protogen/redpanda/api/dataplane/v1alpha3/ai_agent.pb.go @@ -296,12 +296,21 @@ func (x *AIAgent) GetTeamsBridgeEndpoint() string { } // Microsoft Teams bridge configuration for connecting an AI agent to Teams. +// Each agent gets its own Azure Bot registration; the bridge validates +// inbound Bot Framework JWTs against the per-agent bot_app_id as audience. type AIAgentTeamsBridge struct { - state protoimpl.MessageState `protogen:"open.v1"` - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - BotAppId string `protobuf:"bytes,2,opt,name=bot_app_id,json=botAppId,proto3" json:"bot_app_id,omitempty"` - BotTenantId string `protobuf:"bytes,3,opt,name=bot_tenant_id,json=botTenantId,proto3" json:"bot_tenant_id,omitempty"` - BotAppSecretRef string `protobuf:"bytes,4,opt,name=bot_app_secret_ref,json=botAppSecretRef,proto3" json:"bot_app_secret_ref,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + // Whether the Teams bridge is active for this agent. + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + // Azure Bot registration Application (client) ID. + BotAppId string `protobuf:"bytes,2,opt,name=bot_app_id,json=botAppId,proto3" json:"bot_app_id,omitempty"` + // AAD tenant ID the bot registration lives in. + BotTenantId string `protobuf:"bytes,3,opt,name=bot_tenant_id,json=botTenantId,proto3" json:"bot_tenant_id,omitempty"` + // Bare secret key in the Redpanda secret store (e.g. "TEAMS_BOT_SECRET"). + // Unlike provider api_key fields which use ${secrets.NAME} template syntax, + // this is a plain identifier — the bridge resolves it directly via the + // tenant-scoped secret store prefix. + BotAppSecretRef string `protobuf:"bytes,4,opt,name=bot_app_secret_ref,json=botAppSecretRef,proto3" json:"bot_app_secret_ref,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } diff --git a/frontend/src/components/constants.ts b/frontend/src/components/constants.ts index 3d44558f95..dc2c99fcfe 100644 --- a/frontend/src/components/constants.ts +++ b/frontend/src/components/constants.ts @@ -16,6 +16,7 @@ export const FEATURE_FLAGS = { enableNewPipelineLogs: false, enablePipelineDiagrams: false, enableConnectSlashMenu: false, + enableTeamsBridge: false, }; // Cloud-managed tag keys for service account integration diff --git a/frontend/src/components/pages/agents/details/ai-agent-details-page.tsx b/frontend/src/components/pages/agents/details/ai-agent-details-page.tsx index 94febe09ae..c7659d0f5c 100644 --- a/frontend/src/components/pages/agents/details/ai-agent-details-page.tsx +++ b/frontend/src/components/pages/agents/details/ai-agent-details-page.tsx @@ -14,6 +14,7 @@ import { getRouteApi, useNavigate } from '@tanstack/react-router'; const routeApi = getRouteApi('/agents/$id/'); import { Tabs, TabsContent, TabsList, TabsTrigger } from 'components/redpanda-ui/components/tabs'; +import { isFeatureFlagEnabled } from 'config'; import { AlertCircle, FileText, Loader2, Network, Plug, Search, Settings } from 'lucide-react'; import { useEffect } from 'react'; import { useGetAIAgentQuery } from 'react-query/api/ai-agent'; @@ -80,6 +81,8 @@ export const AIAgentDetailsPage = () => { return null; } + const showTeamsBridge = isFeatureFlagEnabled('enableTeamsBridge'); + return (
@@ -92,12 +95,14 @@ export const AIAgentDetailsPage = () => { Configuration
- -
- - Integrations -
-
+ {showTeamsBridge && ( + +
+ + Integrations +
+
+ )}
@@ -119,9 +124,11 @@ export const AIAgentDetailsPage = () => { - - - + {showTeamsBridge && ( + + + + )} diff --git a/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx index 933c66e2e6..02de847cbd 100644 --- a/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx +++ b/frontend/src/components/pages/agents/details/ai-agent-integrations-tab.tsx @@ -57,8 +57,8 @@ export const AIAgentIntegrationsTab = () => { const { mutateAsync: updateAIAgent, isPending: isUpdatePending } = useUpdateAIAgentMutation(); const { data: secretsData } = useListSecretsQuery(); - const [isEditing, setIsEditing] = useState(false); const [editedState, setEditedState] = useState(null); + const isEditing = editedState !== null; const agent = aiAgentData?.aiAgent; @@ -86,6 +86,10 @@ export const AIAgentIntegrationsTab = () => { setEditedState({ ...displayState, ...updates }); }; + const isSaveDisabled = + isUpdatePending || + (displayState.enabled && !(displayState.botAppId && displayState.botTenantId && displayState.botAppSecretName)); + const handleSave = async () => { if (!id) { return; @@ -117,7 +121,6 @@ export const AIAgentIntegrationsTab = () => { { onSuccess: () => { toast.success('Teams integration updated'); - setIsEditing(false); setEditedState(null); }, onError: (error) => { @@ -131,7 +134,6 @@ export const AIAgentIntegrationsTab = () => { }; const handleCancel = () => { - setIsEditing(false); setEditedState(null); }; @@ -150,7 +152,7 @@ export const AIAgentIntegrationsTab = () => {
{isEditing ? ( <> - @@ -159,7 +161,7 @@ export const AIAgentIntegrationsTab = () => { ) : ( - @@ -196,7 +198,7 @@ export const AIAgentIntegrationsTab = () => { value={displayState.botAppId} /> ) : ( -
+
{displayState.botAppId || '-'}
)} @@ -212,7 +214,7 @@ export const AIAgentIntegrationsTab = () => { value={displayState.botTenantId} /> ) : ( -
+
{displayState.botTenantId || '-'}
)} @@ -234,7 +236,7 @@ export const AIAgentIntegrationsTab = () => { />
) : ( -
+
{displayState.botAppSecretName || '-'}
)} diff --git a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts index bd5238c027..705d04cc56 100644 --- a/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts +++ b/frontend/src/protogen/redpanda/api/dataplane/v1alpha3/ai_agent_pb.ts @@ -639,26 +639,39 @@ export const AIAgent_StateSchema: GenEnum = /*@__PURE__*/ /** * Microsoft Teams bridge configuration for connecting an AI agent to Teams. + * Each agent gets its own Azure Bot registration; the bridge validates + * inbound Bot Framework JWTs against the per-agent bot_app_id as audience. * * @generated from message redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge */ export type AIAgentTeamsBridge = Message<"redpanda.api.dataplane.v1alpha3.AIAgentTeamsBridge"> & { /** + * Whether the Teams bridge is active for this agent. + * * @generated from field: bool enabled = 1; */ enabled: boolean; /** + * Azure Bot registration Application (client) ID. + * * @generated from field: string bot_app_id = 2; */ botAppId: string; /** + * AAD tenant ID the bot registration lives in. + * * @generated from field: string bot_tenant_id = 3; */ botTenantId: string; /** + * Bare secret key in the Redpanda secret store (e.g. "TEAMS_BOT_SECRET"). + * Unlike provider api_key fields which use ${secrets.NAME} template syntax, + * this is a plain identifier — the bridge resolves it directly via the + * tenant-scoped secret store prefix. + * * @generated from field: string bot_app_secret_ref = 4; */ botAppSecretRef: string; diff --git a/proto/gen/openapi/openapi.v1alpha3.json b/proto/gen/openapi/openapi.v1alpha3.json index c5d42ee1bf..bf0d52c804 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.","properties":{"bot_app_id":{"type":"string"},"bot_app_secret_ref":{"type":"string"},"bot_tenant_id":{"type":"string"},"enabled":{"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"},"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 diff --git a/proto/gen/openapi/openapi.v1alpha3.yaml b/proto/gen/openapi/openapi.v1alpha3.yaml index 55995fb3f8..1bc3966230 100644 --- a/proto/gen/openapi/openapi.v1alpha3.yaml +++ b/proto/gen/openapi/openapi.v1alpha3.yaml @@ -181,15 +181,26 @@ components: - service_account type: object AIAgentTeamsBridge: - description: Microsoft Teams bridge configuration for connecting an AI agent to Teams. + description: |- + Microsoft Teams bridge configuration for connecting an AI agent to Teams. + Each agent gets its own Azure Bot registration; the bridge validates + inbound 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"). + Unlike provider api_key fields which use ${secrets.NAME} template syntax, + this is a plain identifier — the bridge resolves it directly via the + tenant-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: diff --git a/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto b/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto index 96e97a3ba9..e4a89a7cfa 100644 --- a/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto +++ b/proto/redpanda/api/dataplane/v1alpha3/ai_agent.proto @@ -303,10 +303,19 @@ message AIAgent { } // Microsoft Teams bridge configuration for connecting an AI agent to Teams. +// Each agent gets its own Azure Bot registration; the bridge validates +// inbound Bot Framework JWTs against the per-agent bot_app_id as audience. message AIAgentTeamsBridge { + // Whether the Teams bridge is active for this agent. bool enabled = 1; + // Azure Bot registration Application (client) ID. string bot_app_id = 2; + // AAD tenant ID the bot registration lives in. string bot_tenant_id = 3; + // Bare secret key in the Redpanda secret store (e.g. "TEAMS_BOT_SECRET"). + // Unlike provider api_key fields which use ${secrets.NAME} template syntax, + // this is a plain identifier — the bridge resolves it directly via the + // tenant-scoped secret store prefix. string bot_app_secret_ref = 4 [ (buf.validate.field).ignore = IGNORE_IF_ZERO_VALUE, (buf.validate.field).string.pattern = "^[A-Za-z_][A-Za-z0-9_]*$"