diff --git a/components/gitpod-protocol/go/gitpod-service.go b/components/gitpod-protocol/go/gitpod-service.go index e276eefde23663..8dc7b1e2af5694 100644 --- a/components/gitpod-protocol/go/gitpod-service.go +++ b/components/gitpod-protocol/go/gitpod-service.go @@ -86,6 +86,7 @@ type APIInterface interface { GetTeam(ctx context.Context, teamID string) (*Team, error) GetTeams(ctx context.Context) ([]*Team, error) + AdminGetTeams(ctx context.Context, options *AdminGetTeamsOptions) (*AdminGetTeamsResult, error) CreateTeam(ctx context.Context, teamName string) (*Team, error) DeleteTeam(ctx context.Context, teamID string) error GetTeamMembers(ctx context.Context, teamID string) ([]*TeamMemberInfo, error) @@ -219,6 +220,8 @@ const ( FunctionGetTeam FunctionName = "getTeam" // FunctionGetTeams is the name of the getTeams function FunctionGetTeams FunctionName = "getTeams" + // FunctionAdminGetTeams is the name of the adminGetTeams function + FunctionAdminGetTeams FunctionName = "adminGetTeams" // FunctionCreateTeam is the name of the createTeam function FunctionCreateTeam FunctionName = "createTeam" // FunctionJoinTeam is the name of the joinTeam function @@ -1440,6 +1443,19 @@ func (gp *APIoverJSONRPC) GetTeams(ctx context.Context) (res []*Team, err error) return } +func (gp *APIoverJSONRPC) AdminGetTeams(ctx context.Context, options *AdminGetTeamsOptions) (res *AdminGetTeamsResult, err error) { + if gp == nil { + err = errNotConnected + return + } + + var _params []interface{} + _params = append(_params, options) + + err = gp.C.Call(ctx, string(FunctionAdminGetTeams), _params, &res) + return +} + func (gp *APIoverJSONRPC) CreateTeam(ctx context.Context, teamName string) (res *Team, err error) { if gp == nil { err = errNotConnected @@ -2247,3 +2263,23 @@ type TeamMembershipInvite struct { InvalidationTime string `json:"invalidationTime,omitempty"` InvitedEmail string `json:"invitedEmail,omitempty"` } + +type Ordering string + +const ( + Ordering_Ascending Ordering = "asc" + Ordering_Descending Ordering = "desc" +) + +type AdminGetTeamsOptions struct { + Offset int `json:"offset,omitempty"` + Limit int `json:"limit,omitempty"` + OrderBy int `json:"orderBy,omitempty"` + Order Ordering `json:"orderDir,omitempty"` + SearchTerm string `json:"searchTerm,omitempty"` +} + +type AdminGetTeamsResult struct { + Total int `json:"total,omitempty"` + Rows []*Team `json:"rows,omitempty"` +} diff --git a/components/gitpod-protocol/go/mock.go b/components/gitpod-protocol/go/mock.go index 4f02c8b8f9159c..0a3803024ee41b 100644 --- a/components/gitpod-protocol/go/mock.go +++ b/components/gitpod-protocol/go/mock.go @@ -67,6 +67,21 @@ func (mr *MockAPIInterfaceMockRecorder) AdminBlockUser(ctx, req interface{}) *go return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AdminBlockUser", reflect.TypeOf((*MockAPIInterface)(nil).AdminBlockUser), ctx, req) } +// AdminGetTeams mocks base method. +func (m *MockAPIInterface) AdminGetTeams(ctx context.Context, options *AdminGetTeamsOptions) (*AdminGetTeamsResult, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AdminGetTeams", ctx, options) + ret0, _ := ret[0].(*AdminGetTeamsResult) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// AdminGetTeams indicates an expected call of AdminGetTeams. +func (mr *MockAPIInterfaceMockRecorder) AdminGetTeams(ctx, options interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AdminGetTeams", reflect.TypeOf((*MockAPIInterface)(nil).AdminGetTeams), ctx, options) +} + // Close mocks base method. func (m *MockAPIInterface) Close() error { m.ctrl.T.Helper() diff --git a/components/public-api/gitpod/experimental/v1/pagination.proto b/components/public-api/gitpod/experimental/v1/pagination.proto index b1bd905a76b783..7ecbec3b70689f 100644 --- a/components/public-api/gitpod/experimental/v1/pagination.proto +++ b/components/public-api/gitpod/experimental/v1/pagination.proto @@ -5,9 +5,9 @@ package gitpod.experimental.v1; option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/experimental/v1"; message Pagination { - // page_size is the maximum number of results we expect + // page_size is the maximum number of results to retrieve per page int32 page_size = 1; - // page_token points to a specific page of the results - string page_token = 2; + // page is the page number of results to retrieve. + string page = 2; } diff --git a/components/public-api/gitpod/experimental/v1/teams.proto b/components/public-api/gitpod/experimental/v1/teams.proto index 098fdb4cae1497..a71a589c2ec7d1 100644 --- a/components/public-api/gitpod/experimental/v1/teams.proto +++ b/components/public-api/gitpod/experimental/v1/teams.proto @@ -4,6 +4,7 @@ package gitpod.experimental.v1; option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/experimental/v1"; +import "gitpod/experimental/v1/pagination.proto"; import "google/protobuf/timestamp.proto"; message Team { @@ -44,7 +45,7 @@ message TeamMember { } enum TeamRole { - // TEAM_ROLE_UNKNOWN is the unkwnon state. + // TEAM_ROLE_UNSPECIFIED is the unkwnon state. TEAM_ROLE_UNSPECIFIED = 0; // TEAM_ROLE_OWNER is the owner of the team. @@ -67,9 +68,12 @@ service TeamsService { // GetTeam retrieves a single Team. rpc GetTeam(GetTeamRequest) returns (GetTeamResponse) {} - // ListTeams lists the caller has access to. + // ListTeams lists teams the caller has access to. rpc ListTeams(ListTeamsRequest) returns (ListTeamsResponse) {}; + // AdminListTeams lists all teams that exist on the installation. Admin permissions are required. + rpc AdminListTeams(AdminListTeamsRequest) returns (AdminListTeamsResponse) {}; + // DeleteTeam deletes the specified team. rpc DeleteTeam(DeleteTeamRequest) returns (DeleteTeamResponse) {}; @@ -112,6 +116,18 @@ message ListTeamsResponse { repeated Team teams = 1; } +message AdminListTeamsRequest { + Pagination pagination = 1; + string order_by = 2; +} + +message AdminListTeamsResponse { + repeated Team teams = 1; + + // total_results is the total number of results available + int32 total_results = 2; +} + message DeleteTeamRequest { // team_id is the ID of the team to delete string team_id = 1; diff --git a/components/public-api/go/experimental/v1/pagination.pb.go b/components/public-api/go/experimental/v1/pagination.pb.go index c399af41643ff9..4675974abb8b72 100644 --- a/components/public-api/go/experimental/v1/pagination.pb.go +++ b/components/public-api/go/experimental/v1/pagination.pb.go @@ -29,10 +29,10 @@ type Pagination struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // page_size is the maximum number of results we expect + // page_size is the maximum number of results to retrieve per page PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // page_token points to a specific page of the results - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // page is the page number of results to retrieve. + Page string `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"` } func (x *Pagination) Reset() { @@ -74,9 +74,9 @@ func (x *Pagination) GetPageSize() int32 { return 0 } -func (x *Pagination) GetPageToken() string { +func (x *Pagination) GetPage() string { if x != nil { - return x.PageToken + return x.Page } return "" } @@ -88,16 +88,15 @@ var file_gitpod_experimental_v1_pagination_proto_rawDesc = []byte{ 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, - 0x31, 0x22, 0x48, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x31, 0x22, 0x3d, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x46, 0x5a, 0x44, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, - 0x2f, 0x67, 0x6f, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, - 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x42, 0x46, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/components/public-api/go/experimental/v1/teams.pb.go b/components/public-api/go/experimental/v1/teams.pb.go index 5c7d7bb9b2107b..4834825c202623 100644 --- a/components/public-api/go/experimental/v1/teams.pb.go +++ b/components/public-api/go/experimental/v1/teams.pb.go @@ -28,7 +28,7 @@ const ( type TeamRole int32 const ( - // TEAM_ROLE_UNKNOWN is the unkwnon state. + // TEAM_ROLE_UNSPECIFIED is the unkwnon state. TeamRole_TEAM_ROLE_UNSPECIFIED TeamRole = 0 // TEAM_ROLE_OWNER is the owner of the team. // A team can have multiple owners, but there must always be at least one owner. @@ -578,6 +578,117 @@ func (x *ListTeamsResponse) GetTeams() []*Team { return nil } +type AdminListTeamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` + OrderBy string `protobuf:"bytes,2,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` +} + +func (x *AdminListTeamsRequest) Reset() { + *x = AdminListTeamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AdminListTeamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AdminListTeamsRequest) ProtoMessage() {} + +func (x *AdminListTeamsRequest) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AdminListTeamsRequest.ProtoReflect.Descriptor instead. +func (*AdminListTeamsRequest) Descriptor() ([]byte, []int) { + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{9} +} + +func (x *AdminListTeamsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +func (x *AdminListTeamsRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + +type AdminListTeamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Teams []*Team `protobuf:"bytes,1,rep,name=teams,proto3" json:"teams,omitempty"` + // total_results is the total number of results available + TotalResults int32 `protobuf:"varint,2,opt,name=total_results,json=totalResults,proto3" json:"total_results,omitempty"` +} + +func (x *AdminListTeamsResponse) Reset() { + *x = AdminListTeamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AdminListTeamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AdminListTeamsResponse) ProtoMessage() {} + +func (x *AdminListTeamsResponse) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AdminListTeamsResponse.ProtoReflect.Descriptor instead. +func (*AdminListTeamsResponse) Descriptor() ([]byte, []int) { + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{10} +} + +func (x *AdminListTeamsResponse) GetTeams() []*Team { + if x != nil { + return x.Teams + } + return nil +} + +func (x *AdminListTeamsResponse) GetTotalResults() int32 { + if x != nil { + return x.TotalResults + } + return 0 +} + type DeleteTeamRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -590,7 +701,7 @@ type DeleteTeamRequest struct { func (x *DeleteTeamRequest) Reset() { *x = DeleteTeamRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[9] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -603,7 +714,7 @@ func (x *DeleteTeamRequest) String() string { func (*DeleteTeamRequest) ProtoMessage() {} func (x *DeleteTeamRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[9] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -616,7 +727,7 @@ func (x *DeleteTeamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamRequest.ProtoReflect.Descriptor instead. func (*DeleteTeamRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{9} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{11} } func (x *DeleteTeamRequest) GetTeamId() string { @@ -635,7 +746,7 @@ type DeleteTeamResponse struct { func (x *DeleteTeamResponse) Reset() { *x = DeleteTeamResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[10] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -648,7 +759,7 @@ func (x *DeleteTeamResponse) String() string { func (*DeleteTeamResponse) ProtoMessage() {} func (x *DeleteTeamResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[10] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -661,7 +772,7 @@ func (x *DeleteTeamResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamResponse.ProtoReflect.Descriptor instead. func (*DeleteTeamResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{10} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{12} } type JoinTeamRequest struct { @@ -676,7 +787,7 @@ type JoinTeamRequest struct { func (x *JoinTeamRequest) Reset() { *x = JoinTeamRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[11] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -689,7 +800,7 @@ func (x *JoinTeamRequest) String() string { func (*JoinTeamRequest) ProtoMessage() {} func (x *JoinTeamRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[11] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -702,7 +813,7 @@ func (x *JoinTeamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinTeamRequest.ProtoReflect.Descriptor instead. func (*JoinTeamRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{11} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{13} } func (x *JoinTeamRequest) GetInvitationId() string { @@ -724,7 +835,7 @@ type JoinTeamResponse struct { func (x *JoinTeamResponse) Reset() { *x = JoinTeamResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[12] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -737,7 +848,7 @@ func (x *JoinTeamResponse) String() string { func (*JoinTeamResponse) ProtoMessage() {} func (x *JoinTeamResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[12] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -750,7 +861,7 @@ func (x *JoinTeamResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinTeamResponse.ProtoReflect.Descriptor instead. func (*JoinTeamResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{12} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{14} } func (x *JoinTeamResponse) GetTeam() *Team { @@ -771,7 +882,7 @@ type ResetTeamInvitationRequest struct { func (x *ResetTeamInvitationRequest) Reset() { *x = ResetTeamInvitationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[13] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -784,7 +895,7 @@ func (x *ResetTeamInvitationRequest) String() string { func (*ResetTeamInvitationRequest) ProtoMessage() {} func (x *ResetTeamInvitationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[13] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -797,7 +908,7 @@ func (x *ResetTeamInvitationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetTeamInvitationRequest.ProtoReflect.Descriptor instead. func (*ResetTeamInvitationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{13} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{15} } func (x *ResetTeamInvitationRequest) GetTeamId() string { @@ -819,7 +930,7 @@ type ResetTeamInvitationResponse struct { func (x *ResetTeamInvitationResponse) Reset() { *x = ResetTeamInvitationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[14] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -832,7 +943,7 @@ func (x *ResetTeamInvitationResponse) String() string { func (*ResetTeamInvitationResponse) ProtoMessage() {} func (x *ResetTeamInvitationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[14] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -845,7 +956,7 @@ func (x *ResetTeamInvitationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetTeamInvitationResponse.ProtoReflect.Descriptor instead. func (*ResetTeamInvitationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{14} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{16} } func (x *ResetTeamInvitationResponse) GetTeamInvitation() *TeamInvitation { @@ -869,7 +980,7 @@ type UpdateTeamMemberRequest struct { func (x *UpdateTeamMemberRequest) Reset() { *x = UpdateTeamMemberRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[15] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -882,7 +993,7 @@ func (x *UpdateTeamMemberRequest) String() string { func (*UpdateTeamMemberRequest) ProtoMessage() {} func (x *UpdateTeamMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[15] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -895,7 +1006,7 @@ func (x *UpdateTeamMemberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamMemberRequest.ProtoReflect.Descriptor instead. func (*UpdateTeamMemberRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{15} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{17} } func (x *UpdateTeamMemberRequest) GetTeamId() string { @@ -923,7 +1034,7 @@ type UpdateTeamMemberResponse struct { func (x *UpdateTeamMemberResponse) Reset() { *x = UpdateTeamMemberResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[16] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -936,7 +1047,7 @@ func (x *UpdateTeamMemberResponse) String() string { func (*UpdateTeamMemberResponse) ProtoMessage() {} func (x *UpdateTeamMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[16] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -949,7 +1060,7 @@ func (x *UpdateTeamMemberResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamMemberResponse.ProtoReflect.Descriptor instead. func (*UpdateTeamMemberResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{16} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{18} } func (x *UpdateTeamMemberResponse) GetTeamMember() *TeamMember { @@ -973,7 +1084,7 @@ type DeleteTeamMemberRequest struct { func (x *DeleteTeamMemberRequest) Reset() { *x = DeleteTeamMemberRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[17] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -986,7 +1097,7 @@ func (x *DeleteTeamMemberRequest) String() string { func (*DeleteTeamMemberRequest) ProtoMessage() {} func (x *DeleteTeamMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[17] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -999,7 +1110,7 @@ func (x *DeleteTeamMemberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamMemberRequest.ProtoReflect.Descriptor instead. func (*DeleteTeamMemberRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{17} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{19} } func (x *DeleteTeamMemberRequest) GetTeamId() string { @@ -1025,7 +1136,7 @@ type DeleteTeamMemberResponse struct { func (x *DeleteTeamMemberResponse) Reset() { *x = DeleteTeamMemberResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[18] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1038,7 +1149,7 @@ func (x *DeleteTeamMemberResponse) String() string { func (*DeleteTeamMemberResponse) ProtoMessage() {} func (x *DeleteTeamMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[18] + mi := &file_gitpod_experimental_v1_teams_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1051,7 +1162,7 @@ func (x *DeleteTeamMemberResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamMemberResponse.ProtoReflect.Descriptor instead. func (*DeleteTeamMemberResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{18} + return file_gitpod_experimental_v1_teams_proto_rawDescGZIP(), []int{20} } var File_gitpod_experimental_v1_teams_proto protoreflect.FileDescriptor @@ -1060,169 +1171,194 @@ var file_gitpod_experimental_v1_teams_proto_rawDesc = []byte{ 0x0a, 0x22, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcd, 0x01, - 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, - 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x3c, - 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x4f, 0x0a, 0x0f, - 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, - 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x01, - 0x0a, 0x0a, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, - 0x6d, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 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, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, - 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, - 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, - 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, - 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x20, 0x0a, 0x0e, 0x54, - 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x27, 0x0a, - 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, - 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x29, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, - 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x12, - 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x47, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x22, 0x2c, 0x0a, 0x11, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x36, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x54, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, - 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x35, 0x0a, - 0x1a, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, - 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, - 0x61, 0x6d, 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, 0x61, - 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x1a, 0x27, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcd, 0x01, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x3c, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x4f, 0x0a, 0x0f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x01, 0x0a, 0x0a, 0x54, 0x65, 0x61, 0x6d, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, + 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x77, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, + 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x73, + 0x69, 0x6e, 0x63, 0x65, 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, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x69, + 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, + 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, + 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x20, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x46, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, + 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x65, + 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, + 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, + 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, + 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x11, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x32, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, + 0x65, 0x61, 0x6d, 0x73, 0x22, 0x76, 0x0a, 0x15, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x71, 0x0a, 0x16, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, + 0x2c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x14, 0x0a, + 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x36, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x10, 0x4a, + 0x6f, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x30, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, + 0x6d, 0x22, 0x35, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x74, 0x65, 0x61, 0x6d, - 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, + 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x74, 0x65, 0x61, 0x6d, 0x5f, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x77, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0b, + 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x22, 0x5f, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, + 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, + 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x22, 0x58, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, + 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x74, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x50, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x6d, + 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x13, 0x0a, 0x0f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x57, 0x4e, + 0x45, 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, + 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x32, 0xe7, 0x07, 0x0a, 0x0c, 0x54, + 0x65, 0x61, 0x6d, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x65, 0x0a, 0x0a, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x0a, 0x74, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x5f, 0x0a, - 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x74, 0x65, 0x61, - 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x0a, 0x74, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x58, - 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, - 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, - 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x65, 0x61, 0x6d, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x50, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x6f, 0x6c, 0x65, - 0x12, 0x19, 0x0a, 0x15, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x54, - 0x45, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x01, - 0x12, 0x14, 0x0a, 0x10, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x45, - 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x32, 0xf4, 0x06, 0x0a, 0x0c, 0x54, 0x65, 0x61, 0x6d, 0x73, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x65, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x62, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x71, 0x0a, 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, - 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x09, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x65, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x29, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, - 0x65, 0x61, 0x6d, 0x12, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, + 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x27, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, - 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, - 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, - 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x10, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x80, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x77, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x10, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, - 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x46, 0x5a, - 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x65, 0x22, 0x00, 0x42, 0x46, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1238,7 +1374,7 @@ func file_gitpod_experimental_v1_teams_proto_rawDescGZIP() []byte { } var file_gitpod_experimental_v1_teams_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_gitpod_experimental_v1_teams_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_gitpod_experimental_v1_teams_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_gitpod_experimental_v1_teams_proto_goTypes = []interface{}{ (TeamRole)(0), // 0: gitpod.experimental.v1.TeamRole (*Team)(nil), // 1: gitpod.experimental.v1.Team @@ -1250,51 +1386,58 @@ var file_gitpod_experimental_v1_teams_proto_goTypes = []interface{}{ (*GetTeamResponse)(nil), // 7: gitpod.experimental.v1.GetTeamResponse (*ListTeamsRequest)(nil), // 8: gitpod.experimental.v1.ListTeamsRequest (*ListTeamsResponse)(nil), // 9: gitpod.experimental.v1.ListTeamsResponse - (*DeleteTeamRequest)(nil), // 10: gitpod.experimental.v1.DeleteTeamRequest - (*DeleteTeamResponse)(nil), // 11: gitpod.experimental.v1.DeleteTeamResponse - (*JoinTeamRequest)(nil), // 12: gitpod.experimental.v1.JoinTeamRequest - (*JoinTeamResponse)(nil), // 13: gitpod.experimental.v1.JoinTeamResponse - (*ResetTeamInvitationRequest)(nil), // 14: gitpod.experimental.v1.ResetTeamInvitationRequest - (*ResetTeamInvitationResponse)(nil), // 15: gitpod.experimental.v1.ResetTeamInvitationResponse - (*UpdateTeamMemberRequest)(nil), // 16: gitpod.experimental.v1.UpdateTeamMemberRequest - (*UpdateTeamMemberResponse)(nil), // 17: gitpod.experimental.v1.UpdateTeamMemberResponse - (*DeleteTeamMemberRequest)(nil), // 18: gitpod.experimental.v1.DeleteTeamMemberRequest - (*DeleteTeamMemberResponse)(nil), // 19: gitpod.experimental.v1.DeleteTeamMemberResponse - (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp + (*AdminListTeamsRequest)(nil), // 10: gitpod.experimental.v1.AdminListTeamsRequest + (*AdminListTeamsResponse)(nil), // 11: gitpod.experimental.v1.AdminListTeamsResponse + (*DeleteTeamRequest)(nil), // 12: gitpod.experimental.v1.DeleteTeamRequest + (*DeleteTeamResponse)(nil), // 13: gitpod.experimental.v1.DeleteTeamResponse + (*JoinTeamRequest)(nil), // 14: gitpod.experimental.v1.JoinTeamRequest + (*JoinTeamResponse)(nil), // 15: gitpod.experimental.v1.JoinTeamResponse + (*ResetTeamInvitationRequest)(nil), // 16: gitpod.experimental.v1.ResetTeamInvitationRequest + (*ResetTeamInvitationResponse)(nil), // 17: gitpod.experimental.v1.ResetTeamInvitationResponse + (*UpdateTeamMemberRequest)(nil), // 18: gitpod.experimental.v1.UpdateTeamMemberRequest + (*UpdateTeamMemberResponse)(nil), // 19: gitpod.experimental.v1.UpdateTeamMemberResponse + (*DeleteTeamMemberRequest)(nil), // 20: gitpod.experimental.v1.DeleteTeamMemberRequest + (*DeleteTeamMemberResponse)(nil), // 21: gitpod.experimental.v1.DeleteTeamMemberResponse + (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*Pagination)(nil), // 23: gitpod.experimental.v1.Pagination } var file_gitpod_experimental_v1_teams_proto_depIdxs = []int32{ 2, // 0: gitpod.experimental.v1.Team.members:type_name -> gitpod.experimental.v1.TeamMember 3, // 1: gitpod.experimental.v1.Team.team_invitation:type_name -> gitpod.experimental.v1.TeamInvitation 0, // 2: gitpod.experimental.v1.TeamMember.role:type_name -> gitpod.experimental.v1.TeamRole - 20, // 3: gitpod.experimental.v1.TeamMember.member_since:type_name -> google.protobuf.Timestamp + 22, // 3: gitpod.experimental.v1.TeamMember.member_since:type_name -> google.protobuf.Timestamp 1, // 4: gitpod.experimental.v1.CreateTeamResponse.team:type_name -> gitpod.experimental.v1.Team 1, // 5: gitpod.experimental.v1.GetTeamResponse.team:type_name -> gitpod.experimental.v1.Team 1, // 6: gitpod.experimental.v1.ListTeamsResponse.teams:type_name -> gitpod.experimental.v1.Team - 1, // 7: gitpod.experimental.v1.JoinTeamResponse.team:type_name -> gitpod.experimental.v1.Team - 3, // 8: gitpod.experimental.v1.ResetTeamInvitationResponse.team_invitation:type_name -> gitpod.experimental.v1.TeamInvitation - 2, // 9: gitpod.experimental.v1.UpdateTeamMemberRequest.team_member:type_name -> gitpod.experimental.v1.TeamMember - 2, // 10: gitpod.experimental.v1.UpdateTeamMemberResponse.team_member:type_name -> gitpod.experimental.v1.TeamMember - 4, // 11: gitpod.experimental.v1.TeamsService.CreateTeam:input_type -> gitpod.experimental.v1.CreateTeamRequest - 6, // 12: gitpod.experimental.v1.TeamsService.GetTeam:input_type -> gitpod.experimental.v1.GetTeamRequest - 8, // 13: gitpod.experimental.v1.TeamsService.ListTeams:input_type -> gitpod.experimental.v1.ListTeamsRequest - 10, // 14: gitpod.experimental.v1.TeamsService.DeleteTeam:input_type -> gitpod.experimental.v1.DeleteTeamRequest - 12, // 15: gitpod.experimental.v1.TeamsService.JoinTeam:input_type -> gitpod.experimental.v1.JoinTeamRequest - 14, // 16: gitpod.experimental.v1.TeamsService.ResetTeamInvitation:input_type -> gitpod.experimental.v1.ResetTeamInvitationRequest - 16, // 17: gitpod.experimental.v1.TeamsService.UpdateTeamMember:input_type -> gitpod.experimental.v1.UpdateTeamMemberRequest - 18, // 18: gitpod.experimental.v1.TeamsService.DeleteTeamMember:input_type -> gitpod.experimental.v1.DeleteTeamMemberRequest - 5, // 19: gitpod.experimental.v1.TeamsService.CreateTeam:output_type -> gitpod.experimental.v1.CreateTeamResponse - 7, // 20: gitpod.experimental.v1.TeamsService.GetTeam:output_type -> gitpod.experimental.v1.GetTeamResponse - 9, // 21: gitpod.experimental.v1.TeamsService.ListTeams:output_type -> gitpod.experimental.v1.ListTeamsResponse - 11, // 22: gitpod.experimental.v1.TeamsService.DeleteTeam:output_type -> gitpod.experimental.v1.DeleteTeamResponse - 13, // 23: gitpod.experimental.v1.TeamsService.JoinTeam:output_type -> gitpod.experimental.v1.JoinTeamResponse - 15, // 24: gitpod.experimental.v1.TeamsService.ResetTeamInvitation:output_type -> gitpod.experimental.v1.ResetTeamInvitationResponse - 17, // 25: gitpod.experimental.v1.TeamsService.UpdateTeamMember:output_type -> gitpod.experimental.v1.UpdateTeamMemberResponse - 19, // 26: gitpod.experimental.v1.TeamsService.DeleteTeamMember:output_type -> gitpod.experimental.v1.DeleteTeamMemberResponse - 19, // [19:27] is the sub-list for method output_type - 11, // [11:19] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 23, // 7: gitpod.experimental.v1.AdminListTeamsRequest.pagination:type_name -> gitpod.experimental.v1.Pagination + 1, // 8: gitpod.experimental.v1.AdminListTeamsResponse.teams:type_name -> gitpod.experimental.v1.Team + 1, // 9: gitpod.experimental.v1.JoinTeamResponse.team:type_name -> gitpod.experimental.v1.Team + 3, // 10: gitpod.experimental.v1.ResetTeamInvitationResponse.team_invitation:type_name -> gitpod.experimental.v1.TeamInvitation + 2, // 11: gitpod.experimental.v1.UpdateTeamMemberRequest.team_member:type_name -> gitpod.experimental.v1.TeamMember + 2, // 12: gitpod.experimental.v1.UpdateTeamMemberResponse.team_member:type_name -> gitpod.experimental.v1.TeamMember + 4, // 13: gitpod.experimental.v1.TeamsService.CreateTeam:input_type -> gitpod.experimental.v1.CreateTeamRequest + 6, // 14: gitpod.experimental.v1.TeamsService.GetTeam:input_type -> gitpod.experimental.v1.GetTeamRequest + 8, // 15: gitpod.experimental.v1.TeamsService.ListTeams:input_type -> gitpod.experimental.v1.ListTeamsRequest + 10, // 16: gitpod.experimental.v1.TeamsService.AdminListTeams:input_type -> gitpod.experimental.v1.AdminListTeamsRequest + 12, // 17: gitpod.experimental.v1.TeamsService.DeleteTeam:input_type -> gitpod.experimental.v1.DeleteTeamRequest + 14, // 18: gitpod.experimental.v1.TeamsService.JoinTeam:input_type -> gitpod.experimental.v1.JoinTeamRequest + 16, // 19: gitpod.experimental.v1.TeamsService.ResetTeamInvitation:input_type -> gitpod.experimental.v1.ResetTeamInvitationRequest + 18, // 20: gitpod.experimental.v1.TeamsService.UpdateTeamMember:input_type -> gitpod.experimental.v1.UpdateTeamMemberRequest + 20, // 21: gitpod.experimental.v1.TeamsService.DeleteTeamMember:input_type -> gitpod.experimental.v1.DeleteTeamMemberRequest + 5, // 22: gitpod.experimental.v1.TeamsService.CreateTeam:output_type -> gitpod.experimental.v1.CreateTeamResponse + 7, // 23: gitpod.experimental.v1.TeamsService.GetTeam:output_type -> gitpod.experimental.v1.GetTeamResponse + 9, // 24: gitpod.experimental.v1.TeamsService.ListTeams:output_type -> gitpod.experimental.v1.ListTeamsResponse + 11, // 25: gitpod.experimental.v1.TeamsService.AdminListTeams:output_type -> gitpod.experimental.v1.AdminListTeamsResponse + 13, // 26: gitpod.experimental.v1.TeamsService.DeleteTeam:output_type -> gitpod.experimental.v1.DeleteTeamResponse + 15, // 27: gitpod.experimental.v1.TeamsService.JoinTeam:output_type -> gitpod.experimental.v1.JoinTeamResponse + 17, // 28: gitpod.experimental.v1.TeamsService.ResetTeamInvitation:output_type -> gitpod.experimental.v1.ResetTeamInvitationResponse + 19, // 29: gitpod.experimental.v1.TeamsService.UpdateTeamMember:output_type -> gitpod.experimental.v1.UpdateTeamMemberResponse + 21, // 30: gitpod.experimental.v1.TeamsService.DeleteTeamMember:output_type -> gitpod.experimental.v1.DeleteTeamMemberResponse + 22, // [22:31] is the sub-list for method output_type + 13, // [13:22] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name } func init() { file_gitpod_experimental_v1_teams_proto_init() } @@ -1302,6 +1445,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { if File_gitpod_experimental_v1_teams_proto != nil { return } + file_gitpod_experimental_v1_pagination_proto_init() if !protoimpl.UnsafeEnabled { file_gitpod_experimental_v1_teams_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Team); i { @@ -1412,7 +1556,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTeamRequest); i { + switch v := v.(*AdminListTeamsRequest); i { case 0: return &v.state case 1: @@ -1424,7 +1568,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTeamResponse); i { + switch v := v.(*AdminListTeamsResponse); i { case 0: return &v.state case 1: @@ -1436,7 +1580,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinTeamRequest); i { + switch v := v.(*DeleteTeamRequest); i { case 0: return &v.state case 1: @@ -1448,7 +1592,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinTeamResponse); i { + switch v := v.(*DeleteTeamResponse); i { case 0: return &v.state case 1: @@ -1460,7 +1604,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetTeamInvitationRequest); i { + switch v := v.(*JoinTeamRequest); i { case 0: return &v.state case 1: @@ -1472,7 +1616,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetTeamInvitationResponse); i { + switch v := v.(*JoinTeamResponse); i { case 0: return &v.state case 1: @@ -1484,7 +1628,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTeamMemberRequest); i { + switch v := v.(*ResetTeamInvitationRequest); i { case 0: return &v.state case 1: @@ -1496,7 +1640,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTeamMemberResponse); i { + switch v := v.(*ResetTeamInvitationResponse); i { case 0: return &v.state case 1: @@ -1508,7 +1652,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTeamMemberRequest); i { + switch v := v.(*UpdateTeamMemberRequest); i { case 0: return &v.state case 1: @@ -1520,6 +1664,30 @@ func file_gitpod_experimental_v1_teams_proto_init() { } } file_gitpod_experimental_v1_teams_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateTeamMemberResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_experimental_v1_teams_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteTeamMemberRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_experimental_v1_teams_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteTeamMemberResponse); i { case 0: return &v.state @@ -1538,7 +1706,7 @@ func file_gitpod_experimental_v1_teams_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gitpod_experimental_v1_teams_proto_rawDesc, NumEnums: 1, - NumMessages: 19, + NumMessages: 21, NumExtensions: 0, NumServices: 1, }, diff --git a/components/public-api/go/experimental/v1/teams_grpc.pb.go b/components/public-api/go/experimental/v1/teams_grpc.pb.go index c2700a951301c2..50a2a2f95e95cd 100644 --- a/components/public-api/go/experimental/v1/teams_grpc.pb.go +++ b/components/public-api/go/experimental/v1/teams_grpc.pb.go @@ -30,8 +30,10 @@ type TeamsServiceClient interface { CreateTeam(ctx context.Context, in *CreateTeamRequest, opts ...grpc.CallOption) (*CreateTeamResponse, error) // GetTeam retrieves a single Team. GetTeam(ctx context.Context, in *GetTeamRequest, opts ...grpc.CallOption) (*GetTeamResponse, error) - // ListTeams lists the caller has access to. + // ListTeams lists teams the caller has access to. ListTeams(ctx context.Context, in *ListTeamsRequest, opts ...grpc.CallOption) (*ListTeamsResponse, error) + // AdminListTeams lists all teams that exist on the installation. Admin permissions are required. + AdminListTeams(ctx context.Context, in *AdminListTeamsRequest, opts ...grpc.CallOption) (*AdminListTeamsResponse, error) // DeleteTeam deletes the specified team. DeleteTeam(ctx context.Context, in *DeleteTeamRequest, opts ...grpc.CallOption) (*DeleteTeamResponse, error) // JoinTeam makes the caller a TeamMember of the Team. @@ -79,6 +81,15 @@ func (c *teamsServiceClient) ListTeams(ctx context.Context, in *ListTeamsRequest return out, nil } +func (c *teamsServiceClient) AdminListTeams(ctx context.Context, in *AdminListTeamsRequest, opts ...grpc.CallOption) (*AdminListTeamsResponse, error) { + out := new(AdminListTeamsResponse) + err := c.cc.Invoke(ctx, "/gitpod.experimental.v1.TeamsService/AdminListTeams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *teamsServiceClient) DeleteTeam(ctx context.Context, in *DeleteTeamRequest, opts ...grpc.CallOption) (*DeleteTeamResponse, error) { out := new(DeleteTeamResponse) err := c.cc.Invoke(ctx, "/gitpod.experimental.v1.TeamsService/DeleteTeam", in, out, opts...) @@ -132,8 +143,10 @@ type TeamsServiceServer interface { CreateTeam(context.Context, *CreateTeamRequest) (*CreateTeamResponse, error) // GetTeam retrieves a single Team. GetTeam(context.Context, *GetTeamRequest) (*GetTeamResponse, error) - // ListTeams lists the caller has access to. + // ListTeams lists teams the caller has access to. ListTeams(context.Context, *ListTeamsRequest) (*ListTeamsResponse, error) + // AdminListTeams lists all teams that exist on the installation. Admin permissions are required. + AdminListTeams(context.Context, *AdminListTeamsRequest) (*AdminListTeamsResponse, error) // DeleteTeam deletes the specified team. DeleteTeam(context.Context, *DeleteTeamRequest) (*DeleteTeamResponse, error) // JoinTeam makes the caller a TeamMember of the Team. @@ -160,6 +173,9 @@ func (UnimplementedTeamsServiceServer) GetTeam(context.Context, *GetTeamRequest) func (UnimplementedTeamsServiceServer) ListTeams(context.Context, *ListTeamsRequest) (*ListTeamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTeams not implemented") } +func (UnimplementedTeamsServiceServer) AdminListTeams(context.Context, *AdminListTeamsRequest) (*AdminListTeamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AdminListTeams not implemented") +} func (UnimplementedTeamsServiceServer) DeleteTeam(context.Context, *DeleteTeamRequest) (*DeleteTeamResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteTeam not implemented") } @@ -242,6 +258,24 @@ func _TeamsService_ListTeams_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _TeamsService_AdminListTeams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AdminListTeamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TeamsServiceServer).AdminListTeams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gitpod.experimental.v1.TeamsService/AdminListTeams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TeamsServiceServer).AdminListTeams(ctx, req.(*AdminListTeamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _TeamsService_DeleteTeam_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteTeamRequest) if err := dec(in); err != nil { @@ -351,6 +385,10 @@ var TeamsService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListTeams", Handler: _TeamsService_ListTeams_Handler, }, + { + MethodName: "AdminListTeams", + Handler: _TeamsService_AdminListTeams_Handler, + }, { MethodName: "DeleteTeam", Handler: _TeamsService_DeleteTeam_Handler, diff --git a/components/public-api/go/experimental/v1/v1connect/teams.connect.go b/components/public-api/go/experimental/v1/v1connect/teams.connect.go index 0cd50e6dd97cb1..0d69a9ae97af3c 100644 --- a/components/public-api/go/experimental/v1/v1connect/teams.connect.go +++ b/components/public-api/go/experimental/v1/v1connect/teams.connect.go @@ -35,8 +35,10 @@ type TeamsServiceClient interface { CreateTeam(context.Context, *connect_go.Request[v1.CreateTeamRequest]) (*connect_go.Response[v1.CreateTeamResponse], error) // GetTeam retrieves a single Team. GetTeam(context.Context, *connect_go.Request[v1.GetTeamRequest]) (*connect_go.Response[v1.GetTeamResponse], error) - // ListTeams lists the caller has access to. + // ListTeams lists teams the caller has access to. ListTeams(context.Context, *connect_go.Request[v1.ListTeamsRequest]) (*connect_go.Response[v1.ListTeamsResponse], error) + // AdminListTeams lists all teams that exist on the installation. Admin permissions are required. + AdminListTeams(context.Context, *connect_go.Request[v1.AdminListTeamsRequest]) (*connect_go.Response[v1.AdminListTeamsResponse], error) // DeleteTeam deletes the specified team. DeleteTeam(context.Context, *connect_go.Request[v1.DeleteTeamRequest]) (*connect_go.Response[v1.DeleteTeamResponse], error) // JoinTeam makes the caller a TeamMember of the Team. @@ -74,6 +76,11 @@ func NewTeamsServiceClient(httpClient connect_go.HTTPClient, baseURL string, opt baseURL+"/gitpod.experimental.v1.TeamsService/ListTeams", opts..., ), + adminListTeams: connect_go.NewClient[v1.AdminListTeamsRequest, v1.AdminListTeamsResponse]( + httpClient, + baseURL+"/gitpod.experimental.v1.TeamsService/AdminListTeams", + opts..., + ), deleteTeam: connect_go.NewClient[v1.DeleteTeamRequest, v1.DeleteTeamResponse]( httpClient, baseURL+"/gitpod.experimental.v1.TeamsService/DeleteTeam", @@ -107,6 +114,7 @@ type teamsServiceClient struct { createTeam *connect_go.Client[v1.CreateTeamRequest, v1.CreateTeamResponse] getTeam *connect_go.Client[v1.GetTeamRequest, v1.GetTeamResponse] listTeams *connect_go.Client[v1.ListTeamsRequest, v1.ListTeamsResponse] + adminListTeams *connect_go.Client[v1.AdminListTeamsRequest, v1.AdminListTeamsResponse] deleteTeam *connect_go.Client[v1.DeleteTeamRequest, v1.DeleteTeamResponse] joinTeam *connect_go.Client[v1.JoinTeamRequest, v1.JoinTeamResponse] resetTeamInvitation *connect_go.Client[v1.ResetTeamInvitationRequest, v1.ResetTeamInvitationResponse] @@ -129,6 +137,11 @@ func (c *teamsServiceClient) ListTeams(ctx context.Context, req *connect_go.Requ return c.listTeams.CallUnary(ctx, req) } +// AdminListTeams calls gitpod.experimental.v1.TeamsService.AdminListTeams. +func (c *teamsServiceClient) AdminListTeams(ctx context.Context, req *connect_go.Request[v1.AdminListTeamsRequest]) (*connect_go.Response[v1.AdminListTeamsResponse], error) { + return c.adminListTeams.CallUnary(ctx, req) +} + // DeleteTeam calls gitpod.experimental.v1.TeamsService.DeleteTeam. func (c *teamsServiceClient) DeleteTeam(ctx context.Context, req *connect_go.Request[v1.DeleteTeamRequest]) (*connect_go.Response[v1.DeleteTeamResponse], error) { return c.deleteTeam.CallUnary(ctx, req) @@ -160,8 +173,10 @@ type TeamsServiceHandler interface { CreateTeam(context.Context, *connect_go.Request[v1.CreateTeamRequest]) (*connect_go.Response[v1.CreateTeamResponse], error) // GetTeam retrieves a single Team. GetTeam(context.Context, *connect_go.Request[v1.GetTeamRequest]) (*connect_go.Response[v1.GetTeamResponse], error) - // ListTeams lists the caller has access to. + // ListTeams lists teams the caller has access to. ListTeams(context.Context, *connect_go.Request[v1.ListTeamsRequest]) (*connect_go.Response[v1.ListTeamsResponse], error) + // AdminListTeams lists all teams that exist on the installation. Admin permissions are required. + AdminListTeams(context.Context, *connect_go.Request[v1.AdminListTeamsRequest]) (*connect_go.Response[v1.AdminListTeamsResponse], error) // DeleteTeam deletes the specified team. DeleteTeam(context.Context, *connect_go.Request[v1.DeleteTeamRequest]) (*connect_go.Response[v1.DeleteTeamResponse], error) // JoinTeam makes the caller a TeamMember of the Team. @@ -196,6 +211,11 @@ func NewTeamsServiceHandler(svc TeamsServiceHandler, opts ...connect_go.HandlerO svc.ListTeams, opts..., )) + mux.Handle("/gitpod.experimental.v1.TeamsService/AdminListTeams", connect_go.NewUnaryHandler( + "/gitpod.experimental.v1.TeamsService/AdminListTeams", + svc.AdminListTeams, + opts..., + )) mux.Handle("/gitpod.experimental.v1.TeamsService/DeleteTeam", connect_go.NewUnaryHandler( "/gitpod.experimental.v1.TeamsService/DeleteTeam", svc.DeleteTeam, @@ -239,6 +259,10 @@ func (UnimplementedTeamsServiceHandler) ListTeams(context.Context, *connect_go.R return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v1.TeamsService.ListTeams is not implemented")) } +func (UnimplementedTeamsServiceHandler) AdminListTeams(context.Context, *connect_go.Request[v1.AdminListTeamsRequest]) (*connect_go.Response[v1.AdminListTeamsResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v1.TeamsService.AdminListTeams is not implemented")) +} + func (UnimplementedTeamsServiceHandler) DeleteTeam(context.Context, *connect_go.Request[v1.DeleteTeamRequest]) (*connect_go.Response[v1.DeleteTeamResponse], error) { return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v1.TeamsService.DeleteTeam is not implemented")) } diff --git a/components/public-api/typescript/src/gitpod/experimental/v1/pagination_pb.ts b/components/public-api/typescript/src/gitpod/experimental/v1/pagination_pb.ts index fae5519d00f536..9c9f84ead0c11c 100644 --- a/components/public-api/typescript/src/gitpod/experimental/v1/pagination_pb.ts +++ b/components/public-api/typescript/src/gitpod/experimental/v1/pagination_pb.ts @@ -17,18 +17,18 @@ import {Message, proto3} from "@bufbuild/protobuf"; */ export class Pagination extends Message { /** - * page_size is the maximum number of results we expect + * page_size is the maximum number of results to retrieve per page * * @generated from field: int32 page_size = 1; */ pageSize = 0; /** - * page_token points to a specific page of the results + * page is the page number of results to retrieve. * - * @generated from field: string page_token = 2; + * @generated from field: string page = 2; */ - pageToken = ""; + page = ""; constructor(data?: PartialMessage) { super(); @@ -39,7 +39,7 @@ export class Pagination extends Message { static readonly typeName = "gitpod.experimental.v1.Pagination"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "page_size", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, - { no: 2, name: "page_token", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "page", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Pagination { diff --git a/components/public-api/typescript/src/gitpod/experimental/v1/teams_connectweb.ts b/components/public-api/typescript/src/gitpod/experimental/v1/teams_connectweb.ts index 49b3b41387fdec..efce8088f613f4 100644 --- a/components/public-api/typescript/src/gitpod/experimental/v1/teams_connectweb.ts +++ b/components/public-api/typescript/src/gitpod/experimental/v1/teams_connectweb.ts @@ -9,7 +9,7 @@ /* eslint-disable */ /* @ts-nocheck */ -import {CreateTeamRequest, CreateTeamResponse, DeleteTeamMemberRequest, DeleteTeamMemberResponse, DeleteTeamRequest, DeleteTeamResponse, GetTeamRequest, GetTeamResponse, JoinTeamRequest, JoinTeamResponse, ListTeamsRequest, ListTeamsResponse, ResetTeamInvitationRequest, ResetTeamInvitationResponse, UpdateTeamMemberRequest, UpdateTeamMemberResponse} from "./teams_pb.js"; +import {AdminListTeamsRequest, AdminListTeamsResponse, CreateTeamRequest, CreateTeamResponse, DeleteTeamMemberRequest, DeleteTeamMemberResponse, DeleteTeamRequest, DeleteTeamResponse, GetTeamRequest, GetTeamResponse, JoinTeamRequest, JoinTeamResponse, ListTeamsRequest, ListTeamsResponse, ResetTeamInvitationRequest, ResetTeamInvitationResponse, UpdateTeamMemberRequest, UpdateTeamMemberResponse} from "./teams_pb.js"; import {MethodKind} from "@bufbuild/protobuf"; /** @@ -41,7 +41,7 @@ export const TeamsService = { kind: MethodKind.Unary, }, /** - * ListTeams lists the caller has access to. + * ListTeams lists teams the caller has access to. * * @generated from rpc gitpod.experimental.v1.TeamsService.ListTeams */ @@ -51,6 +51,17 @@ export const TeamsService = { O: ListTeamsResponse, kind: MethodKind.Unary, }, + /** + * AdminListTeams lists all teams that exist on the installation. Admin permissions are required. + * + * @generated from rpc gitpod.experimental.v1.TeamsService.AdminListTeams + */ + adminListTeams: { + name: "AdminListTeams", + I: AdminListTeamsRequest, + O: AdminListTeamsResponse, + kind: MethodKind.Unary, + }, /** * DeleteTeam deletes the specified team. * diff --git a/components/public-api/typescript/src/gitpod/experimental/v1/teams_pb.ts b/components/public-api/typescript/src/gitpod/experimental/v1/teams_pb.ts index 96dad63697b908..9d5998ab621473 100644 --- a/components/public-api/typescript/src/gitpod/experimental/v1/teams_pb.ts +++ b/components/public-api/typescript/src/gitpod/experimental/v1/teams_pb.ts @@ -11,13 +11,14 @@ import type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage} from "@bufbuild/protobuf"; import {Message, proto3, Timestamp} from "@bufbuild/protobuf"; +import {Pagination} from "./pagination_pb.js"; /** * @generated from enum gitpod.experimental.v1.TeamRole */ export enum TeamRole { /** - * TEAM_ROLE_UNKNOWN is the unkwnon state. + * TEAM_ROLE_UNSPECIFIED is the unkwnon state. * * @generated from enum value: TEAM_ROLE_UNSPECIFIED = 0; */ @@ -456,6 +457,94 @@ export class ListTeamsResponse extends Message { } } +/** + * @generated from message gitpod.experimental.v1.AdminListTeamsRequest + */ +export class AdminListTeamsRequest extends Message { + /** + * @generated from field: gitpod.experimental.v1.Pagination pagination = 1; + */ + pagination?: Pagination; + + /** + * @generated from field: string order_by = 2; + */ + orderBy = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime = proto3; + static readonly typeName = "gitpod.experimental.v1.AdminListTeamsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "pagination", kind: "message", T: Pagination }, + { no: 2, name: "order_by", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AdminListTeamsRequest { + return new AdminListTeamsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AdminListTeamsRequest { + return new AdminListTeamsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AdminListTeamsRequest { + return new AdminListTeamsRequest().fromJsonString(jsonString, options); + } + + static equals(a: AdminListTeamsRequest | PlainMessage | undefined, b: AdminListTeamsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(AdminListTeamsRequest, a, b); + } +} + +/** + * @generated from message gitpod.experimental.v1.AdminListTeamsResponse + */ +export class AdminListTeamsResponse extends Message { + /** + * @generated from field: repeated gitpod.experimental.v1.Team teams = 1; + */ + teams: Team[] = []; + + /** + * total_results is the total number of results available + * + * @generated from field: int32 total_results = 2; + */ + totalResults = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime = proto3; + static readonly typeName = "gitpod.experimental.v1.AdminListTeamsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "teams", kind: "message", T: Team, repeated: true }, + { no: 2, name: "total_results", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AdminListTeamsResponse { + return new AdminListTeamsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AdminListTeamsResponse { + return new AdminListTeamsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AdminListTeamsResponse { + return new AdminListTeamsResponse().fromJsonString(jsonString, options); + } + + static equals(a: AdminListTeamsResponse | PlainMessage | undefined, b: AdminListTeamsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(AdminListTeamsResponse, a, b); + } +} + /** * @generated from message gitpod.experimental.v1.DeleteTeamRequest */