diff --git a/.changeset/red-insects-explode.md b/.changeset/red-insects-explode.md new file mode 100644 index 00000000..45db0264 --- /dev/null +++ b/.changeset/red-insects-explode.md @@ -0,0 +1,5 @@ +--- +"@common-fate/sdk": minor +--- + +Added RPC for deleting a user. diff --git a/gen/commonfate/control/directory/v1alpha1/directory.pb.go b/gen/commonfate/control/directory/v1alpha1/directory.pb.go index d5c02067..262e961c 100644 --- a/gen/commonfate/control/directory/v1alpha1/directory.pb.go +++ b/gen/commonfate/control/directory/v1alpha1/directory.pb.go @@ -8,6 +8,7 @@ package directoryv1alpha1 import ( _ "github.com/common-fate/sdk/gen/buf/validate" + _ "github.com/common-fate/sdk/gen/commonfate/access/v1alpha1" _ "github.com/common-fate/sdk/gen/commonfate/authz/v1alpha1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -136,6 +137,91 @@ func (x *QueryUsersResponse) GetTotalUserCount() int32 { return 0 } +type DeleteUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *DeleteUserRequest) Reset() { + *x = DeleteUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteUserRequest) ProtoMessage() {} + +func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteUserRequest.ProtoReflect.Descriptor instead. +func (*DeleteUserRequest) Descriptor() ([]byte, []int) { + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{2} +} + +func (x *DeleteUserRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type DeleteUserResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteUserResponse) Reset() { + *x = DeleteUserResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteUserResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteUserResponse) ProtoMessage() {} + +func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[3] + 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 DeleteUserResponse.ProtoReflect.Descriptor instead. +func (*DeleteUserResponse) Descriptor() ([]byte, []int) { + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{3} +} + type GetUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -147,7 +233,7 @@ type GetUserRequest struct { func (x *GetUserRequest) Reset() { *x = GetUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[2] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -160,7 +246,7 @@ func (x *GetUserRequest) String() string { func (*GetUserRequest) ProtoMessage() {} func (x *GetUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[2] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -173,7 +259,7 @@ func (x *GetUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserRequest.ProtoReflect.Descriptor instead. func (*GetUserRequest) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{2} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{4} } func (x *GetUserRequest) GetId() string { @@ -194,7 +280,7 @@ type GetUserResponse struct { func (x *GetUserResponse) Reset() { *x = GetUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[3] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -207,7 +293,7 @@ func (x *GetUserResponse) String() string { func (*GetUserResponse) ProtoMessage() {} func (x *GetUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[3] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -220,7 +306,7 @@ func (x *GetUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserResponse.ProtoReflect.Descriptor instead. func (*GetUserResponse) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{3} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{5} } func (x *GetUserResponse) GetUser() *User { @@ -242,7 +328,7 @@ type QueryGroupsRequest struct { func (x *QueryGroupsRequest) Reset() { *x = QueryGroupsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[4] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -255,7 +341,7 @@ func (x *QueryGroupsRequest) String() string { func (*QueryGroupsRequest) ProtoMessage() {} func (x *QueryGroupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[4] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -268,7 +354,7 @@ func (x *QueryGroupsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryGroupsRequest.ProtoReflect.Descriptor instead. func (*QueryGroupsRequest) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{4} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{6} } func (x *QueryGroupsRequest) GetPageToken() string { @@ -294,7 +380,7 @@ type QueryGroupsResponse struct { func (x *QueryGroupsResponse) Reset() { *x = QueryGroupsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[5] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -307,7 +393,7 @@ func (x *QueryGroupsResponse) String() string { func (*QueryGroupsResponse) ProtoMessage() {} func (x *QueryGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[5] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -320,7 +406,7 @@ func (x *QueryGroupsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryGroupsResponse.ProtoReflect.Descriptor instead. func (*QueryGroupsResponse) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{5} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{7} } func (x *QueryGroupsResponse) GetGroups() []*Group { @@ -360,7 +446,7 @@ type GetGroupRequest struct { func (x *GetGroupRequest) Reset() { *x = GetGroupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[6] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -373,7 +459,7 @@ func (x *GetGroupRequest) String() string { func (*GetGroupRequest) ProtoMessage() {} func (x *GetGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[6] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -386,7 +472,7 @@ func (x *GetGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupRequest.ProtoReflect.Descriptor instead. func (*GetGroupRequest) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{6} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{8} } func (x *GetGroupRequest) GetId() string { @@ -414,7 +500,7 @@ type GetGroupResponse struct { func (x *GetGroupResponse) Reset() { *x = GetGroupResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[7] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -427,7 +513,7 @@ func (x *GetGroupResponse) String() string { func (*GetGroupResponse) ProtoMessage() {} func (x *GetGroupResponse) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[7] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -440,7 +526,7 @@ func (x *GetGroupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupResponse.ProtoReflect.Descriptor instead. func (*GetGroupResponse) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{7} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{9} } func (x *GetGroupResponse) GetGroup() *Group { @@ -468,7 +554,7 @@ type QueryGroupMembersRequest struct { func (x *QueryGroupMembersRequest) Reset() { *x = QueryGroupMembersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[8] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -481,7 +567,7 @@ func (x *QueryGroupMembersRequest) String() string { func (*QueryGroupMembersRequest) ProtoMessage() {} func (x *QueryGroupMembersRequest) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[8] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -494,7 +580,7 @@ func (x *QueryGroupMembersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryGroupMembersRequest.ProtoReflect.Descriptor instead. func (*QueryGroupMembersRequest) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{8} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{10} } func (x *QueryGroupMembersRequest) GetGroupId() string { @@ -532,7 +618,7 @@ type QueryGroupMembersResponse struct { func (x *QueryGroupMembersResponse) Reset() { *x = QueryGroupMembersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[9] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -545,7 +631,7 @@ func (x *QueryGroupMembersResponse) String() string { func (*QueryGroupMembersResponse) ProtoMessage() {} func (x *QueryGroupMembersResponse) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[9] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -558,7 +644,7 @@ func (x *QueryGroupMembersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryGroupMembersResponse.ProtoReflect.Descriptor instead. func (*QueryGroupMembersResponse) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{9} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{11} } func (x *QueryGroupMembersResponse) GetMembers() []*GroupMembership { @@ -586,7 +672,7 @@ type GroupMembership struct { func (x *GroupMembership) Reset() { *x = GroupMembership{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[10] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -599,7 +685,7 @@ func (x *GroupMembership) String() string { func (*GroupMembership) ProtoMessage() {} func (x *GroupMembership) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[10] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -612,7 +698,7 @@ func (x *GroupMembership) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMembership.ProtoReflect.Descriptor instead. func (*GroupMembership) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{10} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{12} } func (x *GroupMembership) GetUser() *User { @@ -640,7 +726,7 @@ type QueryChildGroupsRequest struct { func (x *QueryChildGroupsRequest) Reset() { *x = QueryChildGroupsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[11] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -653,7 +739,7 @@ func (x *QueryChildGroupsRequest) String() string { func (*QueryChildGroupsRequest) ProtoMessage() {} func (x *QueryChildGroupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[11] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -666,7 +752,7 @@ func (x *QueryChildGroupsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryChildGroupsRequest.ProtoReflect.Descriptor instead. func (*QueryChildGroupsRequest) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{11} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{13} } func (x *QueryChildGroupsRequest) GetGroupId() string { @@ -704,7 +790,7 @@ type QueryChildGroupsResponse struct { func (x *QueryChildGroupsResponse) Reset() { *x = QueryChildGroupsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[12] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -717,7 +803,7 @@ func (x *QueryChildGroupsResponse) String() string { func (*QueryChildGroupsResponse) ProtoMessage() {} func (x *QueryChildGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[12] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -730,7 +816,7 @@ func (x *QueryChildGroupsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryChildGroupsResponse.ProtoReflect.Descriptor instead. func (*QueryChildGroupsResponse) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{12} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{14} } func (x *QueryChildGroupsResponse) GetChildGroups() []*ChildGroupMembership { @@ -758,7 +844,7 @@ type ChildGroupMembership struct { func (x *ChildGroupMembership) Reset() { *x = ChildGroupMembership{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[13] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -771,7 +857,7 @@ func (x *ChildGroupMembership) String() string { func (*ChildGroupMembership) ProtoMessage() {} func (x *ChildGroupMembership) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[13] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -784,7 +870,7 @@ func (x *ChildGroupMembership) ProtoReflect() protoreflect.Message { // Deprecated: Use ChildGroupMembership.ProtoReflect.Descriptor instead. func (*ChildGroupMembership) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{13} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{15} } func (x *ChildGroupMembership) GetGroup() *Group { @@ -808,7 +894,7 @@ type QueryGroupsForUserRequest struct { func (x *QueryGroupsForUserRequest) Reset() { *x = QueryGroupsForUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[14] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -821,7 +907,7 @@ func (x *QueryGroupsForUserRequest) String() string { func (*QueryGroupsForUserRequest) ProtoMessage() {} func (x *QueryGroupsForUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[14] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -834,7 +920,7 @@ func (x *QueryGroupsForUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryGroupsForUserRequest.ProtoReflect.Descriptor instead. func (*QueryGroupsForUserRequest) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{14} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{16} } func (x *QueryGroupsForUserRequest) GetUserId() string { @@ -865,7 +951,7 @@ type QueryGroupsForUserResponse struct { func (x *QueryGroupsForUserResponse) Reset() { *x = QueryGroupsForUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[15] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -878,7 +964,7 @@ func (x *QueryGroupsForUserResponse) String() string { func (*QueryGroupsForUserResponse) ProtoMessage() {} func (x *QueryGroupsForUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[15] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -891,7 +977,7 @@ func (x *QueryGroupsForUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryGroupsForUserResponse.ProtoReflect.Descriptor instead. func (*QueryGroupsForUserResponse) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{15} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{17} } func (x *QueryGroupsForUserResponse) GetMemberships() []*UserGroupMembership { @@ -919,7 +1005,7 @@ type UserGroupMembership struct { func (x *UserGroupMembership) Reset() { *x = UserGroupMembership{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[16] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -932,7 +1018,7 @@ func (x *UserGroupMembership) String() string { func (*UserGroupMembership) ProtoMessage() {} func (x *UserGroupMembership) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[16] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -945,7 +1031,7 @@ func (x *UserGroupMembership) ProtoReflect() protoreflect.Message { // Deprecated: Use UserGroupMembership.ProtoReflect.Descriptor instead. func (*UserGroupMembership) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{16} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{18} } func (x *UserGroupMembership) GetGroup() *Group { @@ -971,7 +1057,7 @@ type LookupUserAccountRequest struct { func (x *LookupUserAccountRequest) Reset() { *x = LookupUserAccountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[17] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -984,7 +1070,7 @@ func (x *LookupUserAccountRequest) String() string { func (*LookupUserAccountRequest) ProtoMessage() {} func (x *LookupUserAccountRequest) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[17] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -997,7 +1083,7 @@ func (x *LookupUserAccountRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupUserAccountRequest.ProtoReflect.Descriptor instead. func (*LookupUserAccountRequest) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{17} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{19} } func (x *LookupUserAccountRequest) GetUserAccountId() string { @@ -1026,7 +1112,7 @@ type LookupUserAccountResponse struct { func (x *LookupUserAccountResponse) Reset() { *x = LookupUserAccountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[18] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1039,7 +1125,7 @@ func (x *LookupUserAccountResponse) String() string { func (*LookupUserAccountResponse) ProtoMessage() {} func (x *LookupUserAccountResponse) ProtoReflect() protoreflect.Message { - mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[18] + mi := &file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1052,7 +1138,7 @@ func (x *LookupUserAccountResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupUserAccountResponse.ProtoReflect.Descriptor instead. func (*LookupUserAccountResponse) Descriptor() ([]byte, []int) { - return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{18} + return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP(), []int{20} } func (x *LookupUserAccountResponse) GetUser() *User { @@ -1070,243 +1156,258 @@ var file_commonfate_control_directory_v1alpha1_directory_proto_rawDesc = []byte{ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x30, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x31, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2f, - 0x61, 0x75, 0x74, 0x68, 0x7a, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, - 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x32, 0x0a, 0x11, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0xa9, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, - 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 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, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x52, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x33, 0x0a, 0x12, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0xaf, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 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, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x51, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x84, 0x01, 0x0a, - 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 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, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x50, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x2b, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x69, 0x61, 0x67, 0x6e, + 0x6f, 0x73, 0x74, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x75, 0x74, + 0x68, 0x7a, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x62, 0x75, 0x66, + 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x32, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa9, 0x01, 0x0a, + 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, - 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x0a, 0x0f, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x3f, - 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, - 0x83, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, - 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, - 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 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, 0x22, 0xa2, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, - 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, - 0x70, 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, 0x5a, 0x0a, 0x14, 0x43, 0x68, - 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x12, 0x42, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x5c, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x68, 0x69, 0x70, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 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, 0x59, 0x0a, 0x13, 0x55, 0x73, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x05, 0x75, 0x73, 0x65, 0x72, 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, 0x12, 0x28, + 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, + 0x73, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x23, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x14, 0x0a, + 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x52, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, + 0x65, 0x72, 0x22, 0x33, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x44, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, + 0x72, 0x6f, 0x75, 0x70, 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, 0x12, 0x2a, 0x0a, + 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x51, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x22, 0x69, 0x0a, 0x18, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x55, 0x73, - 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x5c, 0x0a, 0x19, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x6d, + 0x72, 0x6f, 0x75, 0x70, 0x22, 0x84, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x22, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 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, 0x22, 0x95, 0x01, 0x0a, 0x19, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x32, 0xa9, 0x09, - 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, - 0x73, 0x12, 0x38, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, - 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, 0x01, 0x12, 0x7e, 0x0a, 0x07, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x35, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, 0x01, 0x12, 0x8a, 0x01, 0x0a, - 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x39, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x0a, 0x0f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x3f, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, + 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x83, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 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, 0x22, 0xa2, 0x01, + 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x0b, 0x63, + 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x5a, 0x0a, 0x14, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x42, 0x0a, 0x05, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x5c, + 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa2, 0x01, 0x0a, + 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0b, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x0b, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 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, 0x59, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x42, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x08, 0x47, 0x65, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x36, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, - 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, 0x01, 0x12, 0x9c, 0x01, - 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x12, 0x3f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x69, 0x0a, 0x18, + 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x19, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x32, 0xaf, 0x0a, 0x0a, 0x10, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x0a, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x38, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, + 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, + 0x88, 0xb5, 0x18, 0x01, 0x12, 0x7e, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x35, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, + 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, + 0x88, 0xb5, 0x18, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x12, 0x39, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, 0x01, 0x12, 0x99, 0x01, 0x0a, - 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x12, 0x3e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, - 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, - 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, 0x01, 0x12, 0x9f, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x40, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, + 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x3a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x41, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, 0x01, 0x12, 0x9c, 0x01, 0x0a, 0x11, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x3f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, + 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, + 0x01, 0x12, 0x81, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x36, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, + 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x04, 0x88, 0xb5, 0x18, 0x01, 0x12, 0x9c, 0x01, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x3f, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, + 0x88, 0xb5, 0x18, 0x01, 0x12, 0x99, 0x01, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, + 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x3e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, 0x01, + 0x12, 0x9f, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x40, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x46, 0x6f, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, + 0x18, 0x01, 0x12, 0x9c, 0x01, 0x0a, 0x11, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x55, 0x73, 0x65, + 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, + 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x38, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x55, - 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x40, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x04, 0x88, 0xb5, 0x18, 0x01, 0x42, 0xcc, 0x02, 0x0a, 0x29, 0x63, 0x6f, - 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2d, 0x66, 0x61, 0x74, - 0x65, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x66, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x44, 0xaa, 0x02, 0x25, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x66, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, - 0x02, 0x26, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x5c, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x5c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x5c, - 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x32, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x66, 0x61, 0x74, 0x65, 0x5c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5c, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x28, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x3a, 0x3a, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x3a, 0x3a, - 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0xcc, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2d, 0x66, 0x61, 0x74, 0x65, 0x2f, + 0x73, 0x64, 0x6b, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, + 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, + 0x02, 0x03, 0x43, 0x43, 0x44, 0xaa, 0x02, 0x25, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, + 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x26, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x5c, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x5c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x5c, 0x56, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x32, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x66, + 0x61, 0x74, 0x65, 0x5c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5c, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x28, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x66, 0x61, 0x74, 0x65, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x3a, 0x3a, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x3a, 0x3a, 0x56, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1321,60 +1422,64 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_rawDescGZIP() [] return file_commonfate_control_directory_v1alpha1_directory_proto_rawDescData } -var file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_commonfate_control_directory_v1alpha1_directory_proto_goTypes = []any{ (*QueryUsersRequest)(nil), // 0: commonfate.control.directory.v1alpha1.QueryUsersRequest (*QueryUsersResponse)(nil), // 1: commonfate.control.directory.v1alpha1.QueryUsersResponse - (*GetUserRequest)(nil), // 2: commonfate.control.directory.v1alpha1.GetUserRequest - (*GetUserResponse)(nil), // 3: commonfate.control.directory.v1alpha1.GetUserResponse - (*QueryGroupsRequest)(nil), // 4: commonfate.control.directory.v1alpha1.QueryGroupsRequest - (*QueryGroupsResponse)(nil), // 5: commonfate.control.directory.v1alpha1.QueryGroupsResponse - (*GetGroupRequest)(nil), // 6: commonfate.control.directory.v1alpha1.GetGroupRequest - (*GetGroupResponse)(nil), // 7: commonfate.control.directory.v1alpha1.GetGroupResponse - (*QueryGroupMembersRequest)(nil), // 8: commonfate.control.directory.v1alpha1.QueryGroupMembersRequest - (*QueryGroupMembersResponse)(nil), // 9: commonfate.control.directory.v1alpha1.QueryGroupMembersResponse - (*GroupMembership)(nil), // 10: commonfate.control.directory.v1alpha1.GroupMembership - (*QueryChildGroupsRequest)(nil), // 11: commonfate.control.directory.v1alpha1.QueryChildGroupsRequest - (*QueryChildGroupsResponse)(nil), // 12: commonfate.control.directory.v1alpha1.QueryChildGroupsResponse - (*ChildGroupMembership)(nil), // 13: commonfate.control.directory.v1alpha1.ChildGroupMembership - (*QueryGroupsForUserRequest)(nil), // 14: commonfate.control.directory.v1alpha1.QueryGroupsForUserRequest - (*QueryGroupsForUserResponse)(nil), // 15: commonfate.control.directory.v1alpha1.QueryGroupsForUserResponse - (*UserGroupMembership)(nil), // 16: commonfate.control.directory.v1alpha1.UserGroupMembership - (*LookupUserAccountRequest)(nil), // 17: commonfate.control.directory.v1alpha1.LookupUserAccountRequest - (*LookupUserAccountResponse)(nil), // 18: commonfate.control.directory.v1alpha1.LookupUserAccountResponse - (*User)(nil), // 19: commonfate.control.directory.v1alpha1.User - (*Group)(nil), // 20: commonfate.control.directory.v1alpha1.Group + (*DeleteUserRequest)(nil), // 2: commonfate.control.directory.v1alpha1.DeleteUserRequest + (*DeleteUserResponse)(nil), // 3: commonfate.control.directory.v1alpha1.DeleteUserResponse + (*GetUserRequest)(nil), // 4: commonfate.control.directory.v1alpha1.GetUserRequest + (*GetUserResponse)(nil), // 5: commonfate.control.directory.v1alpha1.GetUserResponse + (*QueryGroupsRequest)(nil), // 6: commonfate.control.directory.v1alpha1.QueryGroupsRequest + (*QueryGroupsResponse)(nil), // 7: commonfate.control.directory.v1alpha1.QueryGroupsResponse + (*GetGroupRequest)(nil), // 8: commonfate.control.directory.v1alpha1.GetGroupRequest + (*GetGroupResponse)(nil), // 9: commonfate.control.directory.v1alpha1.GetGroupResponse + (*QueryGroupMembersRequest)(nil), // 10: commonfate.control.directory.v1alpha1.QueryGroupMembersRequest + (*QueryGroupMembersResponse)(nil), // 11: commonfate.control.directory.v1alpha1.QueryGroupMembersResponse + (*GroupMembership)(nil), // 12: commonfate.control.directory.v1alpha1.GroupMembership + (*QueryChildGroupsRequest)(nil), // 13: commonfate.control.directory.v1alpha1.QueryChildGroupsRequest + (*QueryChildGroupsResponse)(nil), // 14: commonfate.control.directory.v1alpha1.QueryChildGroupsResponse + (*ChildGroupMembership)(nil), // 15: commonfate.control.directory.v1alpha1.ChildGroupMembership + (*QueryGroupsForUserRequest)(nil), // 16: commonfate.control.directory.v1alpha1.QueryGroupsForUserRequest + (*QueryGroupsForUserResponse)(nil), // 17: commonfate.control.directory.v1alpha1.QueryGroupsForUserResponse + (*UserGroupMembership)(nil), // 18: commonfate.control.directory.v1alpha1.UserGroupMembership + (*LookupUserAccountRequest)(nil), // 19: commonfate.control.directory.v1alpha1.LookupUserAccountRequest + (*LookupUserAccountResponse)(nil), // 20: commonfate.control.directory.v1alpha1.LookupUserAccountResponse + (*User)(nil), // 21: commonfate.control.directory.v1alpha1.User + (*Group)(nil), // 22: commonfate.control.directory.v1alpha1.Group } var file_commonfate_control_directory_v1alpha1_directory_proto_depIdxs = []int32{ - 19, // 0: commonfate.control.directory.v1alpha1.QueryUsersResponse.users:type_name -> commonfate.control.directory.v1alpha1.User - 19, // 1: commonfate.control.directory.v1alpha1.GetUserResponse.user:type_name -> commonfate.control.directory.v1alpha1.User - 20, // 2: commonfate.control.directory.v1alpha1.QueryGroupsResponse.groups:type_name -> commonfate.control.directory.v1alpha1.Group - 20, // 3: commonfate.control.directory.v1alpha1.GetGroupResponse.group:type_name -> commonfate.control.directory.v1alpha1.Group - 10, // 4: commonfate.control.directory.v1alpha1.QueryGroupMembersResponse.members:type_name -> commonfate.control.directory.v1alpha1.GroupMembership - 19, // 5: commonfate.control.directory.v1alpha1.GroupMembership.user:type_name -> commonfate.control.directory.v1alpha1.User - 13, // 6: commonfate.control.directory.v1alpha1.QueryChildGroupsResponse.child_groups:type_name -> commonfate.control.directory.v1alpha1.ChildGroupMembership - 20, // 7: commonfate.control.directory.v1alpha1.ChildGroupMembership.group:type_name -> commonfate.control.directory.v1alpha1.Group - 16, // 8: commonfate.control.directory.v1alpha1.QueryGroupsForUserResponse.memberships:type_name -> commonfate.control.directory.v1alpha1.UserGroupMembership - 20, // 9: commonfate.control.directory.v1alpha1.UserGroupMembership.group:type_name -> commonfate.control.directory.v1alpha1.Group - 19, // 10: commonfate.control.directory.v1alpha1.LookupUserAccountResponse.user:type_name -> commonfate.control.directory.v1alpha1.User + 21, // 0: commonfate.control.directory.v1alpha1.QueryUsersResponse.users:type_name -> commonfate.control.directory.v1alpha1.User + 21, // 1: commonfate.control.directory.v1alpha1.GetUserResponse.user:type_name -> commonfate.control.directory.v1alpha1.User + 22, // 2: commonfate.control.directory.v1alpha1.QueryGroupsResponse.groups:type_name -> commonfate.control.directory.v1alpha1.Group + 22, // 3: commonfate.control.directory.v1alpha1.GetGroupResponse.group:type_name -> commonfate.control.directory.v1alpha1.Group + 12, // 4: commonfate.control.directory.v1alpha1.QueryGroupMembersResponse.members:type_name -> commonfate.control.directory.v1alpha1.GroupMembership + 21, // 5: commonfate.control.directory.v1alpha1.GroupMembership.user:type_name -> commonfate.control.directory.v1alpha1.User + 15, // 6: commonfate.control.directory.v1alpha1.QueryChildGroupsResponse.child_groups:type_name -> commonfate.control.directory.v1alpha1.ChildGroupMembership + 22, // 7: commonfate.control.directory.v1alpha1.ChildGroupMembership.group:type_name -> commonfate.control.directory.v1alpha1.Group + 18, // 8: commonfate.control.directory.v1alpha1.QueryGroupsForUserResponse.memberships:type_name -> commonfate.control.directory.v1alpha1.UserGroupMembership + 22, // 9: commonfate.control.directory.v1alpha1.UserGroupMembership.group:type_name -> commonfate.control.directory.v1alpha1.Group + 21, // 10: commonfate.control.directory.v1alpha1.LookupUserAccountResponse.user:type_name -> commonfate.control.directory.v1alpha1.User 0, // 11: commonfate.control.directory.v1alpha1.DirectoryService.QueryUsers:input_type -> commonfate.control.directory.v1alpha1.QueryUsersRequest - 2, // 12: commonfate.control.directory.v1alpha1.DirectoryService.GetUser:input_type -> commonfate.control.directory.v1alpha1.GetUserRequest - 4, // 13: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroups:input_type -> commonfate.control.directory.v1alpha1.QueryGroupsRequest - 6, // 14: commonfate.control.directory.v1alpha1.DirectoryService.GetGroup:input_type -> commonfate.control.directory.v1alpha1.GetGroupRequest - 8, // 15: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroupMembers:input_type -> commonfate.control.directory.v1alpha1.QueryGroupMembersRequest - 11, // 16: commonfate.control.directory.v1alpha1.DirectoryService.QueryChildGroups:input_type -> commonfate.control.directory.v1alpha1.QueryChildGroupsRequest - 14, // 17: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroupsForUser:input_type -> commonfate.control.directory.v1alpha1.QueryGroupsForUserRequest - 17, // 18: commonfate.control.directory.v1alpha1.DirectoryService.LookupUserAccount:input_type -> commonfate.control.directory.v1alpha1.LookupUserAccountRequest - 1, // 19: commonfate.control.directory.v1alpha1.DirectoryService.QueryUsers:output_type -> commonfate.control.directory.v1alpha1.QueryUsersResponse - 3, // 20: commonfate.control.directory.v1alpha1.DirectoryService.GetUser:output_type -> commonfate.control.directory.v1alpha1.GetUserResponse - 5, // 21: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroups:output_type -> commonfate.control.directory.v1alpha1.QueryGroupsResponse - 7, // 22: commonfate.control.directory.v1alpha1.DirectoryService.GetGroup:output_type -> commonfate.control.directory.v1alpha1.GetGroupResponse - 9, // 23: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroupMembers:output_type -> commonfate.control.directory.v1alpha1.QueryGroupMembersResponse - 12, // 24: commonfate.control.directory.v1alpha1.DirectoryService.QueryChildGroups:output_type -> commonfate.control.directory.v1alpha1.QueryChildGroupsResponse - 15, // 25: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroupsForUser:output_type -> commonfate.control.directory.v1alpha1.QueryGroupsForUserResponse - 18, // 26: commonfate.control.directory.v1alpha1.DirectoryService.LookupUserAccount:output_type -> commonfate.control.directory.v1alpha1.LookupUserAccountResponse - 19, // [19:27] is the sub-list for method output_type - 11, // [11:19] is the sub-list for method input_type + 4, // 12: commonfate.control.directory.v1alpha1.DirectoryService.GetUser:input_type -> commonfate.control.directory.v1alpha1.GetUserRequest + 6, // 13: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroups:input_type -> commonfate.control.directory.v1alpha1.QueryGroupsRequest + 8, // 14: commonfate.control.directory.v1alpha1.DirectoryService.GetGroup:input_type -> commonfate.control.directory.v1alpha1.GetGroupRequest + 10, // 15: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroupMembers:input_type -> commonfate.control.directory.v1alpha1.QueryGroupMembersRequest + 13, // 16: commonfate.control.directory.v1alpha1.DirectoryService.QueryChildGroups:input_type -> commonfate.control.directory.v1alpha1.QueryChildGroupsRequest + 16, // 17: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroupsForUser:input_type -> commonfate.control.directory.v1alpha1.QueryGroupsForUserRequest + 19, // 18: commonfate.control.directory.v1alpha1.DirectoryService.LookupUserAccount:input_type -> commonfate.control.directory.v1alpha1.LookupUserAccountRequest + 2, // 19: commonfate.control.directory.v1alpha1.DirectoryService.DeleteUser:input_type -> commonfate.control.directory.v1alpha1.DeleteUserRequest + 1, // 20: commonfate.control.directory.v1alpha1.DirectoryService.QueryUsers:output_type -> commonfate.control.directory.v1alpha1.QueryUsersResponse + 5, // 21: commonfate.control.directory.v1alpha1.DirectoryService.GetUser:output_type -> commonfate.control.directory.v1alpha1.GetUserResponse + 7, // 22: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroups:output_type -> commonfate.control.directory.v1alpha1.QueryGroupsResponse + 9, // 23: commonfate.control.directory.v1alpha1.DirectoryService.GetGroup:output_type -> commonfate.control.directory.v1alpha1.GetGroupResponse + 11, // 24: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroupMembers:output_type -> commonfate.control.directory.v1alpha1.QueryGroupMembersResponse + 14, // 25: commonfate.control.directory.v1alpha1.DirectoryService.QueryChildGroups:output_type -> commonfate.control.directory.v1alpha1.QueryChildGroupsResponse + 17, // 26: commonfate.control.directory.v1alpha1.DirectoryService.QueryGroupsForUser:output_type -> commonfate.control.directory.v1alpha1.QueryGroupsForUserResponse + 20, // 27: commonfate.control.directory.v1alpha1.DirectoryService.LookupUserAccount:output_type -> commonfate.control.directory.v1alpha1.LookupUserAccountResponse + 3, // 28: commonfate.control.directory.v1alpha1.DirectoryService.DeleteUser:output_type -> commonfate.control.directory.v1alpha1.DeleteUserResponse + 20, // [20:29] is the sub-list for method output_type + 11, // [11:20] 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 @@ -1413,7 +1518,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*GetUserRequest); i { + switch v := v.(*DeleteUserRequest); i { case 0: return &v.state case 1: @@ -1425,7 +1530,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetUserResponse); i { + switch v := v.(*DeleteUserResponse); i { case 0: return &v.state case 1: @@ -1437,7 +1542,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*QueryGroupsRequest); i { + switch v := v.(*GetUserRequest); i { case 0: return &v.state case 1: @@ -1449,7 +1554,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*QueryGroupsResponse); i { + switch v := v.(*GetUserResponse); i { case 0: return &v.state case 1: @@ -1461,7 +1566,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*GetGroupRequest); i { + switch v := v.(*QueryGroupsRequest); i { case 0: return &v.state case 1: @@ -1473,7 +1578,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*GetGroupResponse); i { + switch v := v.(*QueryGroupsResponse); i { case 0: return &v.state case 1: @@ -1485,7 +1590,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*QueryGroupMembersRequest); i { + switch v := v.(*GetGroupRequest); i { case 0: return &v.state case 1: @@ -1497,7 +1602,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*QueryGroupMembersResponse); i { + switch v := v.(*GetGroupResponse); i { case 0: return &v.state case 1: @@ -1509,7 +1614,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*GroupMembership); i { + switch v := v.(*QueryGroupMembersRequest); i { case 0: return &v.state case 1: @@ -1521,7 +1626,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*QueryChildGroupsRequest); i { + switch v := v.(*QueryGroupMembersResponse); i { case 0: return &v.state case 1: @@ -1533,7 +1638,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*QueryChildGroupsResponse); i { + switch v := v.(*GroupMembership); i { case 0: return &v.state case 1: @@ -1545,7 +1650,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*ChildGroupMembership); i { + switch v := v.(*QueryChildGroupsRequest); i { case 0: return &v.state case 1: @@ -1557,7 +1662,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*QueryGroupsForUserRequest); i { + switch v := v.(*QueryChildGroupsResponse); i { case 0: return &v.state case 1: @@ -1569,7 +1674,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*QueryGroupsForUserResponse); i { + switch v := v.(*ChildGroupMembership); i { case 0: return &v.state case 1: @@ -1581,7 +1686,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*UserGroupMembership); i { + switch v := v.(*QueryGroupsForUserRequest); i { case 0: return &v.state case 1: @@ -1593,7 +1698,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*LookupUserAccountRequest); i { + switch v := v.(*QueryGroupsForUserResponse); i { case 0: return &v.state case 1: @@ -1605,6 +1710,30 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { } } file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*UserGroupMembership); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*LookupUserAccountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_commonfate_control_directory_v1alpha1_directory_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*LookupUserAccountResponse); i { case 0: return &v.state @@ -1623,7 +1752,7 @@ func file_commonfate_control_directory_v1alpha1_directory_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_commonfate_control_directory_v1alpha1_directory_proto_rawDesc, NumEnums: 0, - NumMessages: 19, + NumMessages: 21, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/commonfate/control/directory/v1alpha1/directory.pb.validate.go b/gen/commonfate/control/directory/v1alpha1/directory.pb.validate.go index a3627b0f..8fc38488 100644 --- a/gen/commonfate/control/directory/v1alpha1/directory.pb.validate.go +++ b/gen/commonfate/control/directory/v1alpha1/directory.pb.validate.go @@ -279,6 +279,212 @@ var _ interface { ErrorName() string } = QueryUsersResponseValidationError{} +// Validate checks the field values on DeleteUserRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *DeleteUserRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteUserRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteUserRequestMultiError, or nil if none found. +func (m *DeleteUserRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteUserRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Id + + if len(errors) > 0 { + return DeleteUserRequestMultiError(errors) + } + + return nil +} + +// DeleteUserRequestMultiError is an error wrapping multiple validation errors +// returned by DeleteUserRequest.ValidateAll() if the designated constraints +// aren't met. +type DeleteUserRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteUserRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteUserRequestMultiError) AllErrors() []error { return m } + +// DeleteUserRequestValidationError is the validation error returned by +// DeleteUserRequest.Validate if the designated constraints aren't met. +type DeleteUserRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeleteUserRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeleteUserRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeleteUserRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeleteUserRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeleteUserRequestValidationError) ErrorName() string { + return "DeleteUserRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e DeleteUserRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeleteUserRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeleteUserRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeleteUserRequestValidationError{} + +// Validate checks the field values on DeleteUserResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *DeleteUserResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteUserResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteUserResponseMultiError, or nil if none found. +func (m *DeleteUserResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteUserResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return DeleteUserResponseMultiError(errors) + } + + return nil +} + +// DeleteUserResponseMultiError is an error wrapping multiple validation errors +// returned by DeleteUserResponse.ValidateAll() if the designated constraints +// aren't met. +type DeleteUserResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteUserResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteUserResponseMultiError) AllErrors() []error { return m } + +// DeleteUserResponseValidationError is the validation error returned by +// DeleteUserResponse.Validate if the designated constraints aren't met. +type DeleteUserResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeleteUserResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeleteUserResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeleteUserResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeleteUserResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeleteUserResponseValidationError) ErrorName() string { + return "DeleteUserResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e DeleteUserResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeleteUserResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeleteUserResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeleteUserResponseValidationError{} + // Validate checks the field values on GetUserRequest with the rules defined in // the proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. diff --git a/gen/commonfate/control/directory/v1alpha1/directoryv1alpha1connect/directory.connect.go b/gen/commonfate/control/directory/v1alpha1/directoryv1alpha1connect/directory.connect.go index 024757e4..65c4a636 100644 --- a/gen/commonfate/control/directory/v1alpha1/directoryv1alpha1connect/directory.connect.go +++ b/gen/commonfate/control/directory/v1alpha1/directoryv1alpha1connect/directory.connect.go @@ -57,6 +57,9 @@ const ( // DirectoryServiceLookupUserAccountProcedure is the fully-qualified name of the DirectoryService's // LookupUserAccount RPC. DirectoryServiceLookupUserAccountProcedure = "/commonfate.control.directory.v1alpha1.DirectoryService/LookupUserAccount" + // DirectoryServiceDeleteUserProcedure is the fully-qualified name of the DirectoryService's + // DeleteUser RPC. + DirectoryServiceDeleteUserProcedure = "/commonfate.control.directory.v1alpha1.DirectoryService/DeleteUser" ) // These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. @@ -70,6 +73,7 @@ var ( directoryServiceQueryChildGroupsMethodDescriptor = directoryServiceServiceDescriptor.Methods().ByName("QueryChildGroups") directoryServiceQueryGroupsForUserMethodDescriptor = directoryServiceServiceDescriptor.Methods().ByName("QueryGroupsForUser") directoryServiceLookupUserAccountMethodDescriptor = directoryServiceServiceDescriptor.Methods().ByName("LookupUserAccount") + directoryServiceDeleteUserMethodDescriptor = directoryServiceServiceDescriptor.Methods().ByName("DeleteUser") ) // DirectoryServiceClient is a client for the commonfate.control.directory.v1alpha1.DirectoryService @@ -86,6 +90,7 @@ type DirectoryServiceClient interface { // Looks up the matching User for a particular // connected user account in an integration. LookupUserAccount(context.Context, *connect.Request[v1alpha1.LookupUserAccountRequest]) (*connect.Response[v1alpha1.LookupUserAccountResponse], error) + DeleteUser(context.Context, *connect.Request[v1alpha1.DeleteUserRequest]) (*connect.Response[v1alpha1.DeleteUserResponse], error) } // NewDirectoryServiceClient constructs a client for the @@ -147,6 +152,12 @@ func NewDirectoryServiceClient(httpClient connect.HTTPClient, baseURL string, op connect.WithSchema(directoryServiceLookupUserAccountMethodDescriptor), connect.WithClientOptions(opts...), ), + deleteUser: connect.NewClient[v1alpha1.DeleteUserRequest, v1alpha1.DeleteUserResponse]( + httpClient, + baseURL+DirectoryServiceDeleteUserProcedure, + connect.WithSchema(directoryServiceDeleteUserMethodDescriptor), + connect.WithClientOptions(opts...), + ), } } @@ -160,6 +171,7 @@ type directoryServiceClient struct { queryChildGroups *connect.Client[v1alpha1.QueryChildGroupsRequest, v1alpha1.QueryChildGroupsResponse] queryGroupsForUser *connect.Client[v1alpha1.QueryGroupsForUserRequest, v1alpha1.QueryGroupsForUserResponse] lookupUserAccount *connect.Client[v1alpha1.LookupUserAccountRequest, v1alpha1.LookupUserAccountResponse] + deleteUser *connect.Client[v1alpha1.DeleteUserRequest, v1alpha1.DeleteUserResponse] } // QueryUsers calls commonfate.control.directory.v1alpha1.DirectoryService.QueryUsers. @@ -203,6 +215,11 @@ func (c *directoryServiceClient) LookupUserAccount(ctx context.Context, req *con return c.lookupUserAccount.CallUnary(ctx, req) } +// DeleteUser calls commonfate.control.directory.v1alpha1.DirectoryService.DeleteUser. +func (c *directoryServiceClient) DeleteUser(ctx context.Context, req *connect.Request[v1alpha1.DeleteUserRequest]) (*connect.Response[v1alpha1.DeleteUserResponse], error) { + return c.deleteUser.CallUnary(ctx, req) +} + // DirectoryServiceHandler is an implementation of the // commonfate.control.directory.v1alpha1.DirectoryService service. type DirectoryServiceHandler interface { @@ -217,6 +234,7 @@ type DirectoryServiceHandler interface { // Looks up the matching User for a particular // connected user account in an integration. LookupUserAccount(context.Context, *connect.Request[v1alpha1.LookupUserAccountRequest]) (*connect.Response[v1alpha1.LookupUserAccountResponse], error) + DeleteUser(context.Context, *connect.Request[v1alpha1.DeleteUserRequest]) (*connect.Response[v1alpha1.DeleteUserResponse], error) } // NewDirectoryServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -273,6 +291,12 @@ func NewDirectoryServiceHandler(svc DirectoryServiceHandler, opts ...connect.Han connect.WithSchema(directoryServiceLookupUserAccountMethodDescriptor), connect.WithHandlerOptions(opts...), ) + directoryServiceDeleteUserHandler := connect.NewUnaryHandler( + DirectoryServiceDeleteUserProcedure, + svc.DeleteUser, + connect.WithSchema(directoryServiceDeleteUserMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) return "/commonfate.control.directory.v1alpha1.DirectoryService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case DirectoryServiceQueryUsersProcedure: @@ -291,6 +315,8 @@ func NewDirectoryServiceHandler(svc DirectoryServiceHandler, opts ...connect.Han directoryServiceQueryGroupsForUserHandler.ServeHTTP(w, r) case DirectoryServiceLookupUserAccountProcedure: directoryServiceLookupUserAccountHandler.ServeHTTP(w, r) + case DirectoryServiceDeleteUserProcedure: + directoryServiceDeleteUserHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -331,3 +357,7 @@ func (UnimplementedDirectoryServiceHandler) QueryGroupsForUser(context.Context, func (UnimplementedDirectoryServiceHandler) LookupUserAccount(context.Context, *connect.Request[v1alpha1.LookupUserAccountRequest]) (*connect.Response[v1alpha1.LookupUserAccountResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("commonfate.control.directory.v1alpha1.DirectoryService.LookupUserAccount is not implemented")) } + +func (UnimplementedDirectoryServiceHandler) DeleteUser(context.Context, *connect.Request[v1alpha1.DeleteUserRequest]) (*connect.Response[v1alpha1.DeleteUserResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("commonfate.control.directory.v1alpha1.DirectoryService.DeleteUser is not implemented")) +} diff --git a/proto/commonfate/control/directory/v1alpha1/directory.proto b/proto/commonfate/control/directory/v1alpha1/directory.proto index 5a5c6da0..0791ba83 100644 --- a/proto/commonfate/control/directory/v1alpha1/directory.proto +++ b/proto/commonfate/control/directory/v1alpha1/directory.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package commonfate.control.directory.v1alpha1; - +import "commonfate/access/v1alpha1/diagnostic.proto"; import "commonfate/control/directory/v1alpha1/user.proto"; import "commonfate/control/directory/v1alpha1/group.proto"; import "commonfate/authz/v1alpha1/read_only.proto"; @@ -38,6 +38,11 @@ service DirectoryService { rpc LookupUserAccount(LookupUserAccountRequest) returns (LookupUserAccountResponse) { option (commonfate.authz.v1alpha1.read_only) = true; } + + rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse) { + + } + } message QueryUsersRequest { @@ -55,6 +60,15 @@ message QueryUsersResponse { int32 total_user_count = 3; } +message DeleteUserRequest { + string id = 1; +} + +message DeleteUserResponse { + + +} + message GetUserRequest { string id = 1 [(buf.validate.field).string.min_len = 1]; }