From 8518a7a2b12c02be95e2432aee6233352be29254 Mon Sep 17 00:00:00 2001 From: zhx Date: Thu, 23 Jul 2026 21:38:43 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/proto/activity/v1/activity.pb.go | 1395 ++++++++++------- api/proto/activity/v1/activity.proto | 21 + docs/Fami_VIP_Flutter对接方案.md | 8 +- docs/VIP系统架构.md | 2 +- docs/新版VIP权限策略_Flutter客户端对接文档.md | 6 +- .../modules/fullservernotice/handler.go | 71 +- .../modules/fullservernotice/handler_test.go | 22 +- .../internal/app/vip_rebate_notice.go | 25 +- .../internal/app/vip_rebate_notice_test.go | 23 +- .../internal/domain/message/message.go | 24 +- .../internal/service/message/fanout_worker.go | 34 +- .../internal/service/message/notice.go | 62 +- .../internal/service/message/service.go | 110 +- .../internal/service/message/service_test.go | 56 +- .../internal/transport/grpc/message_server.go | 70 + .../http/messageapi/message_handler.go | 56 + .../internal/transport/http/response_test.go | 34 +- 17 files changed, 1321 insertions(+), 698 deletions(-) diff --git a/api/proto/activity/v1/activity.pb.go b/api/proto/activity/v1/activity.pb.go index 7e437f58..8e2d3cda 100644 --- a/api/proto/activity/v1/activity.pb.go +++ b/api/proto/activity/v1/activity.pb.go @@ -487,7 +487,9 @@ type InboxMessage struct { // image_urls 是同一通知卡片的有序图片列表;image_url 保留给旧客户端作为首图兼容字段。 ImageUrls []string `protobuf:"bytes,12,rep,name=image_urls,json=imageUrls,proto3" json:"image_urls,omitempty"` // reward_items 是活动发奖的有序结构化快照;客户端不解析 body/metadata_json 猜测数量和有效天数。 - RewardItems []*InboxRewardItem `protobuf:"bytes,13,rep,name=reward_items,json=rewardItems,proto3" json:"reward_items,omitempty"` + RewardItems []*InboxRewardItem `protobuf:"bytes,13,rep,name=reward_items,json=rewardItems,proto3" json:"reward_items,omitempty"` + // actions 最多两个;每个按钮的文案、样式、API 和参数均由后端快照提供。 + Actions []*InboxAction `protobuf:"bytes,14,rep,name=actions,proto3" json:"actions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -613,6 +615,13 @@ func (x *InboxMessage) GetRewardItems() []*InboxRewardItem { return nil } +func (x *InboxMessage) GetActions() []*InboxAction { + if x != nil { + return x.Actions + } + return nil +} + // ListInboxMessagesRequest 按 section 和游标分页读取当前用户 inbox。 type ListInboxMessagesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1128,7 +1137,9 @@ type CreateInboxMessageRequest struct { // image_urls 由 inbox owner 结构化保存,生产者不能要求客户端解析 metadata_json。 ImageUrls []string `protobuf:"bytes,22,rep,name=image_urls,json=imageUrls,proto3" json:"image_urls,omitempty"` // reward_items 与 image_urls 一样由 inbox owner 写入受控 metadata,避免扩表并保持强类型输出。 - RewardItems []*InboxRewardItem `protobuf:"bytes,23,rep,name=reward_items,json=rewardItems,proto3" json:"reward_items,omitempty"` + RewardItems []*InboxRewardItem `protobuf:"bytes,23,rep,name=reward_items,json=rewardItems,proto3" json:"reward_items,omitempty"` + // actions 由 inbox owner 校验并写入 metadata JSON;客户端只消费强类型输出。 + Actions []*InboxAction `protobuf:"bytes,24,rep,name=actions,proto3" json:"actions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1324,6 +1335,13 @@ func (x *CreateInboxMessageRequest) GetRewardItems() []*InboxRewardItem { return nil } +func (x *CreateInboxMessageRequest) GetActions() []*InboxAction { + if x != nil { + return x.Actions + } + return nil +} + // CreateInboxMessageResponse 返回入箱结果;重复同一 producer_event_id 时 created=false。 type CreateInboxMessageResponse struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -27176,6 +27194,145 @@ func (x *InboxRewardItem) GetDurationDays() int64 { return 0 } +// InboxActionAPI 是后端下发的同源 App API 请求;Flutter 只执行相对 /api/v1 路径, +// 不接收 headers、host 或自定义 scheme,避免通知内容绕过统一鉴权和租户请求头。 +type InboxActionAPI struct { + state protoimpl.MessageState `protogen:"open.v1"` + Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + QueryJson string `protobuf:"bytes,3,opt,name=query_json,json=queryJson,proto3" json:"query_json,omitempty"` + BodyJson string `protobuf:"bytes,4,opt,name=body_json,json=bodyJson,proto3" json:"body_json,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InboxActionAPI) Reset() { + *x = InboxActionAPI{} + mi := &file_proto_activity_v1_activity_proto_msgTypes[341] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InboxActionAPI) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InboxActionAPI) ProtoMessage() {} + +func (x *InboxActionAPI) ProtoReflect() protoreflect.Message { + mi := &file_proto_activity_v1_activity_proto_msgTypes[341] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InboxActionAPI.ProtoReflect.Descriptor instead. +func (*InboxActionAPI) Descriptor() ([]byte, []int) { + return file_proto_activity_v1_activity_proto_rawDescGZIP(), []int{341} +} + +func (x *InboxActionAPI) GetMethod() string { + if x != nil { + return x.Method + } + return "" +} + +func (x *InboxActionAPI) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *InboxActionAPI) GetQueryJson() string { + if x != nil { + return x.QueryJson + } + return "" +} + +func (x *InboxActionAPI) GetBodyJson() string { + if x != nil { + return x.BodyJson + } + return "" +} + +// InboxAction 与 C2C im_confirm.actions 保持相同的按钮展示语义;label 完全由后端提供。 +type InboxAction struct { + state protoimpl.MessageState `protogen:"open.v1"` + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` + Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` + Style string `protobuf:"bytes,3,opt,name=style,proto3" json:"style,omitempty"` + Api *InboxActionAPI `protobuf:"bytes,4,opt,name=api,proto3" json:"api,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InboxAction) Reset() { + *x = InboxAction{} + mi := &file_proto_activity_v1_activity_proto_msgTypes[342] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InboxAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InboxAction) ProtoMessage() {} + +func (x *InboxAction) ProtoReflect() protoreflect.Message { + mi := &file_proto_activity_v1_activity_proto_msgTypes[342] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InboxAction.ProtoReflect.Descriptor instead. +func (*InboxAction) Descriptor() ([]byte, []int) { + return file_proto_activity_v1_activity_proto_rawDescGZIP(), []int{342} +} + +func (x *InboxAction) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *InboxAction) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *InboxAction) GetStyle() string { + if x != nil { + return x.Style + } + return "" +} + +func (x *InboxAction) GetApi() *InboxActionAPI { + if x != nil { + return x.Api + } + return nil +} + var File_proto_activity_v1_activity_proto protoreflect.FileDescriptor const file_proto_activity_v1_activity_proto_rawDesc = "" + @@ -27211,7 +27368,7 @@ const file_proto_activity_v1_activity_proto_rawDesc = "" + "\x04meta\x18\x01 \x01(\v2\x1e.hyapp.activity.v1.RequestMetaR\x04meta\x12\x17\n" + "\auser_id\x18\x02 \x01(\x03R\x06userId\"[\n" + "\x17ListMessageTabsResponse\x12@\n" + - "\bsections\x18\x01 \x03(\v2$.hyapp.activity.v1.MessageTabSectionR\bsections\"\x9f\x03\n" + + "\bsections\x18\x01 \x03(\v2$.hyapp.activity.v1.MessageTabSectionR\bsections\"\xd9\x03\n" + "\fInboxMessage\x12\x1d\n" + "\n" + "message_id\x18\x01 \x01(\tR\tmessageId\x12\x18\n" + @@ -27230,7 +27387,8 @@ const file_proto_activity_v1_activity_proto_rawDesc = "" + "sent_at_ms\x18\v \x01(\x03R\bsentAtMs\x12\x1d\n" + "\n" + "image_urls\x18\f \x03(\tR\timageUrls\x12E\n" + - "\freward_items\x18\r \x03(\v2\".hyapp.activity.v1.InboxRewardItemR\vrewardItems\"\xbd\x01\n" + + "\freward_items\x18\r \x03(\v2\".hyapp.activity.v1.InboxRewardItemR\vrewardItems\x128\n" + + "\aactions\x18\x0e \x03(\v2\x1e.hyapp.activity.v1.InboxActionR\aactions\"\xbd\x01\n" + "\x18ListInboxMessagesRequest\x122\n" + "\x04meta\x18\x01 \x01(\v2\x1e.hyapp.activity.v1.RequestMetaR\x04meta\x12\x17\n" + "\auser_id\x18\x02 \x01(\x03R\x06userId\x12\x18\n" + @@ -27269,7 +27427,7 @@ const file_proto_activity_v1_activity_proto_rawDesc = "" + "\x1aDeleteInboxMessageResponse\x12\x1d\n" + "\n" + "message_id\x18\x01 \x01(\tR\tmessageId\x12\x18\n" + - "\adeleted\x18\x02 \x01(\bR\adeleted\"\xcd\x06\n" + + "\adeleted\x18\x02 \x01(\bR\adeleted\"\x87\a\n" + "\x19CreateInboxMessageRequest\x122\n" + "\x04meta\x18\x01 \x01(\v2\x1e.hyapp.activity.v1.RequestMetaR\x04meta\x12$\n" + "\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12\x1a\n" + @@ -27299,7 +27457,8 @@ const file_proto_activity_v1_activity_proto_rawDesc = "" + "\rmetadata_json\x18\x15 \x01(\tR\fmetadataJson\x12\x1d\n" + "\n" + "image_urls\x18\x16 \x03(\tR\timageUrls\x12E\n" + - "\freward_items\x18\x17 \x03(\v2\".hyapp.activity.v1.InboxRewardItemR\vrewardItems\"U\n" + + "\freward_items\x18\x17 \x03(\v2\".hyapp.activity.v1.InboxRewardItemR\vrewardItems\x128\n" + + "\aactions\x18\x18 \x03(\v2\x1e.hyapp.activity.v1.InboxActionR\aactions\"U\n" + "\x1aCreateInboxMessageResponse\x12\x1d\n" + "\n" + "message_id\x18\x01 \x01(\tR\tmessageId\x12\x18\n" + @@ -29629,7 +29788,18 @@ const file_proto_activity_v1_activity_proto_rawDesc = "" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1b\n" + "\timage_url\x18\x03 \x01(\tR\bimageUrl\x12\x1a\n" + "\bquantity\x18\x04 \x01(\x03R\bquantity\x12#\n" + - "\rduration_days\x18\x05 \x01(\x03R\fdurationDays2\xe2\x01\n" + + "\rduration_days\x18\x05 \x01(\x03R\fdurationDays\"x\n" + + "\x0eInboxActionAPI\x12\x16\n" + + "\x06method\x18\x01 \x01(\tR\x06method\x12\x12\n" + + "\x04path\x18\x02 \x01(\tR\x04path\x12\x1d\n" + + "\n" + + "query_json\x18\x03 \x01(\tR\tqueryJson\x12\x1b\n" + + "\tbody_json\x18\x04 \x01(\tR\bbodyJson\"\x86\x01\n" + + "\vInboxAction\x12\x16\n" + + "\x06action\x18\x01 \x01(\tR\x06action\x12\x14\n" + + "\x05label\x18\x02 \x01(\tR\x05label\x12\x14\n" + + "\x05style\x18\x03 \x01(\tR\x05style\x123\n" + + "\x03api\x18\x04 \x01(\v2!.hyapp.activity.v1.InboxActionAPIR\x03api2\xe2\x01\n" + "\x0fActivityService\x12_\n" + "\fPingActivity\x12&.hyapp.activity.v1.PingActivityRequest\x1a'.hyapp.activity.v1.PingActivityResponse\x12n\n" + "\x11GetActivityStatus\x12+.hyapp.activity.v1.GetActivityStatusRequest\x1a,.hyapp.activity.v1.GetActivityStatusResponse2\xb1\x06\n" + @@ -29817,7 +29987,7 @@ func file_proto_activity_v1_activity_proto_rawDescGZIP() []byte { return file_proto_activity_v1_activity_proto_rawDescData } -var file_proto_activity_v1_activity_proto_msgTypes = make([]protoimpl.MessageInfo, 341) +var file_proto_activity_v1_activity_proto_msgTypes = make([]protoimpl.MessageInfo, 343) var file_proto_activity_v1_activity_proto_goTypes = []any{ (*RequestMeta)(nil), // 0: hyapp.activity.v1.RequestMeta (*PingActivityRequest)(nil), // 1: hyapp.activity.v1.PingActivityRequest @@ -30160,7 +30330,9 @@ var file_proto_activity_v1_activity_proto_goTypes = []any{ (*RetryActivityTemplateTaskClaimRequest)(nil), // 338: hyapp.activity.v1.RetryActivityTemplateTaskClaimRequest (*RetryActivityTemplateTaskClaimResponse)(nil), // 339: hyapp.activity.v1.RetryActivityTemplateTaskClaimResponse (*InboxRewardItem)(nil), // 340: hyapp.activity.v1.InboxRewardItem - (*v1.EventEnvelope)(nil), // 341: hyapp.events.room.v1.EventEnvelope + (*InboxActionAPI)(nil), // 341: hyapp.activity.v1.InboxActionAPI + (*InboxAction)(nil), // 342: hyapp.activity.v1.InboxAction + (*v1.EventEnvelope)(nil), // 343: hyapp.events.room.v1.EventEnvelope } var file_proto_activity_v1_activity_proto_depIdxs = []int32{ 0, // 0: hyapp.activity.v1.PingActivityRequest.meta:type_name -> hyapp.activity.v1.RequestMeta @@ -30168,606 +30340,609 @@ var file_proto_activity_v1_activity_proto_depIdxs = []int32{ 0, // 2: hyapp.activity.v1.ListMessageTabsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta 5, // 3: hyapp.activity.v1.ListMessageTabsResponse.sections:type_name -> hyapp.activity.v1.MessageTabSection 340, // 4: hyapp.activity.v1.InboxMessage.reward_items:type_name -> hyapp.activity.v1.InboxRewardItem - 0, // 5: hyapp.activity.v1.ListInboxMessagesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 8, // 6: hyapp.activity.v1.ListInboxMessagesResponse.items:type_name -> hyapp.activity.v1.InboxMessage - 0, // 7: hyapp.activity.v1.MarkInboxMessageReadRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 8: hyapp.activity.v1.MarkInboxSectionReadRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 9: hyapp.activity.v1.DeleteInboxMessageRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 10: hyapp.activity.v1.CreateInboxMessageRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 340, // 11: hyapp.activity.v1.CreateInboxMessageRequest.reward_items:type_name -> hyapp.activity.v1.InboxRewardItem - 0, // 12: hyapp.activity.v1.CreateFanoutJobRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 13: hyapp.activity.v1.AcceptActionConfirmRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 21, // 14: hyapp.activity.v1.AcceptActionConfirmResponse.confirm:type_name -> hyapp.activity.v1.ActionConfirm - 0, // 15: hyapp.activity.v1.RejectActionConfirmRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 21, // 16: hyapp.activity.v1.RejectActionConfirmResponse.confirm:type_name -> hyapp.activity.v1.ActionConfirm - 0, // 17: hyapp.activity.v1.BatchGetActionConfirmStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 21, // 18: hyapp.activity.v1.BatchGetActionConfirmStatusResponse.items:type_name -> hyapp.activity.v1.ActionConfirm - 0, // 19: hyapp.activity.v1.ListConversationActionConfirmsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 21, // 20: hyapp.activity.v1.ListConversationActionConfirmsResponse.items:type_name -> hyapp.activity.v1.ActionConfirm - 0, // 21: hyapp.activity.v1.CronBatchRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 32, // 22: hyapp.activity.v1.TaskItem.reward_items:type_name -> hyapp.activity.v1.TaskRewardItem - 33, // 23: hyapp.activity.v1.TaskSection.items:type_name -> hyapp.activity.v1.TaskItem - 0, // 24: hyapp.activity.v1.ListUserTasksRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 34, // 25: hyapp.activity.v1.ListUserTasksResponse.sections:type_name -> hyapp.activity.v1.TaskSection - 0, // 26: hyapp.activity.v1.ClaimTaskRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 32, // 27: hyapp.activity.v1.ClaimTaskRewardResponse.reward_items:type_name -> hyapp.activity.v1.TaskRewardItem - 0, // 28: hyapp.activity.v1.ConsumeTaskEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 29: hyapp.activity.v1.EnsureBroadcastGroupsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 30: hyapp.activity.v1.PublishRegionBroadcastRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 31: hyapp.activity.v1.PublishGlobalBroadcastRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 32: hyapp.activity.v1.RemoveRegionBroadcastMemberRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 33: hyapp.activity.v1.GetGameWinBroadcastConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 50, // 34: hyapp.activity.v1.GetGameWinBroadcastConfigResponse.config:type_name -> hyapp.activity.v1.GameWinBroadcastConfig - 0, // 35: hyapp.activity.v1.UpdateGameWinBroadcastConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 50, // 36: hyapp.activity.v1.UpdateGameWinBroadcastConfigResponse.config:type_name -> hyapp.activity.v1.GameWinBroadcastConfig - 0, // 37: hyapp.activity.v1.ConsumeRoomEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 341, // 38: hyapp.activity.v1.ConsumeRoomEventRequest.envelope:type_name -> hyapp.events.room.v1.EventEnvelope - 32, // 39: hyapp.activity.v1.TaskDefinition.reward_items:type_name -> hyapp.activity.v1.TaskRewardItem - 0, // 40: hyapp.activity.v1.ListTaskDefinitionsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 57, // 41: hyapp.activity.v1.ListTaskDefinitionsResponse.tasks:type_name -> hyapp.activity.v1.TaskDefinition - 0, // 42: hyapp.activity.v1.UpsertTaskDefinitionRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 57, // 43: hyapp.activity.v1.UpsertTaskDefinitionResponse.task:type_name -> hyapp.activity.v1.TaskDefinition - 0, // 44: hyapp.activity.v1.SetTaskDefinitionStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 57, // 45: hyapp.activity.v1.SetTaskDefinitionStatusResponse.task:type_name -> hyapp.activity.v1.TaskDefinition - 0, // 46: hyapp.activity.v1.PublishTaskRewardPolicyRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 47: hyapp.activity.v1.GetRegistrationRewardEligibilityRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 68, // 48: hyapp.activity.v1.GetRegistrationRewardEligibilityResponse.eligibility:type_name -> hyapp.activity.v1.RegistrationRewardEligibility - 0, // 49: hyapp.activity.v1.IssueRegistrationRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 67, // 50: hyapp.activity.v1.IssueRegistrationRewardResponse.claim:type_name -> hyapp.activity.v1.RegistrationRewardClaim - 68, // 51: hyapp.activity.v1.IssueRegistrationRewardResponse.eligibility:type_name -> hyapp.activity.v1.RegistrationRewardEligibility - 0, // 52: hyapp.activity.v1.GetRegistrationRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 66, // 53: hyapp.activity.v1.GetRegistrationRewardConfigResponse.config:type_name -> hyapp.activity.v1.RegistrationRewardConfig - 0, // 54: hyapp.activity.v1.UpdateRegistrationRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 66, // 55: hyapp.activity.v1.UpdateRegistrationRewardConfigResponse.config:type_name -> hyapp.activity.v1.RegistrationRewardConfig - 0, // 56: hyapp.activity.v1.ListRegistrationRewardClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 67, // 57: hyapp.activity.v1.ListRegistrationRewardClaimsResponse.claims:type_name -> hyapp.activity.v1.RegistrationRewardClaim - 79, // 58: hyapp.activity.v1.FirstRechargeRewardConfig.tiers:type_name -> hyapp.activity.v1.FirstRechargeRewardTier - 79, // 59: hyapp.activity.v1.FirstRechargeRewardStatus.tiers:type_name -> hyapp.activity.v1.FirstRechargeRewardTier - 81, // 60: hyapp.activity.v1.FirstRechargeRewardStatus.claim:type_name -> hyapp.activity.v1.FirstRechargeRewardClaim - 81, // 61: hyapp.activity.v1.FirstRechargeRewardStatus.claims:type_name -> hyapp.activity.v1.FirstRechargeRewardClaim - 0, // 62: hyapp.activity.v1.GetFirstRechargeRewardStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 82, // 63: hyapp.activity.v1.GetFirstRechargeRewardStatusResponse.status:type_name -> hyapp.activity.v1.FirstRechargeRewardStatus - 0, // 64: hyapp.activity.v1.ConsumeFirstRechargeRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 81, // 65: hyapp.activity.v1.ConsumeFirstRechargeRewardResponse.claim:type_name -> hyapp.activity.v1.FirstRechargeRewardClaim - 0, // 66: hyapp.activity.v1.GetFirstRechargeRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 80, // 67: hyapp.activity.v1.GetFirstRechargeRewardConfigResponse.config:type_name -> hyapp.activity.v1.FirstRechargeRewardConfig - 0, // 68: hyapp.activity.v1.UpdateFirstRechargeRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 79, // 69: hyapp.activity.v1.UpdateFirstRechargeRewardConfigRequest.tiers:type_name -> hyapp.activity.v1.FirstRechargeRewardTier - 80, // 70: hyapp.activity.v1.UpdateFirstRechargeRewardConfigResponse.config:type_name -> hyapp.activity.v1.FirstRechargeRewardConfig - 0, // 71: hyapp.activity.v1.ListFirstRechargeRewardClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 81, // 72: hyapp.activity.v1.ListFirstRechargeRewardClaimsResponse.claims:type_name -> hyapp.activity.v1.FirstRechargeRewardClaim - 93, // 73: hyapp.activity.v1.CumulativeRechargeRewardConfig.tiers:type_name -> hyapp.activity.v1.CumulativeRechargeRewardTier - 94, // 74: hyapp.activity.v1.CumulativeRechargeRewardStatus.config:type_name -> hyapp.activity.v1.CumulativeRechargeRewardConfig - 96, // 75: hyapp.activity.v1.CumulativeRechargeRewardStatus.progress:type_name -> hyapp.activity.v1.CumulativeRechargeRewardProgress - 95, // 76: hyapp.activity.v1.CumulativeRechargeRewardStatus.grants:type_name -> hyapp.activity.v1.CumulativeRechargeRewardGrant - 0, // 77: hyapp.activity.v1.GetCumulativeRechargeRewardStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 97, // 78: hyapp.activity.v1.GetCumulativeRechargeRewardStatusResponse.status:type_name -> hyapp.activity.v1.CumulativeRechargeRewardStatus - 0, // 79: hyapp.activity.v1.ConsumeCumulativeRechargeRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 95, // 80: hyapp.activity.v1.ConsumeCumulativeRechargeRewardResponse.grants:type_name -> hyapp.activity.v1.CumulativeRechargeRewardGrant - 0, // 81: hyapp.activity.v1.GetCumulativeRechargeRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 94, // 82: hyapp.activity.v1.GetCumulativeRechargeRewardConfigResponse.config:type_name -> hyapp.activity.v1.CumulativeRechargeRewardConfig - 0, // 83: hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 93, // 84: hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigRequest.tiers:type_name -> hyapp.activity.v1.CumulativeRechargeRewardTier - 94, // 85: hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigResponse.config:type_name -> hyapp.activity.v1.CumulativeRechargeRewardConfig - 0, // 86: hyapp.activity.v1.ListCumulativeRechargeRewardGrantsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 95, // 87: hyapp.activity.v1.ListCumulativeRechargeRewardGrantsResponse.grants:type_name -> hyapp.activity.v1.CumulativeRechargeRewardGrant - 108, // 88: hyapp.activity.v1.InviteActivityRewardConfig.tiers:type_name -> hyapp.activity.v1.InviteActivityRewardTier - 109, // 89: hyapp.activity.v1.InviteActivityRewardStatus.config:type_name -> hyapp.activity.v1.InviteActivityRewardConfig - 110, // 90: hyapp.activity.v1.InviteActivityRewardStatus.progress:type_name -> hyapp.activity.v1.InviteActivityRewardProgress - 111, // 91: hyapp.activity.v1.InviteActivityRewardStatus.claims:type_name -> hyapp.activity.v1.InviteActivityRewardClaim - 0, // 92: hyapp.activity.v1.GetInviteActivityRewardStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 112, // 93: hyapp.activity.v1.GetInviteActivityRewardStatusResponse.status:type_name -> hyapp.activity.v1.InviteActivityRewardStatus - 0, // 94: hyapp.activity.v1.ClaimInviteActivityRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 111, // 95: hyapp.activity.v1.ClaimInviteActivityRewardResponse.claim:type_name -> hyapp.activity.v1.InviteActivityRewardClaim - 112, // 96: hyapp.activity.v1.ClaimInviteActivityRewardResponse.status:type_name -> hyapp.activity.v1.InviteActivityRewardStatus - 0, // 97: hyapp.activity.v1.ListInviteActivityLeaderboardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 117, // 98: hyapp.activity.v1.ListInviteActivityLeaderboardResponse.entries:type_name -> hyapp.activity.v1.InviteActivityLeaderboardEntry - 0, // 99: hyapp.activity.v1.GetInviteActivityRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 109, // 100: hyapp.activity.v1.GetInviteActivityRewardConfigResponse.config:type_name -> hyapp.activity.v1.InviteActivityRewardConfig - 0, // 101: hyapp.activity.v1.UpdateInviteActivityRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 108, // 102: hyapp.activity.v1.UpdateInviteActivityRewardConfigRequest.tiers:type_name -> hyapp.activity.v1.InviteActivityRewardTier - 109, // 103: hyapp.activity.v1.UpdateInviteActivityRewardConfigResponse.config:type_name -> hyapp.activity.v1.InviteActivityRewardConfig - 0, // 104: hyapp.activity.v1.ListInviteActivityRewardClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 111, // 105: hyapp.activity.v1.ListInviteActivityRewardClaimsResponse.claims:type_name -> hyapp.activity.v1.InviteActivityRewardClaim - 0, // 106: hyapp.activity.v1.ListInviteActivityInviteesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 126, // 107: hyapp.activity.v1.ListInviteActivityInviteesResponse.invitees:type_name -> hyapp.activity.v1.InviteActivityRewardInviteeSummary - 126, // 108: hyapp.activity.v1.InviteActivityRewardSummary.invitees:type_name -> hyapp.activity.v1.InviteActivityRewardInviteeSummary - 0, // 109: hyapp.activity.v1.ListInviteActivityRewardSummariesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 129, // 110: hyapp.activity.v1.ListInviteActivityRewardSummariesResponse.summaries:type_name -> hyapp.activity.v1.InviteActivityRewardSummary - 132, // 111: hyapp.activity.v1.RoomTurnoverRewardConfig.tiers:type_name -> hyapp.activity.v1.RoomTurnoverRewardTier - 133, // 112: hyapp.activity.v1.RoomTurnoverRewardStatus.config:type_name -> hyapp.activity.v1.RoomTurnoverRewardConfig - 132, // 113: hyapp.activity.v1.RoomTurnoverRewardStatus.matched_tier:type_name -> hyapp.activity.v1.RoomTurnoverRewardTier - 134, // 114: hyapp.activity.v1.RoomTurnoverRewardStatus.latest_settlement:type_name -> hyapp.activity.v1.RoomTurnoverRewardSettlement - 0, // 115: hyapp.activity.v1.GetRoomTurnoverRewardStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 135, // 116: hyapp.activity.v1.GetRoomTurnoverRewardStatusResponse.status:type_name -> hyapp.activity.v1.RoomTurnoverRewardStatus - 0, // 117: hyapp.activity.v1.GetRoomTurnoverRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 133, // 118: hyapp.activity.v1.GetRoomTurnoverRewardConfigResponse.config:type_name -> hyapp.activity.v1.RoomTurnoverRewardConfig - 0, // 119: hyapp.activity.v1.UpdateRoomTurnoverRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 132, // 120: hyapp.activity.v1.UpdateRoomTurnoverRewardConfigRequest.tiers:type_name -> hyapp.activity.v1.RoomTurnoverRewardTier - 133, // 121: hyapp.activity.v1.UpdateRoomTurnoverRewardConfigResponse.config:type_name -> hyapp.activity.v1.RoomTurnoverRewardConfig - 0, // 122: hyapp.activity.v1.ListRoomTurnoverRewardSettlementsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 134, // 123: hyapp.activity.v1.ListRoomTurnoverRewardSettlementsResponse.settlements:type_name -> hyapp.activity.v1.RoomTurnoverRewardSettlement - 0, // 124: hyapp.activity.v1.RetryRoomTurnoverRewardSettlementRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 134, // 125: hyapp.activity.v1.RetryRoomTurnoverRewardSettlementResponse.settlement:type_name -> hyapp.activity.v1.RoomTurnoverRewardSettlement - 146, // 126: hyapp.activity.v1.SevenDayCheckInConfig.rewards:type_name -> hyapp.activity.v1.SevenDayCheckInReward - 0, // 127: hyapp.activity.v1.GetSevenDayCheckInStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 148, // 128: hyapp.activity.v1.GetSevenDayCheckInStatusResponse.rewards:type_name -> hyapp.activity.v1.SevenDayCheckInRewardStatus - 0, // 129: hyapp.activity.v1.SignSevenDayCheckInRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 130: hyapp.activity.v1.GetSevenDayCheckInConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 147, // 131: hyapp.activity.v1.GetSevenDayCheckInConfigResponse.config:type_name -> hyapp.activity.v1.SevenDayCheckInConfig - 0, // 132: hyapp.activity.v1.UpdateSevenDayCheckInConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 146, // 133: hyapp.activity.v1.UpdateSevenDayCheckInConfigRequest.rewards:type_name -> hyapp.activity.v1.SevenDayCheckInReward - 147, // 134: hyapp.activity.v1.UpdateSevenDayCheckInConfigResponse.config:type_name -> hyapp.activity.v1.SevenDayCheckInConfig - 0, // 135: hyapp.activity.v1.ListSevenDayCheckInClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 157, // 136: hyapp.activity.v1.ListSevenDayCheckInClaimsResponse.claims:type_name -> hyapp.activity.v1.SevenDayCheckInClaim - 0, // 137: hyapp.activity.v1.GetMyLevelOverviewRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 163, // 138: hyapp.activity.v1.GetMyLevelOverviewResponse.tracks:type_name -> hyapp.activity.v1.LevelTrackOverview - 0, // 139: hyapp.activity.v1.GetLevelTrackRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 163, // 140: hyapp.activity.v1.GetLevelTrackResponse.overview:type_name -> hyapp.activity.v1.LevelTrackOverview - 161, // 141: hyapp.activity.v1.GetLevelTrackResponse.rules:type_name -> hyapp.activity.v1.LevelRule - 162, // 142: hyapp.activity.v1.GetLevelTrackResponse.tiers:type_name -> hyapp.activity.v1.LevelTier - 168, // 143: hyapp.activity.v1.UserLevelDisplayProfile.wealth:type_name -> hyapp.activity.v1.LevelDisplayTrackProfile - 168, // 144: hyapp.activity.v1.UserLevelDisplayProfile.game:type_name -> hyapp.activity.v1.LevelDisplayTrackProfile - 168, // 145: hyapp.activity.v1.UserLevelDisplayProfile.charm:type_name -> hyapp.activity.v1.LevelDisplayTrackProfile - 0, // 146: hyapp.activity.v1.BatchGetUserLevelDisplayProfilesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 169, // 147: hyapp.activity.v1.BatchGetUserLevelDisplayProfilesResponse.profiles:type_name -> hyapp.activity.v1.UserLevelDisplayProfile - 0, // 148: hyapp.activity.v1.ListLevelRewardsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 172, // 149: hyapp.activity.v1.ListLevelRewardsResponse.rewards:type_name -> hyapp.activity.v1.LevelRewardJob - 0, // 150: hyapp.activity.v1.ConsumeLevelEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 151: hyapp.activity.v1.SetUserLevelRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 179, // 152: hyapp.activity.v1.AdminUserLevelProfile.tracks:type_name -> hyapp.activity.v1.AdminLevelTrackProfile - 0, // 153: hyapp.activity.v1.BatchGetUserLevelAdminProfilesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 180, // 154: hyapp.activity.v1.BatchGetUserLevelAdminProfilesResponse.profiles:type_name -> hyapp.activity.v1.AdminUserLevelProfile - 0, // 155: hyapp.activity.v1.AdjustTemporaryUserLevelsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 183, // 156: hyapp.activity.v1.AdjustTemporaryUserLevelsRequest.adjustments:type_name -> hyapp.activity.v1.TemporaryLevelAdjustment - 180, // 157: hyapp.activity.v1.AdjustTemporaryUserLevelsResponse.profile:type_name -> hyapp.activity.v1.AdminUserLevelProfile - 0, // 158: hyapp.activity.v1.IssueRegistrationLevelBadgesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 186, // 159: hyapp.activity.v1.IssueRegistrationLevelBadgesResponse.grants:type_name -> hyapp.activity.v1.RegistrationLevelBadgeGrant - 0, // 160: hyapp.activity.v1.UpsertLevelTrackRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 160, // 161: hyapp.activity.v1.UpsertLevelTrackResponse.track:type_name -> hyapp.activity.v1.LevelTrack - 0, // 162: hyapp.activity.v1.UpsertLevelRuleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 161, // 163: hyapp.activity.v1.UpsertLevelRuleResponse.rule:type_name -> hyapp.activity.v1.LevelRule - 0, // 164: hyapp.activity.v1.UpsertLevelTierRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 162, // 165: hyapp.activity.v1.UpsertLevelTierResponse.tier:type_name -> hyapp.activity.v1.LevelTier - 0, // 166: hyapp.activity.v1.BatchUpsertLevelConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 161, // 167: hyapp.activity.v1.BatchUpsertLevelConfigRequest.rules:type_name -> hyapp.activity.v1.LevelRule - 162, // 168: hyapp.activity.v1.BatchUpsertLevelConfigRequest.tiers:type_name -> hyapp.activity.v1.LevelTier - 161, // 169: hyapp.activity.v1.BatchUpsertLevelConfigResponse.rules:type_name -> hyapp.activity.v1.LevelRule - 162, // 170: hyapp.activity.v1.BatchUpsertLevelConfigResponse.tiers:type_name -> hyapp.activity.v1.LevelTier - 0, // 171: hyapp.activity.v1.ListLevelConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 160, // 172: hyapp.activity.v1.ListLevelConfigResponse.tracks:type_name -> hyapp.activity.v1.LevelTrack - 161, // 173: hyapp.activity.v1.ListLevelConfigResponse.rules:type_name -> hyapp.activity.v1.LevelRule - 162, // 174: hyapp.activity.v1.ListLevelConfigResponse.tiers:type_name -> hyapp.activity.v1.LevelTier - 199, // 175: hyapp.activity.v1.AchievementDefinition.conditions:type_name -> hyapp.activity.v1.AchievementCondition - 200, // 176: hyapp.activity.v1.UserAchievement.definition:type_name -> hyapp.activity.v1.AchievementDefinition - 0, // 177: hyapp.activity.v1.ListAchievementsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 201, // 178: hyapp.activity.v1.ListAchievementsResponse.achievements:type_name -> hyapp.activity.v1.UserAchievement - 0, // 179: hyapp.activity.v1.ConsumeAchievementEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 0, // 180: hyapp.activity.v1.ListMyBadgesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 206, // 181: hyapp.activity.v1.ListMyBadgesResponse.strip_badges:type_name -> hyapp.activity.v1.BadgeDisplayItem - 206, // 182: hyapp.activity.v1.ListMyBadgesResponse.profile_tile_badges:type_name -> hyapp.activity.v1.BadgeDisplayItem - 206, // 183: hyapp.activity.v1.ListMyBadgesResponse.honor_badges:type_name -> hyapp.activity.v1.BadgeDisplayItem - 0, // 184: hyapp.activity.v1.SetBadgeDisplayRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 206, // 185: hyapp.activity.v1.SetBadgeDisplayRequest.items:type_name -> hyapp.activity.v1.BadgeDisplayItem - 208, // 186: hyapp.activity.v1.SetBadgeDisplayResponse.profile:type_name -> hyapp.activity.v1.ListMyBadgesResponse - 0, // 187: hyapp.activity.v1.UpsertAchievementDefinitionRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 199, // 188: hyapp.activity.v1.UpsertAchievementDefinitionRequest.conditions:type_name -> hyapp.activity.v1.AchievementCondition - 200, // 189: hyapp.activity.v1.UpsertAchievementDefinitionResponse.achievement:type_name -> hyapp.activity.v1.AchievementDefinition - 0, // 190: hyapp.activity.v1.DeleteAchievementDefinitionRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 200, // 191: hyapp.activity.v1.DeleteAchievementDefinitionResponse.achievement:type_name -> hyapp.activity.v1.AchievementDefinition - 215, // 192: hyapp.activity.v1.WheelRuleConfig.tiers:type_name -> hyapp.activity.v1.WheelPrizeTier - 0, // 193: hyapp.activity.v1.WheelDrawMeta.meta:type_name -> hyapp.activity.v1.RequestMeta - 219, // 194: hyapp.activity.v1.WheelDrawResult.rewards:type_name -> hyapp.activity.v1.WheelDrawReward - 217, // 195: hyapp.activity.v1.ExecuteWheelDrawRequest.wheel:type_name -> hyapp.activity.v1.WheelDrawMeta - 218, // 196: hyapp.activity.v1.ExecuteWheelDrawResponse.result:type_name -> hyapp.activity.v1.WheelDrawResult - 0, // 197: hyapp.activity.v1.GetWheelConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 216, // 198: hyapp.activity.v1.GetWheelConfigResponse.config:type_name -> hyapp.activity.v1.WheelRuleConfig - 0, // 199: hyapp.activity.v1.UpsertWheelConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 216, // 200: hyapp.activity.v1.UpsertWheelConfigRequest.config:type_name -> hyapp.activity.v1.WheelRuleConfig - 216, // 201: hyapp.activity.v1.UpsertWheelConfigResponse.config:type_name -> hyapp.activity.v1.WheelRuleConfig - 0, // 202: hyapp.activity.v1.ListWheelDrawsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 218, // 203: hyapp.activity.v1.ListWheelDrawsResponse.draws:type_name -> hyapp.activity.v1.WheelDrawResult - 0, // 204: hyapp.activity.v1.GetWheelDrawSummaryRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 228, // 205: hyapp.activity.v1.GetWheelDrawSummaryResponse.summary:type_name -> hyapp.activity.v1.WheelDrawSummary - 231, // 206: hyapp.activity.v1.WeeklyStarCycle.gifts:type_name -> hyapp.activity.v1.WeeklyStarGift - 232, // 207: hyapp.activity.v1.WeeklyStarCycle.rewards:type_name -> hyapp.activity.v1.WeeklyStarReward - 0, // 208: hyapp.activity.v1.ListWeeklyStarCyclesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 233, // 209: hyapp.activity.v1.ListWeeklyStarCyclesResponse.cycles:type_name -> hyapp.activity.v1.WeeklyStarCycle - 0, // 210: hyapp.activity.v1.GetWeeklyStarCycleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 233, // 211: hyapp.activity.v1.GetWeeklyStarCycleResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle - 0, // 212: hyapp.activity.v1.UpsertWeeklyStarCycleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 233, // 213: hyapp.activity.v1.UpsertWeeklyStarCycleRequest.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle - 233, // 214: hyapp.activity.v1.UpsertWeeklyStarCycleResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle - 0, // 215: hyapp.activity.v1.SetWeeklyStarCycleStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 233, // 216: hyapp.activity.v1.SetWeeklyStarCycleStatusResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle - 0, // 217: hyapp.activity.v1.ListWeeklyStarLeaderboardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 233, // 218: hyapp.activity.v1.ListWeeklyStarLeaderboardResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle - 234, // 219: hyapp.activity.v1.ListWeeklyStarLeaderboardResponse.entries:type_name -> hyapp.activity.v1.WeeklyStarLeaderboardEntry - 0, // 220: hyapp.activity.v1.ListWeeklyStarSettlementsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 235, // 221: hyapp.activity.v1.ListWeeklyStarSettlementsResponse.settlements:type_name -> hyapp.activity.v1.WeeklyStarSettlement - 0, // 222: hyapp.activity.v1.GetWeeklyStarCurrentRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 233, // 223: hyapp.activity.v1.GetWeeklyStarCurrentResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle - 234, // 224: hyapp.activity.v1.GetWeeklyStarCurrentResponse.top_entries:type_name -> hyapp.activity.v1.WeeklyStarLeaderboardEntry - 234, // 225: hyapp.activity.v1.GetWeeklyStarCurrentResponse.my_entry:type_name -> hyapp.activity.v1.WeeklyStarLeaderboardEntry - 0, // 226: hyapp.activity.v1.ListWeeklyStarHistoryRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 233, // 227: hyapp.activity.v1.WeeklyStarHistoryCycle.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle - 234, // 228: hyapp.activity.v1.WeeklyStarHistoryCycle.top_entries:type_name -> hyapp.activity.v1.WeeklyStarLeaderboardEntry - 251, // 229: hyapp.activity.v1.ListWeeklyStarHistoryResponse.cycles:type_name -> hyapp.activity.v1.WeeklyStarHistoryCycle - 253, // 230: hyapp.activity.v1.CPWeeklyRankConfig.rewards:type_name -> hyapp.activity.v1.CPWeeklyRankReward - 255, // 231: hyapp.activity.v1.CPWeeklyRankEntry.user_a:type_name -> hyapp.activity.v1.CPWeeklyRankUser - 255, // 232: hyapp.activity.v1.CPWeeklyRankEntry.user_b:type_name -> hyapp.activity.v1.CPWeeklyRankUser - 0, // 233: hyapp.activity.v1.GetCPWeeklyRankStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 254, // 234: hyapp.activity.v1.GetCPWeeklyRankStatusResponse.config:type_name -> hyapp.activity.v1.CPWeeklyRankConfig - 256, // 235: hyapp.activity.v1.GetCPWeeklyRankStatusResponse.entries:type_name -> hyapp.activity.v1.CPWeeklyRankEntry - 256, // 236: hyapp.activity.v1.GetCPWeeklyRankStatusResponse.previous_entries:type_name -> hyapp.activity.v1.CPWeeklyRankEntry - 0, // 237: hyapp.activity.v1.GetCPWeeklyRankConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 254, // 238: hyapp.activity.v1.GetCPWeeklyRankConfigResponse.config:type_name -> hyapp.activity.v1.CPWeeklyRankConfig - 0, // 239: hyapp.activity.v1.UpdateCPWeeklyRankConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 254, // 240: hyapp.activity.v1.UpdateCPWeeklyRankConfigRequest.config:type_name -> hyapp.activity.v1.CPWeeklyRankConfig - 254, // 241: hyapp.activity.v1.UpdateCPWeeklyRankConfigResponse.config:type_name -> hyapp.activity.v1.CPWeeklyRankConfig - 0, // 242: hyapp.activity.v1.ListCPWeeklyRankSettlementsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 257, // 243: hyapp.activity.v1.ListCPWeeklyRankSettlementsResponse.settlements:type_name -> hyapp.activity.v1.CPWeeklyRankSettlement - 266, // 244: hyapp.activity.v1.AgencyOpeningCycle.rewards:type_name -> hyapp.activity.v1.AgencyOpeningReward - 0, // 245: hyapp.activity.v1.ListAgencyOpeningCyclesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 267, // 246: hyapp.activity.v1.ListAgencyOpeningCyclesResponse.cycles:type_name -> hyapp.activity.v1.AgencyOpeningCycle - 0, // 247: hyapp.activity.v1.GetAgencyOpeningCycleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 267, // 248: hyapp.activity.v1.GetAgencyOpeningCycleResponse.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle - 0, // 249: hyapp.activity.v1.UpsertAgencyOpeningCycleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 267, // 250: hyapp.activity.v1.UpsertAgencyOpeningCycleRequest.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle - 267, // 251: hyapp.activity.v1.UpsertAgencyOpeningCycleResponse.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle - 0, // 252: hyapp.activity.v1.SetAgencyOpeningCycleStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 267, // 253: hyapp.activity.v1.SetAgencyOpeningCycleStatusResponse.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle - 0, // 254: hyapp.activity.v1.ListAgencyOpeningApplicationsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 268, // 255: hyapp.activity.v1.ListAgencyOpeningApplicationsResponse.applications:type_name -> hyapp.activity.v1.AgencyOpeningApplication - 0, // 256: hyapp.activity.v1.ReviewAgencyOpeningApplicationRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 268, // 257: hyapp.activity.v1.ReviewAgencyOpeningApplicationResponse.application:type_name -> hyapp.activity.v1.AgencyOpeningApplication - 0, // 258: hyapp.activity.v1.GetAgencyOpeningStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 267, // 259: hyapp.activity.v1.GetAgencyOpeningStatusResponse.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle - 268, // 260: hyapp.activity.v1.GetAgencyOpeningStatusResponse.application:type_name -> hyapp.activity.v1.AgencyOpeningApplication - 269, // 261: hyapp.activity.v1.GetAgencyOpeningStatusResponse.agency:type_name -> hyapp.activity.v1.AgencyOpeningAgencySnapshot - 0, // 262: hyapp.activity.v1.ApplyAgencyOpeningRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 268, // 263: hyapp.activity.v1.ApplyAgencyOpeningResponse.application:type_name -> hyapp.activity.v1.AgencyOpeningApplication - 288, // 264: hyapp.activity.v1.ActivityTemplateTask.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem - 288, // 265: hyapp.activity.v1.ActivityTemplateRankReward.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem - 286, // 266: hyapp.activity.v1.ActivityTemplate.locales:type_name -> hyapp.activity.v1.ActivityTemplateLocale - 287, // 267: hyapp.activity.v1.ActivityTemplate.gifts:type_name -> hyapp.activity.v1.ActivityTemplateGift - 289, // 268: hyapp.activity.v1.ActivityTemplate.tasks:type_name -> hyapp.activity.v1.ActivityTemplateTask - 290, // 269: hyapp.activity.v1.ActivityTemplate.rank_rewards:type_name -> hyapp.activity.v1.ActivityTemplateRankReward - 291, // 270: hyapp.activity.v1.ActivityTemplate.assets:type_name -> hyapp.activity.v1.ActivityTemplateAsset - 0, // 271: hyapp.activity.v1.ListActivityTemplatesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 293, // 272: hyapp.activity.v1.ListActivityTemplatesResponse.templates:type_name -> hyapp.activity.v1.ActivityTemplateSummary - 0, // 273: hyapp.activity.v1.CreateActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 292, // 274: hyapp.activity.v1.CreateActivityTemplateRequest.template:type_name -> hyapp.activity.v1.ActivityTemplate - 292, // 275: hyapp.activity.v1.CreateActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate - 0, // 276: hyapp.activity.v1.GetActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 292, // 277: hyapp.activity.v1.GetActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate - 0, // 278: hyapp.activity.v1.UpdateActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 292, // 279: hyapp.activity.v1.UpdateActivityTemplateRequest.template:type_name -> hyapp.activity.v1.ActivityTemplate - 292, // 280: hyapp.activity.v1.UpdateActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate - 0, // 281: hyapp.activity.v1.SetActivityTemplateStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 292, // 282: hyapp.activity.v1.SetActivityTemplateStatusResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate - 0, // 283: hyapp.activity.v1.DeleteActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 292, // 284: hyapp.activity.v1.DeleteActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate - 292, // 285: hyapp.activity.v1.ActivityTemplateVersion.snapshot:type_name -> hyapp.activity.v1.ActivityTemplate - 0, // 286: hyapp.activity.v1.ListActivityTemplateVersionsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 306, // 287: hyapp.activity.v1.ListActivityTemplateVersionsResponse.versions:type_name -> hyapp.activity.v1.ActivityTemplateVersion - 0, // 288: hyapp.activity.v1.CloneActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 292, // 289: hyapp.activity.v1.CloneActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate - 0, // 290: hyapp.activity.v1.ValidateActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 292, // 291: hyapp.activity.v1.ValidateActivityTemplateRequest.template:type_name -> hyapp.activity.v1.ActivityTemplate - 311, // 292: hyapp.activity.v1.ValidateActivityTemplateResponse.issues:type_name -> hyapp.activity.v1.ActivityTemplateValidationIssue - 292, // 293: hyapp.activity.v1.ActivityTemplateRuntime.template:type_name -> hyapp.activity.v1.ActivityTemplate - 288, // 294: hyapp.activity.v1.ActivityTemplateRuntimeTask.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem - 288, // 295: hyapp.activity.v1.ActivityTemplateTaskClaim.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem - 0, // 296: hyapp.activity.v1.GetCurrentActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 314, // 297: hyapp.activity.v1.GetCurrentActivityTemplateResponse.runtime:type_name -> hyapp.activity.v1.ActivityTemplateRuntime - 0, // 298: hyapp.activity.v1.VisitActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 314, // 299: hyapp.activity.v1.VisitActivityTemplateResponse.runtime:type_name -> hyapp.activity.v1.ActivityTemplateRuntime - 315, // 300: hyapp.activity.v1.VisitActivityTemplateResponse.tasks:type_name -> hyapp.activity.v1.ActivityTemplateRuntimeTask - 0, // 301: hyapp.activity.v1.ListActivityTemplateTasksRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 314, // 302: hyapp.activity.v1.ListActivityTemplateTasksResponse.runtime:type_name -> hyapp.activity.v1.ActivityTemplateRuntime - 315, // 303: hyapp.activity.v1.ListActivityTemplateTasksResponse.tasks:type_name -> hyapp.activity.v1.ActivityTemplateRuntimeTask - 0, // 304: hyapp.activity.v1.ClaimActivityTemplateTaskRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 316, // 305: hyapp.activity.v1.ClaimActivityTemplateTaskRewardResponse.claim:type_name -> hyapp.activity.v1.ActivityTemplateTaskClaim - 0, // 306: hyapp.activity.v1.ListActivityTemplateLeaderboardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 314, // 307: hyapp.activity.v1.ListActivityTemplateLeaderboardResponse.runtime:type_name -> hyapp.activity.v1.ActivityTemplateRuntime - 317, // 308: hyapp.activity.v1.ListActivityTemplateLeaderboardResponse.entries:type_name -> hyapp.activity.v1.ActivityTemplateLeaderboardEntry - 317, // 309: hyapp.activity.v1.ListActivityTemplateLeaderboardResponse.my_entry:type_name -> hyapp.activity.v1.ActivityTemplateLeaderboardEntry - 288, // 310: hyapp.activity.v1.ActivityTemplateRewardJob.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem - 0, // 311: hyapp.activity.v1.AdminListActivityTemplateLeaderboardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 328, // 312: hyapp.activity.v1.AdminListActivityTemplateLeaderboardResponse.period:type_name -> hyapp.activity.v1.ActivityTemplateRankPeriod - 317, // 313: hyapp.activity.v1.AdminListActivityTemplateLeaderboardResponse.entries:type_name -> hyapp.activity.v1.ActivityTemplateLeaderboardEntry - 0, // 314: hyapp.activity.v1.ListActivityTemplateRewardJobsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 329, // 315: hyapp.activity.v1.ListActivityTemplateRewardJobsResponse.jobs:type_name -> hyapp.activity.v1.ActivityTemplateRewardJob - 0, // 316: hyapp.activity.v1.RetryActivityTemplateRewardJobRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 329, // 317: hyapp.activity.v1.RetryActivityTemplateRewardJobResponse.job:type_name -> hyapp.activity.v1.ActivityTemplateRewardJob - 0, // 318: hyapp.activity.v1.ListActivityTemplateTaskClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 316, // 319: hyapp.activity.v1.ListActivityTemplateTaskClaimsResponse.claims:type_name -> hyapp.activity.v1.ActivityTemplateTaskClaim - 0, // 320: hyapp.activity.v1.RetryActivityTemplateTaskClaimRequest.meta:type_name -> hyapp.activity.v1.RequestMeta - 316, // 321: hyapp.activity.v1.RetryActivityTemplateTaskClaimResponse.claim:type_name -> hyapp.activity.v1.ActivityTemplateTaskClaim - 1, // 322: hyapp.activity.v1.ActivityService.PingActivity:input_type -> hyapp.activity.v1.PingActivityRequest - 3, // 323: hyapp.activity.v1.ActivityService.GetActivityStatus:input_type -> hyapp.activity.v1.GetActivityStatusRequest - 6, // 324: hyapp.activity.v1.MessageInboxService.ListMessageTabs:input_type -> hyapp.activity.v1.ListMessageTabsRequest - 9, // 325: hyapp.activity.v1.MessageInboxService.ListInboxMessages:input_type -> hyapp.activity.v1.ListInboxMessagesRequest - 11, // 326: hyapp.activity.v1.MessageInboxService.MarkInboxMessageRead:input_type -> hyapp.activity.v1.MarkInboxMessageReadRequest - 13, // 327: hyapp.activity.v1.MessageInboxService.MarkInboxSectionRead:input_type -> hyapp.activity.v1.MarkInboxSectionReadRequest - 15, // 328: hyapp.activity.v1.MessageInboxService.DeleteInboxMessage:input_type -> hyapp.activity.v1.DeleteInboxMessageRequest - 17, // 329: hyapp.activity.v1.MessageInboxService.CreateInboxMessage:input_type -> hyapp.activity.v1.CreateInboxMessageRequest - 19, // 330: hyapp.activity.v1.MessageInboxService.CreateFanoutJob:input_type -> hyapp.activity.v1.CreateFanoutJobRequest - 22, // 331: hyapp.activity.v1.MessageActionConfirmService.AcceptActionConfirm:input_type -> hyapp.activity.v1.AcceptActionConfirmRequest - 24, // 332: hyapp.activity.v1.MessageActionConfirmService.RejectActionConfirm:input_type -> hyapp.activity.v1.RejectActionConfirmRequest - 26, // 333: hyapp.activity.v1.MessageActionConfirmService.BatchGetActionConfirmStatus:input_type -> hyapp.activity.v1.BatchGetActionConfirmStatusRequest - 28, // 334: hyapp.activity.v1.MessageActionConfirmService.ListConversationActionConfirms:input_type -> hyapp.activity.v1.ListConversationActionConfirmsRequest - 30, // 335: hyapp.activity.v1.ActivityCronService.ProcessMessageFanoutBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 30, // 336: hyapp.activity.v1.ActivityCronService.ProcessLevelRewardBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 30, // 337: hyapp.activity.v1.ActivityCronService.ProcessTemporaryLevelBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 30, // 338: hyapp.activity.v1.ActivityCronService.ProcessAchievementRewardBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 30, // 339: hyapp.activity.v1.ActivityCronService.ProcessRoomTurnoverRewardSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 30, // 340: hyapp.activity.v1.ActivityCronService.ProcessWeeklyStarSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 30, // 341: hyapp.activity.v1.ActivityCronService.ProcessCPWeeklyRankSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 30, // 342: hyapp.activity.v1.ActivityCronService.ProcessAgencyOpeningSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 30, // 343: hyapp.activity.v1.ActivityCronService.ProcessActivityTemplateSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 318, // 344: hyapp.activity.v1.ActivityTemplateRuntimeService.GetCurrentActivityTemplate:input_type -> hyapp.activity.v1.GetCurrentActivityTemplateRequest - 320, // 345: hyapp.activity.v1.ActivityTemplateRuntimeService.VisitActivityTemplate:input_type -> hyapp.activity.v1.VisitActivityTemplateRequest - 322, // 346: hyapp.activity.v1.ActivityTemplateRuntimeService.ListActivityTemplateTasks:input_type -> hyapp.activity.v1.ListActivityTemplateTasksRequest - 324, // 347: hyapp.activity.v1.ActivityTemplateRuntimeService.ClaimActivityTemplateTaskReward:input_type -> hyapp.activity.v1.ClaimActivityTemplateTaskRewardRequest - 326, // 348: hyapp.activity.v1.ActivityTemplateRuntimeService.ListActivityTemplateLeaderboard:input_type -> hyapp.activity.v1.ListActivityTemplateLeaderboardRequest - 35, // 349: hyapp.activity.v1.TaskService.ListUserTasks:input_type -> hyapp.activity.v1.ListUserTasksRequest - 37, // 350: hyapp.activity.v1.TaskService.ClaimTaskReward:input_type -> hyapp.activity.v1.ClaimTaskRewardRequest - 39, // 351: hyapp.activity.v1.TaskService.ConsumeTaskEvent:input_type -> hyapp.activity.v1.ConsumeTaskEventRequest - 164, // 352: hyapp.activity.v1.GrowthLevelService.GetMyLevelOverview:input_type -> hyapp.activity.v1.GetMyLevelOverviewRequest - 166, // 353: hyapp.activity.v1.GrowthLevelService.GetLevelTrack:input_type -> hyapp.activity.v1.GetLevelTrackRequest - 170, // 354: hyapp.activity.v1.GrowthLevelService.BatchGetUserLevelDisplayProfiles:input_type -> hyapp.activity.v1.BatchGetUserLevelDisplayProfilesRequest - 173, // 355: hyapp.activity.v1.GrowthLevelService.ListLevelRewards:input_type -> hyapp.activity.v1.ListLevelRewardsRequest - 175, // 356: hyapp.activity.v1.GrowthLevelService.ConsumeLevelEvent:input_type -> hyapp.activity.v1.ConsumeLevelEventRequest - 177, // 357: hyapp.activity.v1.GrowthLevelService.SetUserLevel:input_type -> hyapp.activity.v1.SetUserLevelRequest - 187, // 358: hyapp.activity.v1.GrowthLevelService.IssueRegistrationLevelBadges:input_type -> hyapp.activity.v1.IssueRegistrationLevelBadgesRequest - 202, // 359: hyapp.activity.v1.AchievementService.ListAchievements:input_type -> hyapp.activity.v1.ListAchievementsRequest - 204, // 360: hyapp.activity.v1.AchievementService.ConsumeAchievementEvent:input_type -> hyapp.activity.v1.ConsumeAchievementEventRequest - 207, // 361: hyapp.activity.v1.AchievementService.ListMyBadges:input_type -> hyapp.activity.v1.ListMyBadgesRequest - 209, // 362: hyapp.activity.v1.AchievementService.SetBadgeDisplay:input_type -> hyapp.activity.v1.SetBadgeDisplayRequest - 220, // 363: hyapp.activity.v1.WheelService.ExecuteWheelDraw:input_type -> hyapp.activity.v1.ExecuteWheelDrawRequest - 136, // 364: hyapp.activity.v1.RoomTurnoverRewardService.GetRoomTurnoverRewardStatus:input_type -> hyapp.activity.v1.GetRoomTurnoverRewardStatusRequest - 248, // 365: hyapp.activity.v1.WeeklyStarService.GetWeeklyStarCurrent:input_type -> hyapp.activity.v1.GetWeeklyStarCurrentRequest - 244, // 366: hyapp.activity.v1.WeeklyStarService.ListWeeklyStarLeaderboard:input_type -> hyapp.activity.v1.ListWeeklyStarLeaderboardRequest - 250, // 367: hyapp.activity.v1.WeeklyStarService.ListWeeklyStarHistory:input_type -> hyapp.activity.v1.ListWeeklyStarHistoryRequest - 258, // 368: hyapp.activity.v1.CPWeeklyRankService.GetCPWeeklyRankStatus:input_type -> hyapp.activity.v1.GetCPWeeklyRankStatusRequest - 282, // 369: hyapp.activity.v1.AgencyOpeningService.GetAgencyOpeningStatus:input_type -> hyapp.activity.v1.GetAgencyOpeningStatusRequest - 284, // 370: hyapp.activity.v1.AgencyOpeningService.ApplyAgencyOpening:input_type -> hyapp.activity.v1.ApplyAgencyOpeningRequest - 278, // 371: hyapp.activity.v1.AgencyOpeningService.ListAgencyOpeningLeaderboard:input_type -> hyapp.activity.v1.ListAgencyOpeningApplicationsRequest - 42, // 372: hyapp.activity.v1.BroadcastService.EnsureBroadcastGroups:input_type -> hyapp.activity.v1.EnsureBroadcastGroupsRequest - 44, // 373: hyapp.activity.v1.BroadcastService.PublishRegionBroadcast:input_type -> hyapp.activity.v1.PublishRegionBroadcastRequest - 45, // 374: hyapp.activity.v1.BroadcastService.PublishGlobalBroadcast:input_type -> hyapp.activity.v1.PublishGlobalBroadcastRequest - 47, // 375: hyapp.activity.v1.BroadcastService.RemoveRegionBroadcastMember:input_type -> hyapp.activity.v1.RemoveRegionBroadcastMemberRequest - 30, // 376: hyapp.activity.v1.BroadcastService.ProcessBroadcastOutboxBatch:input_type -> hyapp.activity.v1.CronBatchRequest - 51, // 377: hyapp.activity.v1.AdminBroadcastService.GetGameWinBroadcastConfig:input_type -> hyapp.activity.v1.GetGameWinBroadcastConfigRequest - 53, // 378: hyapp.activity.v1.AdminBroadcastService.UpdateGameWinBroadcastConfig:input_type -> hyapp.activity.v1.UpdateGameWinBroadcastConfigRequest - 55, // 379: hyapp.activity.v1.RoomEventConsumerService.ConsumeRoomEvent:input_type -> hyapp.activity.v1.ConsumeRoomEventRequest - 58, // 380: hyapp.activity.v1.AdminTaskService.ListTaskDefinitions:input_type -> hyapp.activity.v1.ListTaskDefinitionsRequest - 60, // 381: hyapp.activity.v1.AdminTaskService.UpsertTaskDefinition:input_type -> hyapp.activity.v1.UpsertTaskDefinitionRequest - 62, // 382: hyapp.activity.v1.AdminTaskService.SetTaskDefinitionStatus:input_type -> hyapp.activity.v1.SetTaskDefinitionStatusRequest - 64, // 383: hyapp.activity.v1.AdminTaskService.PublishTaskRewardPolicy:input_type -> hyapp.activity.v1.PublishTaskRewardPolicyRequest - 69, // 384: hyapp.activity.v1.RegistrationRewardService.GetRegistrationRewardEligibility:input_type -> hyapp.activity.v1.GetRegistrationRewardEligibilityRequest - 71, // 385: hyapp.activity.v1.RegistrationRewardService.IssueRegistrationReward:input_type -> hyapp.activity.v1.IssueRegistrationRewardRequest - 73, // 386: hyapp.activity.v1.AdminRegistrationRewardService.GetRegistrationRewardConfig:input_type -> hyapp.activity.v1.GetRegistrationRewardConfigRequest - 75, // 387: hyapp.activity.v1.AdminRegistrationRewardService.UpdateRegistrationRewardConfig:input_type -> hyapp.activity.v1.UpdateRegistrationRewardConfigRequest - 77, // 388: hyapp.activity.v1.AdminRegistrationRewardService.ListRegistrationRewardClaims:input_type -> hyapp.activity.v1.ListRegistrationRewardClaimsRequest - 83, // 389: hyapp.activity.v1.FirstRechargeRewardService.GetFirstRechargeRewardStatus:input_type -> hyapp.activity.v1.GetFirstRechargeRewardStatusRequest - 85, // 390: hyapp.activity.v1.FirstRechargeRewardService.ConsumeFirstRechargeReward:input_type -> hyapp.activity.v1.ConsumeFirstRechargeRewardRequest - 87, // 391: hyapp.activity.v1.AdminFirstRechargeRewardService.GetFirstRechargeRewardConfig:input_type -> hyapp.activity.v1.GetFirstRechargeRewardConfigRequest - 89, // 392: hyapp.activity.v1.AdminFirstRechargeRewardService.UpdateFirstRechargeRewardConfig:input_type -> hyapp.activity.v1.UpdateFirstRechargeRewardConfigRequest - 91, // 393: hyapp.activity.v1.AdminFirstRechargeRewardService.ListFirstRechargeRewardClaims:input_type -> hyapp.activity.v1.ListFirstRechargeRewardClaimsRequest - 98, // 394: hyapp.activity.v1.CumulativeRechargeRewardService.GetCumulativeRechargeRewardStatus:input_type -> hyapp.activity.v1.GetCumulativeRechargeRewardStatusRequest - 100, // 395: hyapp.activity.v1.CumulativeRechargeRewardService.ConsumeCumulativeRechargeReward:input_type -> hyapp.activity.v1.ConsumeCumulativeRechargeRewardRequest - 113, // 396: hyapp.activity.v1.InviteActivityRewardService.GetInviteActivityRewardStatus:input_type -> hyapp.activity.v1.GetInviteActivityRewardStatusRequest - 115, // 397: hyapp.activity.v1.InviteActivityRewardService.ClaimInviteActivityReward:input_type -> hyapp.activity.v1.ClaimInviteActivityRewardRequest - 118, // 398: hyapp.activity.v1.InviteActivityRewardService.ListInviteActivityLeaderboard:input_type -> hyapp.activity.v1.ListInviteActivityLeaderboardRequest - 127, // 399: hyapp.activity.v1.InviteActivityRewardService.ListInviteActivityInvitees:input_type -> hyapp.activity.v1.ListInviteActivityInviteesRequest - 102, // 400: hyapp.activity.v1.AdminCumulativeRechargeRewardService.GetCumulativeRechargeRewardConfig:input_type -> hyapp.activity.v1.GetCumulativeRechargeRewardConfigRequest - 104, // 401: hyapp.activity.v1.AdminCumulativeRechargeRewardService.UpdateCumulativeRechargeRewardConfig:input_type -> hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigRequest - 106, // 402: hyapp.activity.v1.AdminCumulativeRechargeRewardService.ListCumulativeRechargeRewardGrants:input_type -> hyapp.activity.v1.ListCumulativeRechargeRewardGrantsRequest - 120, // 403: hyapp.activity.v1.AdminInviteActivityRewardService.GetInviteActivityRewardConfig:input_type -> hyapp.activity.v1.GetInviteActivityRewardConfigRequest - 122, // 404: hyapp.activity.v1.AdminInviteActivityRewardService.UpdateInviteActivityRewardConfig:input_type -> hyapp.activity.v1.UpdateInviteActivityRewardConfigRequest - 124, // 405: hyapp.activity.v1.AdminInviteActivityRewardService.ListInviteActivityRewardClaims:input_type -> hyapp.activity.v1.ListInviteActivityRewardClaimsRequest - 130, // 406: hyapp.activity.v1.AdminInviteActivityRewardService.ListInviteActivityRewardSummaries:input_type -> hyapp.activity.v1.ListInviteActivityRewardSummariesRequest - 138, // 407: hyapp.activity.v1.AdminRoomTurnoverRewardService.GetRoomTurnoverRewardConfig:input_type -> hyapp.activity.v1.GetRoomTurnoverRewardConfigRequest - 140, // 408: hyapp.activity.v1.AdminRoomTurnoverRewardService.UpdateRoomTurnoverRewardConfig:input_type -> hyapp.activity.v1.UpdateRoomTurnoverRewardConfigRequest - 142, // 409: hyapp.activity.v1.AdminRoomTurnoverRewardService.ListRoomTurnoverRewardSettlements:input_type -> hyapp.activity.v1.ListRoomTurnoverRewardSettlementsRequest - 144, // 410: hyapp.activity.v1.AdminRoomTurnoverRewardService.RetryRoomTurnoverRewardSettlement:input_type -> hyapp.activity.v1.RetryRoomTurnoverRewardSettlementRequest - 236, // 411: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarCycles:input_type -> hyapp.activity.v1.ListWeeklyStarCyclesRequest - 240, // 412: hyapp.activity.v1.AdminWeeklyStarService.CreateWeeklyStarCycle:input_type -> hyapp.activity.v1.UpsertWeeklyStarCycleRequest - 238, // 413: hyapp.activity.v1.AdminWeeklyStarService.GetWeeklyStarCycle:input_type -> hyapp.activity.v1.GetWeeklyStarCycleRequest - 240, // 414: hyapp.activity.v1.AdminWeeklyStarService.UpdateWeeklyStarCycle:input_type -> hyapp.activity.v1.UpsertWeeklyStarCycleRequest - 242, // 415: hyapp.activity.v1.AdminWeeklyStarService.SetWeeklyStarCycleStatus:input_type -> hyapp.activity.v1.SetWeeklyStarCycleStatusRequest - 244, // 416: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarLeaderboard:input_type -> hyapp.activity.v1.ListWeeklyStarLeaderboardRequest - 246, // 417: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarSettlements:input_type -> hyapp.activity.v1.ListWeeklyStarSettlementsRequest - 260, // 418: hyapp.activity.v1.AdminCPWeeklyRankService.GetCPWeeklyRankConfig:input_type -> hyapp.activity.v1.GetCPWeeklyRankConfigRequest - 262, // 419: hyapp.activity.v1.AdminCPWeeklyRankService.UpdateCPWeeklyRankConfig:input_type -> hyapp.activity.v1.UpdateCPWeeklyRankConfigRequest - 264, // 420: hyapp.activity.v1.AdminCPWeeklyRankService.ListCPWeeklyRankSettlements:input_type -> hyapp.activity.v1.ListCPWeeklyRankSettlementsRequest - 270, // 421: hyapp.activity.v1.AdminAgencyOpeningService.ListAgencyOpeningCycles:input_type -> hyapp.activity.v1.ListAgencyOpeningCyclesRequest - 274, // 422: hyapp.activity.v1.AdminAgencyOpeningService.CreateAgencyOpeningCycle:input_type -> hyapp.activity.v1.UpsertAgencyOpeningCycleRequest - 272, // 423: hyapp.activity.v1.AdminAgencyOpeningService.GetAgencyOpeningCycle:input_type -> hyapp.activity.v1.GetAgencyOpeningCycleRequest - 274, // 424: hyapp.activity.v1.AdminAgencyOpeningService.UpdateAgencyOpeningCycle:input_type -> hyapp.activity.v1.UpsertAgencyOpeningCycleRequest - 276, // 425: hyapp.activity.v1.AdminAgencyOpeningService.SetAgencyOpeningCycleStatus:input_type -> hyapp.activity.v1.SetAgencyOpeningCycleStatusRequest - 278, // 426: hyapp.activity.v1.AdminAgencyOpeningService.ListAgencyOpeningApplications:input_type -> hyapp.activity.v1.ListAgencyOpeningApplicationsRequest - 280, // 427: hyapp.activity.v1.AdminAgencyOpeningService.ReviewAgencyOpeningApplication:input_type -> hyapp.activity.v1.ReviewAgencyOpeningApplicationRequest - 294, // 428: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplates:input_type -> hyapp.activity.v1.ListActivityTemplatesRequest - 296, // 429: hyapp.activity.v1.AdminActivityTemplateService.CreateActivityTemplate:input_type -> hyapp.activity.v1.CreateActivityTemplateRequest - 298, // 430: hyapp.activity.v1.AdminActivityTemplateService.GetActivityTemplate:input_type -> hyapp.activity.v1.GetActivityTemplateRequest - 300, // 431: hyapp.activity.v1.AdminActivityTemplateService.UpdateActivityTemplate:input_type -> hyapp.activity.v1.UpdateActivityTemplateRequest - 302, // 432: hyapp.activity.v1.AdminActivityTemplateService.SetActivityTemplateStatus:input_type -> hyapp.activity.v1.SetActivityTemplateStatusRequest - 304, // 433: hyapp.activity.v1.AdminActivityTemplateService.DeleteActivityTemplate:input_type -> hyapp.activity.v1.DeleteActivityTemplateRequest - 307, // 434: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateVersions:input_type -> hyapp.activity.v1.ListActivityTemplateVersionsRequest - 309, // 435: hyapp.activity.v1.AdminActivityTemplateService.CloneActivityTemplate:input_type -> hyapp.activity.v1.CloneActivityTemplateRequest - 312, // 436: hyapp.activity.v1.AdminActivityTemplateService.ValidateActivityTemplate:input_type -> hyapp.activity.v1.ValidateActivityTemplateRequest - 330, // 437: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateLeaderboard:input_type -> hyapp.activity.v1.AdminListActivityTemplateLeaderboardRequest - 332, // 438: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateRewardJobs:input_type -> hyapp.activity.v1.ListActivityTemplateRewardJobsRequest - 334, // 439: hyapp.activity.v1.AdminActivityTemplateService.RetryActivityTemplateRewardJob:input_type -> hyapp.activity.v1.RetryActivityTemplateRewardJobRequest - 336, // 440: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateTaskClaims:input_type -> hyapp.activity.v1.ListActivityTemplateTaskClaimsRequest - 338, // 441: hyapp.activity.v1.AdminActivityTemplateService.RetryActivityTemplateTaskClaim:input_type -> hyapp.activity.v1.RetryActivityTemplateTaskClaimRequest - 149, // 442: hyapp.activity.v1.SevenDayCheckInService.GetSevenDayCheckInStatus:input_type -> hyapp.activity.v1.GetSevenDayCheckInStatusRequest - 151, // 443: hyapp.activity.v1.SevenDayCheckInService.SignSevenDayCheckIn:input_type -> hyapp.activity.v1.SignSevenDayCheckInRequest - 153, // 444: hyapp.activity.v1.AdminSevenDayCheckInService.GetSevenDayCheckInConfig:input_type -> hyapp.activity.v1.GetSevenDayCheckInConfigRequest - 155, // 445: hyapp.activity.v1.AdminSevenDayCheckInService.UpdateSevenDayCheckInConfig:input_type -> hyapp.activity.v1.UpdateSevenDayCheckInConfigRequest - 158, // 446: hyapp.activity.v1.AdminSevenDayCheckInService.ListSevenDayCheckInClaims:input_type -> hyapp.activity.v1.ListSevenDayCheckInClaimsRequest - 197, // 447: hyapp.activity.v1.AdminGrowthLevelService.ListLevelConfig:input_type -> hyapp.activity.v1.ListLevelConfigRequest - 189, // 448: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTrack:input_type -> hyapp.activity.v1.UpsertLevelTrackRequest - 191, // 449: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelRule:input_type -> hyapp.activity.v1.UpsertLevelRuleRequest - 193, // 450: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTier:input_type -> hyapp.activity.v1.UpsertLevelTierRequest - 195, // 451: hyapp.activity.v1.AdminGrowthLevelService.BatchUpsertLevelConfig:input_type -> hyapp.activity.v1.BatchUpsertLevelConfigRequest - 181, // 452: hyapp.activity.v1.AdminGrowthLevelService.BatchGetUserLevelAdminProfiles:input_type -> hyapp.activity.v1.BatchGetUserLevelAdminProfilesRequest - 184, // 453: hyapp.activity.v1.AdminGrowthLevelService.AdjustTemporaryUserLevels:input_type -> hyapp.activity.v1.AdjustTemporaryUserLevelsRequest - 202, // 454: hyapp.activity.v1.AdminAchievementService.ListAchievementDefinitions:input_type -> hyapp.activity.v1.ListAchievementsRequest - 211, // 455: hyapp.activity.v1.AdminAchievementService.UpsertAchievementDefinition:input_type -> hyapp.activity.v1.UpsertAchievementDefinitionRequest - 213, // 456: hyapp.activity.v1.AdminAchievementService.DeleteAchievementDefinition:input_type -> hyapp.activity.v1.DeleteAchievementDefinitionRequest - 222, // 457: hyapp.activity.v1.AdminWheelService.GetWheelConfig:input_type -> hyapp.activity.v1.GetWheelConfigRequest - 224, // 458: hyapp.activity.v1.AdminWheelService.UpsertWheelConfig:input_type -> hyapp.activity.v1.UpsertWheelConfigRequest - 226, // 459: hyapp.activity.v1.AdminWheelService.ListWheelDraws:input_type -> hyapp.activity.v1.ListWheelDrawsRequest - 229, // 460: hyapp.activity.v1.AdminWheelService.GetWheelDrawSummary:input_type -> hyapp.activity.v1.GetWheelDrawSummaryRequest - 2, // 461: hyapp.activity.v1.ActivityService.PingActivity:output_type -> hyapp.activity.v1.PingActivityResponse - 4, // 462: hyapp.activity.v1.ActivityService.GetActivityStatus:output_type -> hyapp.activity.v1.GetActivityStatusResponse - 7, // 463: hyapp.activity.v1.MessageInboxService.ListMessageTabs:output_type -> hyapp.activity.v1.ListMessageTabsResponse - 10, // 464: hyapp.activity.v1.MessageInboxService.ListInboxMessages:output_type -> hyapp.activity.v1.ListInboxMessagesResponse - 12, // 465: hyapp.activity.v1.MessageInboxService.MarkInboxMessageRead:output_type -> hyapp.activity.v1.MarkInboxMessageReadResponse - 14, // 466: hyapp.activity.v1.MessageInboxService.MarkInboxSectionRead:output_type -> hyapp.activity.v1.MarkInboxSectionReadResponse - 16, // 467: hyapp.activity.v1.MessageInboxService.DeleteInboxMessage:output_type -> hyapp.activity.v1.DeleteInboxMessageResponse - 18, // 468: hyapp.activity.v1.MessageInboxService.CreateInboxMessage:output_type -> hyapp.activity.v1.CreateInboxMessageResponse - 20, // 469: hyapp.activity.v1.MessageInboxService.CreateFanoutJob:output_type -> hyapp.activity.v1.CreateFanoutJobResponse - 23, // 470: hyapp.activity.v1.MessageActionConfirmService.AcceptActionConfirm:output_type -> hyapp.activity.v1.AcceptActionConfirmResponse - 25, // 471: hyapp.activity.v1.MessageActionConfirmService.RejectActionConfirm:output_type -> hyapp.activity.v1.RejectActionConfirmResponse - 27, // 472: hyapp.activity.v1.MessageActionConfirmService.BatchGetActionConfirmStatus:output_type -> hyapp.activity.v1.BatchGetActionConfirmStatusResponse - 29, // 473: hyapp.activity.v1.MessageActionConfirmService.ListConversationActionConfirms:output_type -> hyapp.activity.v1.ListConversationActionConfirmsResponse - 31, // 474: hyapp.activity.v1.ActivityCronService.ProcessMessageFanoutBatch:output_type -> hyapp.activity.v1.CronBatchResponse - 31, // 475: hyapp.activity.v1.ActivityCronService.ProcessLevelRewardBatch:output_type -> hyapp.activity.v1.CronBatchResponse - 31, // 476: hyapp.activity.v1.ActivityCronService.ProcessTemporaryLevelBatch:output_type -> hyapp.activity.v1.CronBatchResponse - 31, // 477: hyapp.activity.v1.ActivityCronService.ProcessAchievementRewardBatch:output_type -> hyapp.activity.v1.CronBatchResponse - 31, // 478: hyapp.activity.v1.ActivityCronService.ProcessRoomTurnoverRewardSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse - 31, // 479: hyapp.activity.v1.ActivityCronService.ProcessWeeklyStarSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse - 31, // 480: hyapp.activity.v1.ActivityCronService.ProcessCPWeeklyRankSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse - 31, // 481: hyapp.activity.v1.ActivityCronService.ProcessAgencyOpeningSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse - 31, // 482: hyapp.activity.v1.ActivityCronService.ProcessActivityTemplateSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse - 319, // 483: hyapp.activity.v1.ActivityTemplateRuntimeService.GetCurrentActivityTemplate:output_type -> hyapp.activity.v1.GetCurrentActivityTemplateResponse - 321, // 484: hyapp.activity.v1.ActivityTemplateRuntimeService.VisitActivityTemplate:output_type -> hyapp.activity.v1.VisitActivityTemplateResponse - 323, // 485: hyapp.activity.v1.ActivityTemplateRuntimeService.ListActivityTemplateTasks:output_type -> hyapp.activity.v1.ListActivityTemplateTasksResponse - 325, // 486: hyapp.activity.v1.ActivityTemplateRuntimeService.ClaimActivityTemplateTaskReward:output_type -> hyapp.activity.v1.ClaimActivityTemplateTaskRewardResponse - 327, // 487: hyapp.activity.v1.ActivityTemplateRuntimeService.ListActivityTemplateLeaderboard:output_type -> hyapp.activity.v1.ListActivityTemplateLeaderboardResponse - 36, // 488: hyapp.activity.v1.TaskService.ListUserTasks:output_type -> hyapp.activity.v1.ListUserTasksResponse - 38, // 489: hyapp.activity.v1.TaskService.ClaimTaskReward:output_type -> hyapp.activity.v1.ClaimTaskRewardResponse - 40, // 490: hyapp.activity.v1.TaskService.ConsumeTaskEvent:output_type -> hyapp.activity.v1.ConsumeTaskEventResponse - 165, // 491: hyapp.activity.v1.GrowthLevelService.GetMyLevelOverview:output_type -> hyapp.activity.v1.GetMyLevelOverviewResponse - 167, // 492: hyapp.activity.v1.GrowthLevelService.GetLevelTrack:output_type -> hyapp.activity.v1.GetLevelTrackResponse - 171, // 493: hyapp.activity.v1.GrowthLevelService.BatchGetUserLevelDisplayProfiles:output_type -> hyapp.activity.v1.BatchGetUserLevelDisplayProfilesResponse - 174, // 494: hyapp.activity.v1.GrowthLevelService.ListLevelRewards:output_type -> hyapp.activity.v1.ListLevelRewardsResponse - 176, // 495: hyapp.activity.v1.GrowthLevelService.ConsumeLevelEvent:output_type -> hyapp.activity.v1.ConsumeLevelEventResponse - 178, // 496: hyapp.activity.v1.GrowthLevelService.SetUserLevel:output_type -> hyapp.activity.v1.SetUserLevelResponse - 188, // 497: hyapp.activity.v1.GrowthLevelService.IssueRegistrationLevelBadges:output_type -> hyapp.activity.v1.IssueRegistrationLevelBadgesResponse - 203, // 498: hyapp.activity.v1.AchievementService.ListAchievements:output_type -> hyapp.activity.v1.ListAchievementsResponse - 205, // 499: hyapp.activity.v1.AchievementService.ConsumeAchievementEvent:output_type -> hyapp.activity.v1.ConsumeAchievementEventResponse - 208, // 500: hyapp.activity.v1.AchievementService.ListMyBadges:output_type -> hyapp.activity.v1.ListMyBadgesResponse - 210, // 501: hyapp.activity.v1.AchievementService.SetBadgeDisplay:output_type -> hyapp.activity.v1.SetBadgeDisplayResponse - 221, // 502: hyapp.activity.v1.WheelService.ExecuteWheelDraw:output_type -> hyapp.activity.v1.ExecuteWheelDrawResponse - 137, // 503: hyapp.activity.v1.RoomTurnoverRewardService.GetRoomTurnoverRewardStatus:output_type -> hyapp.activity.v1.GetRoomTurnoverRewardStatusResponse - 249, // 504: hyapp.activity.v1.WeeklyStarService.GetWeeklyStarCurrent:output_type -> hyapp.activity.v1.GetWeeklyStarCurrentResponse - 245, // 505: hyapp.activity.v1.WeeklyStarService.ListWeeklyStarLeaderboard:output_type -> hyapp.activity.v1.ListWeeklyStarLeaderboardResponse - 252, // 506: hyapp.activity.v1.WeeklyStarService.ListWeeklyStarHistory:output_type -> hyapp.activity.v1.ListWeeklyStarHistoryResponse - 259, // 507: hyapp.activity.v1.CPWeeklyRankService.GetCPWeeklyRankStatus:output_type -> hyapp.activity.v1.GetCPWeeklyRankStatusResponse - 283, // 508: hyapp.activity.v1.AgencyOpeningService.GetAgencyOpeningStatus:output_type -> hyapp.activity.v1.GetAgencyOpeningStatusResponse - 285, // 509: hyapp.activity.v1.AgencyOpeningService.ApplyAgencyOpening:output_type -> hyapp.activity.v1.ApplyAgencyOpeningResponse - 279, // 510: hyapp.activity.v1.AgencyOpeningService.ListAgencyOpeningLeaderboard:output_type -> hyapp.activity.v1.ListAgencyOpeningApplicationsResponse - 43, // 511: hyapp.activity.v1.BroadcastService.EnsureBroadcastGroups:output_type -> hyapp.activity.v1.EnsureBroadcastGroupsResponse - 46, // 512: hyapp.activity.v1.BroadcastService.PublishRegionBroadcast:output_type -> hyapp.activity.v1.PublishBroadcastResponse - 46, // 513: hyapp.activity.v1.BroadcastService.PublishGlobalBroadcast:output_type -> hyapp.activity.v1.PublishBroadcastResponse - 48, // 514: hyapp.activity.v1.BroadcastService.RemoveRegionBroadcastMember:output_type -> hyapp.activity.v1.RemoveRegionBroadcastMemberResponse - 49, // 515: hyapp.activity.v1.BroadcastService.ProcessBroadcastOutboxBatch:output_type -> hyapp.activity.v1.ProcessBroadcastOutboxBatchResponse - 52, // 516: hyapp.activity.v1.AdminBroadcastService.GetGameWinBroadcastConfig:output_type -> hyapp.activity.v1.GetGameWinBroadcastConfigResponse - 54, // 517: hyapp.activity.v1.AdminBroadcastService.UpdateGameWinBroadcastConfig:output_type -> hyapp.activity.v1.UpdateGameWinBroadcastConfigResponse - 56, // 518: hyapp.activity.v1.RoomEventConsumerService.ConsumeRoomEvent:output_type -> hyapp.activity.v1.ConsumeRoomEventResponse - 59, // 519: hyapp.activity.v1.AdminTaskService.ListTaskDefinitions:output_type -> hyapp.activity.v1.ListTaskDefinitionsResponse - 61, // 520: hyapp.activity.v1.AdminTaskService.UpsertTaskDefinition:output_type -> hyapp.activity.v1.UpsertTaskDefinitionResponse - 63, // 521: hyapp.activity.v1.AdminTaskService.SetTaskDefinitionStatus:output_type -> hyapp.activity.v1.SetTaskDefinitionStatusResponse - 65, // 522: hyapp.activity.v1.AdminTaskService.PublishTaskRewardPolicy:output_type -> hyapp.activity.v1.PublishTaskRewardPolicyResponse - 70, // 523: hyapp.activity.v1.RegistrationRewardService.GetRegistrationRewardEligibility:output_type -> hyapp.activity.v1.GetRegistrationRewardEligibilityResponse - 72, // 524: hyapp.activity.v1.RegistrationRewardService.IssueRegistrationReward:output_type -> hyapp.activity.v1.IssueRegistrationRewardResponse - 74, // 525: hyapp.activity.v1.AdminRegistrationRewardService.GetRegistrationRewardConfig:output_type -> hyapp.activity.v1.GetRegistrationRewardConfigResponse - 76, // 526: hyapp.activity.v1.AdminRegistrationRewardService.UpdateRegistrationRewardConfig:output_type -> hyapp.activity.v1.UpdateRegistrationRewardConfigResponse - 78, // 527: hyapp.activity.v1.AdminRegistrationRewardService.ListRegistrationRewardClaims:output_type -> hyapp.activity.v1.ListRegistrationRewardClaimsResponse - 84, // 528: hyapp.activity.v1.FirstRechargeRewardService.GetFirstRechargeRewardStatus:output_type -> hyapp.activity.v1.GetFirstRechargeRewardStatusResponse - 86, // 529: hyapp.activity.v1.FirstRechargeRewardService.ConsumeFirstRechargeReward:output_type -> hyapp.activity.v1.ConsumeFirstRechargeRewardResponse - 88, // 530: hyapp.activity.v1.AdminFirstRechargeRewardService.GetFirstRechargeRewardConfig:output_type -> hyapp.activity.v1.GetFirstRechargeRewardConfigResponse - 90, // 531: hyapp.activity.v1.AdminFirstRechargeRewardService.UpdateFirstRechargeRewardConfig:output_type -> hyapp.activity.v1.UpdateFirstRechargeRewardConfigResponse - 92, // 532: hyapp.activity.v1.AdminFirstRechargeRewardService.ListFirstRechargeRewardClaims:output_type -> hyapp.activity.v1.ListFirstRechargeRewardClaimsResponse - 99, // 533: hyapp.activity.v1.CumulativeRechargeRewardService.GetCumulativeRechargeRewardStatus:output_type -> hyapp.activity.v1.GetCumulativeRechargeRewardStatusResponse - 101, // 534: hyapp.activity.v1.CumulativeRechargeRewardService.ConsumeCumulativeRechargeReward:output_type -> hyapp.activity.v1.ConsumeCumulativeRechargeRewardResponse - 114, // 535: hyapp.activity.v1.InviteActivityRewardService.GetInviteActivityRewardStatus:output_type -> hyapp.activity.v1.GetInviteActivityRewardStatusResponse - 116, // 536: hyapp.activity.v1.InviteActivityRewardService.ClaimInviteActivityReward:output_type -> hyapp.activity.v1.ClaimInviteActivityRewardResponse - 119, // 537: hyapp.activity.v1.InviteActivityRewardService.ListInviteActivityLeaderboard:output_type -> hyapp.activity.v1.ListInviteActivityLeaderboardResponse - 128, // 538: hyapp.activity.v1.InviteActivityRewardService.ListInviteActivityInvitees:output_type -> hyapp.activity.v1.ListInviteActivityInviteesResponse - 103, // 539: hyapp.activity.v1.AdminCumulativeRechargeRewardService.GetCumulativeRechargeRewardConfig:output_type -> hyapp.activity.v1.GetCumulativeRechargeRewardConfigResponse - 105, // 540: hyapp.activity.v1.AdminCumulativeRechargeRewardService.UpdateCumulativeRechargeRewardConfig:output_type -> hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigResponse - 107, // 541: hyapp.activity.v1.AdminCumulativeRechargeRewardService.ListCumulativeRechargeRewardGrants:output_type -> hyapp.activity.v1.ListCumulativeRechargeRewardGrantsResponse - 121, // 542: hyapp.activity.v1.AdminInviteActivityRewardService.GetInviteActivityRewardConfig:output_type -> hyapp.activity.v1.GetInviteActivityRewardConfigResponse - 123, // 543: hyapp.activity.v1.AdminInviteActivityRewardService.UpdateInviteActivityRewardConfig:output_type -> hyapp.activity.v1.UpdateInviteActivityRewardConfigResponse - 125, // 544: hyapp.activity.v1.AdminInviteActivityRewardService.ListInviteActivityRewardClaims:output_type -> hyapp.activity.v1.ListInviteActivityRewardClaimsResponse - 131, // 545: hyapp.activity.v1.AdminInviteActivityRewardService.ListInviteActivityRewardSummaries:output_type -> hyapp.activity.v1.ListInviteActivityRewardSummariesResponse - 139, // 546: hyapp.activity.v1.AdminRoomTurnoverRewardService.GetRoomTurnoverRewardConfig:output_type -> hyapp.activity.v1.GetRoomTurnoverRewardConfigResponse - 141, // 547: hyapp.activity.v1.AdminRoomTurnoverRewardService.UpdateRoomTurnoverRewardConfig:output_type -> hyapp.activity.v1.UpdateRoomTurnoverRewardConfigResponse - 143, // 548: hyapp.activity.v1.AdminRoomTurnoverRewardService.ListRoomTurnoverRewardSettlements:output_type -> hyapp.activity.v1.ListRoomTurnoverRewardSettlementsResponse - 145, // 549: hyapp.activity.v1.AdminRoomTurnoverRewardService.RetryRoomTurnoverRewardSettlement:output_type -> hyapp.activity.v1.RetryRoomTurnoverRewardSettlementResponse - 237, // 550: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarCycles:output_type -> hyapp.activity.v1.ListWeeklyStarCyclesResponse - 241, // 551: hyapp.activity.v1.AdminWeeklyStarService.CreateWeeklyStarCycle:output_type -> hyapp.activity.v1.UpsertWeeklyStarCycleResponse - 239, // 552: hyapp.activity.v1.AdminWeeklyStarService.GetWeeklyStarCycle:output_type -> hyapp.activity.v1.GetWeeklyStarCycleResponse - 241, // 553: hyapp.activity.v1.AdminWeeklyStarService.UpdateWeeklyStarCycle:output_type -> hyapp.activity.v1.UpsertWeeklyStarCycleResponse - 243, // 554: hyapp.activity.v1.AdminWeeklyStarService.SetWeeklyStarCycleStatus:output_type -> hyapp.activity.v1.SetWeeklyStarCycleStatusResponse - 245, // 555: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarLeaderboard:output_type -> hyapp.activity.v1.ListWeeklyStarLeaderboardResponse - 247, // 556: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarSettlements:output_type -> hyapp.activity.v1.ListWeeklyStarSettlementsResponse - 261, // 557: hyapp.activity.v1.AdminCPWeeklyRankService.GetCPWeeklyRankConfig:output_type -> hyapp.activity.v1.GetCPWeeklyRankConfigResponse - 263, // 558: hyapp.activity.v1.AdminCPWeeklyRankService.UpdateCPWeeklyRankConfig:output_type -> hyapp.activity.v1.UpdateCPWeeklyRankConfigResponse - 265, // 559: hyapp.activity.v1.AdminCPWeeklyRankService.ListCPWeeklyRankSettlements:output_type -> hyapp.activity.v1.ListCPWeeklyRankSettlementsResponse - 271, // 560: hyapp.activity.v1.AdminAgencyOpeningService.ListAgencyOpeningCycles:output_type -> hyapp.activity.v1.ListAgencyOpeningCyclesResponse - 275, // 561: hyapp.activity.v1.AdminAgencyOpeningService.CreateAgencyOpeningCycle:output_type -> hyapp.activity.v1.UpsertAgencyOpeningCycleResponse - 273, // 562: hyapp.activity.v1.AdminAgencyOpeningService.GetAgencyOpeningCycle:output_type -> hyapp.activity.v1.GetAgencyOpeningCycleResponse - 275, // 563: hyapp.activity.v1.AdminAgencyOpeningService.UpdateAgencyOpeningCycle:output_type -> hyapp.activity.v1.UpsertAgencyOpeningCycleResponse - 277, // 564: hyapp.activity.v1.AdminAgencyOpeningService.SetAgencyOpeningCycleStatus:output_type -> hyapp.activity.v1.SetAgencyOpeningCycleStatusResponse - 279, // 565: hyapp.activity.v1.AdminAgencyOpeningService.ListAgencyOpeningApplications:output_type -> hyapp.activity.v1.ListAgencyOpeningApplicationsResponse - 281, // 566: hyapp.activity.v1.AdminAgencyOpeningService.ReviewAgencyOpeningApplication:output_type -> hyapp.activity.v1.ReviewAgencyOpeningApplicationResponse - 295, // 567: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplates:output_type -> hyapp.activity.v1.ListActivityTemplatesResponse - 297, // 568: hyapp.activity.v1.AdminActivityTemplateService.CreateActivityTemplate:output_type -> hyapp.activity.v1.CreateActivityTemplateResponse - 299, // 569: hyapp.activity.v1.AdminActivityTemplateService.GetActivityTemplate:output_type -> hyapp.activity.v1.GetActivityTemplateResponse - 301, // 570: hyapp.activity.v1.AdminActivityTemplateService.UpdateActivityTemplate:output_type -> hyapp.activity.v1.UpdateActivityTemplateResponse - 303, // 571: hyapp.activity.v1.AdminActivityTemplateService.SetActivityTemplateStatus:output_type -> hyapp.activity.v1.SetActivityTemplateStatusResponse - 305, // 572: hyapp.activity.v1.AdminActivityTemplateService.DeleteActivityTemplate:output_type -> hyapp.activity.v1.DeleteActivityTemplateResponse - 308, // 573: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateVersions:output_type -> hyapp.activity.v1.ListActivityTemplateVersionsResponse - 310, // 574: hyapp.activity.v1.AdminActivityTemplateService.CloneActivityTemplate:output_type -> hyapp.activity.v1.CloneActivityTemplateResponse - 313, // 575: hyapp.activity.v1.AdminActivityTemplateService.ValidateActivityTemplate:output_type -> hyapp.activity.v1.ValidateActivityTemplateResponse - 331, // 576: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateLeaderboard:output_type -> hyapp.activity.v1.AdminListActivityTemplateLeaderboardResponse - 333, // 577: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateRewardJobs:output_type -> hyapp.activity.v1.ListActivityTemplateRewardJobsResponse - 335, // 578: hyapp.activity.v1.AdminActivityTemplateService.RetryActivityTemplateRewardJob:output_type -> hyapp.activity.v1.RetryActivityTemplateRewardJobResponse - 337, // 579: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateTaskClaims:output_type -> hyapp.activity.v1.ListActivityTemplateTaskClaimsResponse - 339, // 580: hyapp.activity.v1.AdminActivityTemplateService.RetryActivityTemplateTaskClaim:output_type -> hyapp.activity.v1.RetryActivityTemplateTaskClaimResponse - 150, // 581: hyapp.activity.v1.SevenDayCheckInService.GetSevenDayCheckInStatus:output_type -> hyapp.activity.v1.GetSevenDayCheckInStatusResponse - 152, // 582: hyapp.activity.v1.SevenDayCheckInService.SignSevenDayCheckIn:output_type -> hyapp.activity.v1.SignSevenDayCheckInResponse - 154, // 583: hyapp.activity.v1.AdminSevenDayCheckInService.GetSevenDayCheckInConfig:output_type -> hyapp.activity.v1.GetSevenDayCheckInConfigResponse - 156, // 584: hyapp.activity.v1.AdminSevenDayCheckInService.UpdateSevenDayCheckInConfig:output_type -> hyapp.activity.v1.UpdateSevenDayCheckInConfigResponse - 159, // 585: hyapp.activity.v1.AdminSevenDayCheckInService.ListSevenDayCheckInClaims:output_type -> hyapp.activity.v1.ListSevenDayCheckInClaimsResponse - 198, // 586: hyapp.activity.v1.AdminGrowthLevelService.ListLevelConfig:output_type -> hyapp.activity.v1.ListLevelConfigResponse - 190, // 587: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTrack:output_type -> hyapp.activity.v1.UpsertLevelTrackResponse - 192, // 588: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelRule:output_type -> hyapp.activity.v1.UpsertLevelRuleResponse - 194, // 589: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTier:output_type -> hyapp.activity.v1.UpsertLevelTierResponse - 196, // 590: hyapp.activity.v1.AdminGrowthLevelService.BatchUpsertLevelConfig:output_type -> hyapp.activity.v1.BatchUpsertLevelConfigResponse - 182, // 591: hyapp.activity.v1.AdminGrowthLevelService.BatchGetUserLevelAdminProfiles:output_type -> hyapp.activity.v1.BatchGetUserLevelAdminProfilesResponse - 185, // 592: hyapp.activity.v1.AdminGrowthLevelService.AdjustTemporaryUserLevels:output_type -> hyapp.activity.v1.AdjustTemporaryUserLevelsResponse - 203, // 593: hyapp.activity.v1.AdminAchievementService.ListAchievementDefinitions:output_type -> hyapp.activity.v1.ListAchievementsResponse - 212, // 594: hyapp.activity.v1.AdminAchievementService.UpsertAchievementDefinition:output_type -> hyapp.activity.v1.UpsertAchievementDefinitionResponse - 214, // 595: hyapp.activity.v1.AdminAchievementService.DeleteAchievementDefinition:output_type -> hyapp.activity.v1.DeleteAchievementDefinitionResponse - 223, // 596: hyapp.activity.v1.AdminWheelService.GetWheelConfig:output_type -> hyapp.activity.v1.GetWheelConfigResponse - 225, // 597: hyapp.activity.v1.AdminWheelService.UpsertWheelConfig:output_type -> hyapp.activity.v1.UpsertWheelConfigResponse - 227, // 598: hyapp.activity.v1.AdminWheelService.ListWheelDraws:output_type -> hyapp.activity.v1.ListWheelDrawsResponse - 230, // 599: hyapp.activity.v1.AdminWheelService.GetWheelDrawSummary:output_type -> hyapp.activity.v1.GetWheelDrawSummaryResponse - 461, // [461:600] is the sub-list for method output_type - 322, // [322:461] is the sub-list for method input_type - 322, // [322:322] is the sub-list for extension type_name - 322, // [322:322] is the sub-list for extension extendee - 0, // [0:322] is the sub-list for field type_name + 342, // 5: hyapp.activity.v1.InboxMessage.actions:type_name -> hyapp.activity.v1.InboxAction + 0, // 6: hyapp.activity.v1.ListInboxMessagesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 8, // 7: hyapp.activity.v1.ListInboxMessagesResponse.items:type_name -> hyapp.activity.v1.InboxMessage + 0, // 8: hyapp.activity.v1.MarkInboxMessageReadRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 9: hyapp.activity.v1.MarkInboxSectionReadRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 10: hyapp.activity.v1.DeleteInboxMessageRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 11: hyapp.activity.v1.CreateInboxMessageRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 340, // 12: hyapp.activity.v1.CreateInboxMessageRequest.reward_items:type_name -> hyapp.activity.v1.InboxRewardItem + 342, // 13: hyapp.activity.v1.CreateInboxMessageRequest.actions:type_name -> hyapp.activity.v1.InboxAction + 0, // 14: hyapp.activity.v1.CreateFanoutJobRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 15: hyapp.activity.v1.AcceptActionConfirmRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 21, // 16: hyapp.activity.v1.AcceptActionConfirmResponse.confirm:type_name -> hyapp.activity.v1.ActionConfirm + 0, // 17: hyapp.activity.v1.RejectActionConfirmRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 21, // 18: hyapp.activity.v1.RejectActionConfirmResponse.confirm:type_name -> hyapp.activity.v1.ActionConfirm + 0, // 19: hyapp.activity.v1.BatchGetActionConfirmStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 21, // 20: hyapp.activity.v1.BatchGetActionConfirmStatusResponse.items:type_name -> hyapp.activity.v1.ActionConfirm + 0, // 21: hyapp.activity.v1.ListConversationActionConfirmsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 21, // 22: hyapp.activity.v1.ListConversationActionConfirmsResponse.items:type_name -> hyapp.activity.v1.ActionConfirm + 0, // 23: hyapp.activity.v1.CronBatchRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 32, // 24: hyapp.activity.v1.TaskItem.reward_items:type_name -> hyapp.activity.v1.TaskRewardItem + 33, // 25: hyapp.activity.v1.TaskSection.items:type_name -> hyapp.activity.v1.TaskItem + 0, // 26: hyapp.activity.v1.ListUserTasksRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 34, // 27: hyapp.activity.v1.ListUserTasksResponse.sections:type_name -> hyapp.activity.v1.TaskSection + 0, // 28: hyapp.activity.v1.ClaimTaskRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 32, // 29: hyapp.activity.v1.ClaimTaskRewardResponse.reward_items:type_name -> hyapp.activity.v1.TaskRewardItem + 0, // 30: hyapp.activity.v1.ConsumeTaskEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 31: hyapp.activity.v1.EnsureBroadcastGroupsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 32: hyapp.activity.v1.PublishRegionBroadcastRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 33: hyapp.activity.v1.PublishGlobalBroadcastRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 34: hyapp.activity.v1.RemoveRegionBroadcastMemberRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 35: hyapp.activity.v1.GetGameWinBroadcastConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 50, // 36: hyapp.activity.v1.GetGameWinBroadcastConfigResponse.config:type_name -> hyapp.activity.v1.GameWinBroadcastConfig + 0, // 37: hyapp.activity.v1.UpdateGameWinBroadcastConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 50, // 38: hyapp.activity.v1.UpdateGameWinBroadcastConfigResponse.config:type_name -> hyapp.activity.v1.GameWinBroadcastConfig + 0, // 39: hyapp.activity.v1.ConsumeRoomEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 343, // 40: hyapp.activity.v1.ConsumeRoomEventRequest.envelope:type_name -> hyapp.events.room.v1.EventEnvelope + 32, // 41: hyapp.activity.v1.TaskDefinition.reward_items:type_name -> hyapp.activity.v1.TaskRewardItem + 0, // 42: hyapp.activity.v1.ListTaskDefinitionsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 57, // 43: hyapp.activity.v1.ListTaskDefinitionsResponse.tasks:type_name -> hyapp.activity.v1.TaskDefinition + 0, // 44: hyapp.activity.v1.UpsertTaskDefinitionRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 57, // 45: hyapp.activity.v1.UpsertTaskDefinitionResponse.task:type_name -> hyapp.activity.v1.TaskDefinition + 0, // 46: hyapp.activity.v1.SetTaskDefinitionStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 57, // 47: hyapp.activity.v1.SetTaskDefinitionStatusResponse.task:type_name -> hyapp.activity.v1.TaskDefinition + 0, // 48: hyapp.activity.v1.PublishTaskRewardPolicyRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 49: hyapp.activity.v1.GetRegistrationRewardEligibilityRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 68, // 50: hyapp.activity.v1.GetRegistrationRewardEligibilityResponse.eligibility:type_name -> hyapp.activity.v1.RegistrationRewardEligibility + 0, // 51: hyapp.activity.v1.IssueRegistrationRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 67, // 52: hyapp.activity.v1.IssueRegistrationRewardResponse.claim:type_name -> hyapp.activity.v1.RegistrationRewardClaim + 68, // 53: hyapp.activity.v1.IssueRegistrationRewardResponse.eligibility:type_name -> hyapp.activity.v1.RegistrationRewardEligibility + 0, // 54: hyapp.activity.v1.GetRegistrationRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 66, // 55: hyapp.activity.v1.GetRegistrationRewardConfigResponse.config:type_name -> hyapp.activity.v1.RegistrationRewardConfig + 0, // 56: hyapp.activity.v1.UpdateRegistrationRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 66, // 57: hyapp.activity.v1.UpdateRegistrationRewardConfigResponse.config:type_name -> hyapp.activity.v1.RegistrationRewardConfig + 0, // 58: hyapp.activity.v1.ListRegistrationRewardClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 67, // 59: hyapp.activity.v1.ListRegistrationRewardClaimsResponse.claims:type_name -> hyapp.activity.v1.RegistrationRewardClaim + 79, // 60: hyapp.activity.v1.FirstRechargeRewardConfig.tiers:type_name -> hyapp.activity.v1.FirstRechargeRewardTier + 79, // 61: hyapp.activity.v1.FirstRechargeRewardStatus.tiers:type_name -> hyapp.activity.v1.FirstRechargeRewardTier + 81, // 62: hyapp.activity.v1.FirstRechargeRewardStatus.claim:type_name -> hyapp.activity.v1.FirstRechargeRewardClaim + 81, // 63: hyapp.activity.v1.FirstRechargeRewardStatus.claims:type_name -> hyapp.activity.v1.FirstRechargeRewardClaim + 0, // 64: hyapp.activity.v1.GetFirstRechargeRewardStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 82, // 65: hyapp.activity.v1.GetFirstRechargeRewardStatusResponse.status:type_name -> hyapp.activity.v1.FirstRechargeRewardStatus + 0, // 66: hyapp.activity.v1.ConsumeFirstRechargeRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 81, // 67: hyapp.activity.v1.ConsumeFirstRechargeRewardResponse.claim:type_name -> hyapp.activity.v1.FirstRechargeRewardClaim + 0, // 68: hyapp.activity.v1.GetFirstRechargeRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 80, // 69: hyapp.activity.v1.GetFirstRechargeRewardConfigResponse.config:type_name -> hyapp.activity.v1.FirstRechargeRewardConfig + 0, // 70: hyapp.activity.v1.UpdateFirstRechargeRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 79, // 71: hyapp.activity.v1.UpdateFirstRechargeRewardConfigRequest.tiers:type_name -> hyapp.activity.v1.FirstRechargeRewardTier + 80, // 72: hyapp.activity.v1.UpdateFirstRechargeRewardConfigResponse.config:type_name -> hyapp.activity.v1.FirstRechargeRewardConfig + 0, // 73: hyapp.activity.v1.ListFirstRechargeRewardClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 81, // 74: hyapp.activity.v1.ListFirstRechargeRewardClaimsResponse.claims:type_name -> hyapp.activity.v1.FirstRechargeRewardClaim + 93, // 75: hyapp.activity.v1.CumulativeRechargeRewardConfig.tiers:type_name -> hyapp.activity.v1.CumulativeRechargeRewardTier + 94, // 76: hyapp.activity.v1.CumulativeRechargeRewardStatus.config:type_name -> hyapp.activity.v1.CumulativeRechargeRewardConfig + 96, // 77: hyapp.activity.v1.CumulativeRechargeRewardStatus.progress:type_name -> hyapp.activity.v1.CumulativeRechargeRewardProgress + 95, // 78: hyapp.activity.v1.CumulativeRechargeRewardStatus.grants:type_name -> hyapp.activity.v1.CumulativeRechargeRewardGrant + 0, // 79: hyapp.activity.v1.GetCumulativeRechargeRewardStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 97, // 80: hyapp.activity.v1.GetCumulativeRechargeRewardStatusResponse.status:type_name -> hyapp.activity.v1.CumulativeRechargeRewardStatus + 0, // 81: hyapp.activity.v1.ConsumeCumulativeRechargeRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 95, // 82: hyapp.activity.v1.ConsumeCumulativeRechargeRewardResponse.grants:type_name -> hyapp.activity.v1.CumulativeRechargeRewardGrant + 0, // 83: hyapp.activity.v1.GetCumulativeRechargeRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 94, // 84: hyapp.activity.v1.GetCumulativeRechargeRewardConfigResponse.config:type_name -> hyapp.activity.v1.CumulativeRechargeRewardConfig + 0, // 85: hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 93, // 86: hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigRequest.tiers:type_name -> hyapp.activity.v1.CumulativeRechargeRewardTier + 94, // 87: hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigResponse.config:type_name -> hyapp.activity.v1.CumulativeRechargeRewardConfig + 0, // 88: hyapp.activity.v1.ListCumulativeRechargeRewardGrantsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 95, // 89: hyapp.activity.v1.ListCumulativeRechargeRewardGrantsResponse.grants:type_name -> hyapp.activity.v1.CumulativeRechargeRewardGrant + 108, // 90: hyapp.activity.v1.InviteActivityRewardConfig.tiers:type_name -> hyapp.activity.v1.InviteActivityRewardTier + 109, // 91: hyapp.activity.v1.InviteActivityRewardStatus.config:type_name -> hyapp.activity.v1.InviteActivityRewardConfig + 110, // 92: hyapp.activity.v1.InviteActivityRewardStatus.progress:type_name -> hyapp.activity.v1.InviteActivityRewardProgress + 111, // 93: hyapp.activity.v1.InviteActivityRewardStatus.claims:type_name -> hyapp.activity.v1.InviteActivityRewardClaim + 0, // 94: hyapp.activity.v1.GetInviteActivityRewardStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 112, // 95: hyapp.activity.v1.GetInviteActivityRewardStatusResponse.status:type_name -> hyapp.activity.v1.InviteActivityRewardStatus + 0, // 96: hyapp.activity.v1.ClaimInviteActivityRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 111, // 97: hyapp.activity.v1.ClaimInviteActivityRewardResponse.claim:type_name -> hyapp.activity.v1.InviteActivityRewardClaim + 112, // 98: hyapp.activity.v1.ClaimInviteActivityRewardResponse.status:type_name -> hyapp.activity.v1.InviteActivityRewardStatus + 0, // 99: hyapp.activity.v1.ListInviteActivityLeaderboardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 117, // 100: hyapp.activity.v1.ListInviteActivityLeaderboardResponse.entries:type_name -> hyapp.activity.v1.InviteActivityLeaderboardEntry + 0, // 101: hyapp.activity.v1.GetInviteActivityRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 109, // 102: hyapp.activity.v1.GetInviteActivityRewardConfigResponse.config:type_name -> hyapp.activity.v1.InviteActivityRewardConfig + 0, // 103: hyapp.activity.v1.UpdateInviteActivityRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 108, // 104: hyapp.activity.v1.UpdateInviteActivityRewardConfigRequest.tiers:type_name -> hyapp.activity.v1.InviteActivityRewardTier + 109, // 105: hyapp.activity.v1.UpdateInviteActivityRewardConfigResponse.config:type_name -> hyapp.activity.v1.InviteActivityRewardConfig + 0, // 106: hyapp.activity.v1.ListInviteActivityRewardClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 111, // 107: hyapp.activity.v1.ListInviteActivityRewardClaimsResponse.claims:type_name -> hyapp.activity.v1.InviteActivityRewardClaim + 0, // 108: hyapp.activity.v1.ListInviteActivityInviteesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 126, // 109: hyapp.activity.v1.ListInviteActivityInviteesResponse.invitees:type_name -> hyapp.activity.v1.InviteActivityRewardInviteeSummary + 126, // 110: hyapp.activity.v1.InviteActivityRewardSummary.invitees:type_name -> hyapp.activity.v1.InviteActivityRewardInviteeSummary + 0, // 111: hyapp.activity.v1.ListInviteActivityRewardSummariesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 129, // 112: hyapp.activity.v1.ListInviteActivityRewardSummariesResponse.summaries:type_name -> hyapp.activity.v1.InviteActivityRewardSummary + 132, // 113: hyapp.activity.v1.RoomTurnoverRewardConfig.tiers:type_name -> hyapp.activity.v1.RoomTurnoverRewardTier + 133, // 114: hyapp.activity.v1.RoomTurnoverRewardStatus.config:type_name -> hyapp.activity.v1.RoomTurnoverRewardConfig + 132, // 115: hyapp.activity.v1.RoomTurnoverRewardStatus.matched_tier:type_name -> hyapp.activity.v1.RoomTurnoverRewardTier + 134, // 116: hyapp.activity.v1.RoomTurnoverRewardStatus.latest_settlement:type_name -> hyapp.activity.v1.RoomTurnoverRewardSettlement + 0, // 117: hyapp.activity.v1.GetRoomTurnoverRewardStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 135, // 118: hyapp.activity.v1.GetRoomTurnoverRewardStatusResponse.status:type_name -> hyapp.activity.v1.RoomTurnoverRewardStatus + 0, // 119: hyapp.activity.v1.GetRoomTurnoverRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 133, // 120: hyapp.activity.v1.GetRoomTurnoverRewardConfigResponse.config:type_name -> hyapp.activity.v1.RoomTurnoverRewardConfig + 0, // 121: hyapp.activity.v1.UpdateRoomTurnoverRewardConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 132, // 122: hyapp.activity.v1.UpdateRoomTurnoverRewardConfigRequest.tiers:type_name -> hyapp.activity.v1.RoomTurnoverRewardTier + 133, // 123: hyapp.activity.v1.UpdateRoomTurnoverRewardConfigResponse.config:type_name -> hyapp.activity.v1.RoomTurnoverRewardConfig + 0, // 124: hyapp.activity.v1.ListRoomTurnoverRewardSettlementsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 134, // 125: hyapp.activity.v1.ListRoomTurnoverRewardSettlementsResponse.settlements:type_name -> hyapp.activity.v1.RoomTurnoverRewardSettlement + 0, // 126: hyapp.activity.v1.RetryRoomTurnoverRewardSettlementRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 134, // 127: hyapp.activity.v1.RetryRoomTurnoverRewardSettlementResponse.settlement:type_name -> hyapp.activity.v1.RoomTurnoverRewardSettlement + 146, // 128: hyapp.activity.v1.SevenDayCheckInConfig.rewards:type_name -> hyapp.activity.v1.SevenDayCheckInReward + 0, // 129: hyapp.activity.v1.GetSevenDayCheckInStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 148, // 130: hyapp.activity.v1.GetSevenDayCheckInStatusResponse.rewards:type_name -> hyapp.activity.v1.SevenDayCheckInRewardStatus + 0, // 131: hyapp.activity.v1.SignSevenDayCheckInRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 132: hyapp.activity.v1.GetSevenDayCheckInConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 147, // 133: hyapp.activity.v1.GetSevenDayCheckInConfigResponse.config:type_name -> hyapp.activity.v1.SevenDayCheckInConfig + 0, // 134: hyapp.activity.v1.UpdateSevenDayCheckInConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 146, // 135: hyapp.activity.v1.UpdateSevenDayCheckInConfigRequest.rewards:type_name -> hyapp.activity.v1.SevenDayCheckInReward + 147, // 136: hyapp.activity.v1.UpdateSevenDayCheckInConfigResponse.config:type_name -> hyapp.activity.v1.SevenDayCheckInConfig + 0, // 137: hyapp.activity.v1.ListSevenDayCheckInClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 157, // 138: hyapp.activity.v1.ListSevenDayCheckInClaimsResponse.claims:type_name -> hyapp.activity.v1.SevenDayCheckInClaim + 0, // 139: hyapp.activity.v1.GetMyLevelOverviewRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 163, // 140: hyapp.activity.v1.GetMyLevelOverviewResponse.tracks:type_name -> hyapp.activity.v1.LevelTrackOverview + 0, // 141: hyapp.activity.v1.GetLevelTrackRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 163, // 142: hyapp.activity.v1.GetLevelTrackResponse.overview:type_name -> hyapp.activity.v1.LevelTrackOverview + 161, // 143: hyapp.activity.v1.GetLevelTrackResponse.rules:type_name -> hyapp.activity.v1.LevelRule + 162, // 144: hyapp.activity.v1.GetLevelTrackResponse.tiers:type_name -> hyapp.activity.v1.LevelTier + 168, // 145: hyapp.activity.v1.UserLevelDisplayProfile.wealth:type_name -> hyapp.activity.v1.LevelDisplayTrackProfile + 168, // 146: hyapp.activity.v1.UserLevelDisplayProfile.game:type_name -> hyapp.activity.v1.LevelDisplayTrackProfile + 168, // 147: hyapp.activity.v1.UserLevelDisplayProfile.charm:type_name -> hyapp.activity.v1.LevelDisplayTrackProfile + 0, // 148: hyapp.activity.v1.BatchGetUserLevelDisplayProfilesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 169, // 149: hyapp.activity.v1.BatchGetUserLevelDisplayProfilesResponse.profiles:type_name -> hyapp.activity.v1.UserLevelDisplayProfile + 0, // 150: hyapp.activity.v1.ListLevelRewardsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 172, // 151: hyapp.activity.v1.ListLevelRewardsResponse.rewards:type_name -> hyapp.activity.v1.LevelRewardJob + 0, // 152: hyapp.activity.v1.ConsumeLevelEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 153: hyapp.activity.v1.SetUserLevelRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 179, // 154: hyapp.activity.v1.AdminUserLevelProfile.tracks:type_name -> hyapp.activity.v1.AdminLevelTrackProfile + 0, // 155: hyapp.activity.v1.BatchGetUserLevelAdminProfilesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 180, // 156: hyapp.activity.v1.BatchGetUserLevelAdminProfilesResponse.profiles:type_name -> hyapp.activity.v1.AdminUserLevelProfile + 0, // 157: hyapp.activity.v1.AdjustTemporaryUserLevelsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 183, // 158: hyapp.activity.v1.AdjustTemporaryUserLevelsRequest.adjustments:type_name -> hyapp.activity.v1.TemporaryLevelAdjustment + 180, // 159: hyapp.activity.v1.AdjustTemporaryUserLevelsResponse.profile:type_name -> hyapp.activity.v1.AdminUserLevelProfile + 0, // 160: hyapp.activity.v1.IssueRegistrationLevelBadgesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 186, // 161: hyapp.activity.v1.IssueRegistrationLevelBadgesResponse.grants:type_name -> hyapp.activity.v1.RegistrationLevelBadgeGrant + 0, // 162: hyapp.activity.v1.UpsertLevelTrackRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 160, // 163: hyapp.activity.v1.UpsertLevelTrackResponse.track:type_name -> hyapp.activity.v1.LevelTrack + 0, // 164: hyapp.activity.v1.UpsertLevelRuleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 161, // 165: hyapp.activity.v1.UpsertLevelRuleResponse.rule:type_name -> hyapp.activity.v1.LevelRule + 0, // 166: hyapp.activity.v1.UpsertLevelTierRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 162, // 167: hyapp.activity.v1.UpsertLevelTierResponse.tier:type_name -> hyapp.activity.v1.LevelTier + 0, // 168: hyapp.activity.v1.BatchUpsertLevelConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 161, // 169: hyapp.activity.v1.BatchUpsertLevelConfigRequest.rules:type_name -> hyapp.activity.v1.LevelRule + 162, // 170: hyapp.activity.v1.BatchUpsertLevelConfigRequest.tiers:type_name -> hyapp.activity.v1.LevelTier + 161, // 171: hyapp.activity.v1.BatchUpsertLevelConfigResponse.rules:type_name -> hyapp.activity.v1.LevelRule + 162, // 172: hyapp.activity.v1.BatchUpsertLevelConfigResponse.tiers:type_name -> hyapp.activity.v1.LevelTier + 0, // 173: hyapp.activity.v1.ListLevelConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 160, // 174: hyapp.activity.v1.ListLevelConfigResponse.tracks:type_name -> hyapp.activity.v1.LevelTrack + 161, // 175: hyapp.activity.v1.ListLevelConfigResponse.rules:type_name -> hyapp.activity.v1.LevelRule + 162, // 176: hyapp.activity.v1.ListLevelConfigResponse.tiers:type_name -> hyapp.activity.v1.LevelTier + 199, // 177: hyapp.activity.v1.AchievementDefinition.conditions:type_name -> hyapp.activity.v1.AchievementCondition + 200, // 178: hyapp.activity.v1.UserAchievement.definition:type_name -> hyapp.activity.v1.AchievementDefinition + 0, // 179: hyapp.activity.v1.ListAchievementsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 201, // 180: hyapp.activity.v1.ListAchievementsResponse.achievements:type_name -> hyapp.activity.v1.UserAchievement + 0, // 181: hyapp.activity.v1.ConsumeAchievementEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 0, // 182: hyapp.activity.v1.ListMyBadgesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 206, // 183: hyapp.activity.v1.ListMyBadgesResponse.strip_badges:type_name -> hyapp.activity.v1.BadgeDisplayItem + 206, // 184: hyapp.activity.v1.ListMyBadgesResponse.profile_tile_badges:type_name -> hyapp.activity.v1.BadgeDisplayItem + 206, // 185: hyapp.activity.v1.ListMyBadgesResponse.honor_badges:type_name -> hyapp.activity.v1.BadgeDisplayItem + 0, // 186: hyapp.activity.v1.SetBadgeDisplayRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 206, // 187: hyapp.activity.v1.SetBadgeDisplayRequest.items:type_name -> hyapp.activity.v1.BadgeDisplayItem + 208, // 188: hyapp.activity.v1.SetBadgeDisplayResponse.profile:type_name -> hyapp.activity.v1.ListMyBadgesResponse + 0, // 189: hyapp.activity.v1.UpsertAchievementDefinitionRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 199, // 190: hyapp.activity.v1.UpsertAchievementDefinitionRequest.conditions:type_name -> hyapp.activity.v1.AchievementCondition + 200, // 191: hyapp.activity.v1.UpsertAchievementDefinitionResponse.achievement:type_name -> hyapp.activity.v1.AchievementDefinition + 0, // 192: hyapp.activity.v1.DeleteAchievementDefinitionRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 200, // 193: hyapp.activity.v1.DeleteAchievementDefinitionResponse.achievement:type_name -> hyapp.activity.v1.AchievementDefinition + 215, // 194: hyapp.activity.v1.WheelRuleConfig.tiers:type_name -> hyapp.activity.v1.WheelPrizeTier + 0, // 195: hyapp.activity.v1.WheelDrawMeta.meta:type_name -> hyapp.activity.v1.RequestMeta + 219, // 196: hyapp.activity.v1.WheelDrawResult.rewards:type_name -> hyapp.activity.v1.WheelDrawReward + 217, // 197: hyapp.activity.v1.ExecuteWheelDrawRequest.wheel:type_name -> hyapp.activity.v1.WheelDrawMeta + 218, // 198: hyapp.activity.v1.ExecuteWheelDrawResponse.result:type_name -> hyapp.activity.v1.WheelDrawResult + 0, // 199: hyapp.activity.v1.GetWheelConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 216, // 200: hyapp.activity.v1.GetWheelConfigResponse.config:type_name -> hyapp.activity.v1.WheelRuleConfig + 0, // 201: hyapp.activity.v1.UpsertWheelConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 216, // 202: hyapp.activity.v1.UpsertWheelConfigRequest.config:type_name -> hyapp.activity.v1.WheelRuleConfig + 216, // 203: hyapp.activity.v1.UpsertWheelConfigResponse.config:type_name -> hyapp.activity.v1.WheelRuleConfig + 0, // 204: hyapp.activity.v1.ListWheelDrawsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 218, // 205: hyapp.activity.v1.ListWheelDrawsResponse.draws:type_name -> hyapp.activity.v1.WheelDrawResult + 0, // 206: hyapp.activity.v1.GetWheelDrawSummaryRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 228, // 207: hyapp.activity.v1.GetWheelDrawSummaryResponse.summary:type_name -> hyapp.activity.v1.WheelDrawSummary + 231, // 208: hyapp.activity.v1.WeeklyStarCycle.gifts:type_name -> hyapp.activity.v1.WeeklyStarGift + 232, // 209: hyapp.activity.v1.WeeklyStarCycle.rewards:type_name -> hyapp.activity.v1.WeeklyStarReward + 0, // 210: hyapp.activity.v1.ListWeeklyStarCyclesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 233, // 211: hyapp.activity.v1.ListWeeklyStarCyclesResponse.cycles:type_name -> hyapp.activity.v1.WeeklyStarCycle + 0, // 212: hyapp.activity.v1.GetWeeklyStarCycleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 233, // 213: hyapp.activity.v1.GetWeeklyStarCycleResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle + 0, // 214: hyapp.activity.v1.UpsertWeeklyStarCycleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 233, // 215: hyapp.activity.v1.UpsertWeeklyStarCycleRequest.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle + 233, // 216: hyapp.activity.v1.UpsertWeeklyStarCycleResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle + 0, // 217: hyapp.activity.v1.SetWeeklyStarCycleStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 233, // 218: hyapp.activity.v1.SetWeeklyStarCycleStatusResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle + 0, // 219: hyapp.activity.v1.ListWeeklyStarLeaderboardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 233, // 220: hyapp.activity.v1.ListWeeklyStarLeaderboardResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle + 234, // 221: hyapp.activity.v1.ListWeeklyStarLeaderboardResponse.entries:type_name -> hyapp.activity.v1.WeeklyStarLeaderboardEntry + 0, // 222: hyapp.activity.v1.ListWeeklyStarSettlementsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 235, // 223: hyapp.activity.v1.ListWeeklyStarSettlementsResponse.settlements:type_name -> hyapp.activity.v1.WeeklyStarSettlement + 0, // 224: hyapp.activity.v1.GetWeeklyStarCurrentRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 233, // 225: hyapp.activity.v1.GetWeeklyStarCurrentResponse.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle + 234, // 226: hyapp.activity.v1.GetWeeklyStarCurrentResponse.top_entries:type_name -> hyapp.activity.v1.WeeklyStarLeaderboardEntry + 234, // 227: hyapp.activity.v1.GetWeeklyStarCurrentResponse.my_entry:type_name -> hyapp.activity.v1.WeeklyStarLeaderboardEntry + 0, // 228: hyapp.activity.v1.ListWeeklyStarHistoryRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 233, // 229: hyapp.activity.v1.WeeklyStarHistoryCycle.cycle:type_name -> hyapp.activity.v1.WeeklyStarCycle + 234, // 230: hyapp.activity.v1.WeeklyStarHistoryCycle.top_entries:type_name -> hyapp.activity.v1.WeeklyStarLeaderboardEntry + 251, // 231: hyapp.activity.v1.ListWeeklyStarHistoryResponse.cycles:type_name -> hyapp.activity.v1.WeeklyStarHistoryCycle + 253, // 232: hyapp.activity.v1.CPWeeklyRankConfig.rewards:type_name -> hyapp.activity.v1.CPWeeklyRankReward + 255, // 233: hyapp.activity.v1.CPWeeklyRankEntry.user_a:type_name -> hyapp.activity.v1.CPWeeklyRankUser + 255, // 234: hyapp.activity.v1.CPWeeklyRankEntry.user_b:type_name -> hyapp.activity.v1.CPWeeklyRankUser + 0, // 235: hyapp.activity.v1.GetCPWeeklyRankStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 254, // 236: hyapp.activity.v1.GetCPWeeklyRankStatusResponse.config:type_name -> hyapp.activity.v1.CPWeeklyRankConfig + 256, // 237: hyapp.activity.v1.GetCPWeeklyRankStatusResponse.entries:type_name -> hyapp.activity.v1.CPWeeklyRankEntry + 256, // 238: hyapp.activity.v1.GetCPWeeklyRankStatusResponse.previous_entries:type_name -> hyapp.activity.v1.CPWeeklyRankEntry + 0, // 239: hyapp.activity.v1.GetCPWeeklyRankConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 254, // 240: hyapp.activity.v1.GetCPWeeklyRankConfigResponse.config:type_name -> hyapp.activity.v1.CPWeeklyRankConfig + 0, // 241: hyapp.activity.v1.UpdateCPWeeklyRankConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 254, // 242: hyapp.activity.v1.UpdateCPWeeklyRankConfigRequest.config:type_name -> hyapp.activity.v1.CPWeeklyRankConfig + 254, // 243: hyapp.activity.v1.UpdateCPWeeklyRankConfigResponse.config:type_name -> hyapp.activity.v1.CPWeeklyRankConfig + 0, // 244: hyapp.activity.v1.ListCPWeeklyRankSettlementsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 257, // 245: hyapp.activity.v1.ListCPWeeklyRankSettlementsResponse.settlements:type_name -> hyapp.activity.v1.CPWeeklyRankSettlement + 266, // 246: hyapp.activity.v1.AgencyOpeningCycle.rewards:type_name -> hyapp.activity.v1.AgencyOpeningReward + 0, // 247: hyapp.activity.v1.ListAgencyOpeningCyclesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 267, // 248: hyapp.activity.v1.ListAgencyOpeningCyclesResponse.cycles:type_name -> hyapp.activity.v1.AgencyOpeningCycle + 0, // 249: hyapp.activity.v1.GetAgencyOpeningCycleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 267, // 250: hyapp.activity.v1.GetAgencyOpeningCycleResponse.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle + 0, // 251: hyapp.activity.v1.UpsertAgencyOpeningCycleRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 267, // 252: hyapp.activity.v1.UpsertAgencyOpeningCycleRequest.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle + 267, // 253: hyapp.activity.v1.UpsertAgencyOpeningCycleResponse.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle + 0, // 254: hyapp.activity.v1.SetAgencyOpeningCycleStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 267, // 255: hyapp.activity.v1.SetAgencyOpeningCycleStatusResponse.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle + 0, // 256: hyapp.activity.v1.ListAgencyOpeningApplicationsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 268, // 257: hyapp.activity.v1.ListAgencyOpeningApplicationsResponse.applications:type_name -> hyapp.activity.v1.AgencyOpeningApplication + 0, // 258: hyapp.activity.v1.ReviewAgencyOpeningApplicationRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 268, // 259: hyapp.activity.v1.ReviewAgencyOpeningApplicationResponse.application:type_name -> hyapp.activity.v1.AgencyOpeningApplication + 0, // 260: hyapp.activity.v1.GetAgencyOpeningStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 267, // 261: hyapp.activity.v1.GetAgencyOpeningStatusResponse.cycle:type_name -> hyapp.activity.v1.AgencyOpeningCycle + 268, // 262: hyapp.activity.v1.GetAgencyOpeningStatusResponse.application:type_name -> hyapp.activity.v1.AgencyOpeningApplication + 269, // 263: hyapp.activity.v1.GetAgencyOpeningStatusResponse.agency:type_name -> hyapp.activity.v1.AgencyOpeningAgencySnapshot + 0, // 264: hyapp.activity.v1.ApplyAgencyOpeningRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 268, // 265: hyapp.activity.v1.ApplyAgencyOpeningResponse.application:type_name -> hyapp.activity.v1.AgencyOpeningApplication + 288, // 266: hyapp.activity.v1.ActivityTemplateTask.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem + 288, // 267: hyapp.activity.v1.ActivityTemplateRankReward.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem + 286, // 268: hyapp.activity.v1.ActivityTemplate.locales:type_name -> hyapp.activity.v1.ActivityTemplateLocale + 287, // 269: hyapp.activity.v1.ActivityTemplate.gifts:type_name -> hyapp.activity.v1.ActivityTemplateGift + 289, // 270: hyapp.activity.v1.ActivityTemplate.tasks:type_name -> hyapp.activity.v1.ActivityTemplateTask + 290, // 271: hyapp.activity.v1.ActivityTemplate.rank_rewards:type_name -> hyapp.activity.v1.ActivityTemplateRankReward + 291, // 272: hyapp.activity.v1.ActivityTemplate.assets:type_name -> hyapp.activity.v1.ActivityTemplateAsset + 0, // 273: hyapp.activity.v1.ListActivityTemplatesRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 293, // 274: hyapp.activity.v1.ListActivityTemplatesResponse.templates:type_name -> hyapp.activity.v1.ActivityTemplateSummary + 0, // 275: hyapp.activity.v1.CreateActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 292, // 276: hyapp.activity.v1.CreateActivityTemplateRequest.template:type_name -> hyapp.activity.v1.ActivityTemplate + 292, // 277: hyapp.activity.v1.CreateActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate + 0, // 278: hyapp.activity.v1.GetActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 292, // 279: hyapp.activity.v1.GetActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate + 0, // 280: hyapp.activity.v1.UpdateActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 292, // 281: hyapp.activity.v1.UpdateActivityTemplateRequest.template:type_name -> hyapp.activity.v1.ActivityTemplate + 292, // 282: hyapp.activity.v1.UpdateActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate + 0, // 283: hyapp.activity.v1.SetActivityTemplateStatusRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 292, // 284: hyapp.activity.v1.SetActivityTemplateStatusResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate + 0, // 285: hyapp.activity.v1.DeleteActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 292, // 286: hyapp.activity.v1.DeleteActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate + 292, // 287: hyapp.activity.v1.ActivityTemplateVersion.snapshot:type_name -> hyapp.activity.v1.ActivityTemplate + 0, // 288: hyapp.activity.v1.ListActivityTemplateVersionsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 306, // 289: hyapp.activity.v1.ListActivityTemplateVersionsResponse.versions:type_name -> hyapp.activity.v1.ActivityTemplateVersion + 0, // 290: hyapp.activity.v1.CloneActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 292, // 291: hyapp.activity.v1.CloneActivityTemplateResponse.template:type_name -> hyapp.activity.v1.ActivityTemplate + 0, // 292: hyapp.activity.v1.ValidateActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 292, // 293: hyapp.activity.v1.ValidateActivityTemplateRequest.template:type_name -> hyapp.activity.v1.ActivityTemplate + 311, // 294: hyapp.activity.v1.ValidateActivityTemplateResponse.issues:type_name -> hyapp.activity.v1.ActivityTemplateValidationIssue + 292, // 295: hyapp.activity.v1.ActivityTemplateRuntime.template:type_name -> hyapp.activity.v1.ActivityTemplate + 288, // 296: hyapp.activity.v1.ActivityTemplateRuntimeTask.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem + 288, // 297: hyapp.activity.v1.ActivityTemplateTaskClaim.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem + 0, // 298: hyapp.activity.v1.GetCurrentActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 314, // 299: hyapp.activity.v1.GetCurrentActivityTemplateResponse.runtime:type_name -> hyapp.activity.v1.ActivityTemplateRuntime + 0, // 300: hyapp.activity.v1.VisitActivityTemplateRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 314, // 301: hyapp.activity.v1.VisitActivityTemplateResponse.runtime:type_name -> hyapp.activity.v1.ActivityTemplateRuntime + 315, // 302: hyapp.activity.v1.VisitActivityTemplateResponse.tasks:type_name -> hyapp.activity.v1.ActivityTemplateRuntimeTask + 0, // 303: hyapp.activity.v1.ListActivityTemplateTasksRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 314, // 304: hyapp.activity.v1.ListActivityTemplateTasksResponse.runtime:type_name -> hyapp.activity.v1.ActivityTemplateRuntime + 315, // 305: hyapp.activity.v1.ListActivityTemplateTasksResponse.tasks:type_name -> hyapp.activity.v1.ActivityTemplateRuntimeTask + 0, // 306: hyapp.activity.v1.ClaimActivityTemplateTaskRewardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 316, // 307: hyapp.activity.v1.ClaimActivityTemplateTaskRewardResponse.claim:type_name -> hyapp.activity.v1.ActivityTemplateTaskClaim + 0, // 308: hyapp.activity.v1.ListActivityTemplateLeaderboardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 314, // 309: hyapp.activity.v1.ListActivityTemplateLeaderboardResponse.runtime:type_name -> hyapp.activity.v1.ActivityTemplateRuntime + 317, // 310: hyapp.activity.v1.ListActivityTemplateLeaderboardResponse.entries:type_name -> hyapp.activity.v1.ActivityTemplateLeaderboardEntry + 317, // 311: hyapp.activity.v1.ListActivityTemplateLeaderboardResponse.my_entry:type_name -> hyapp.activity.v1.ActivityTemplateLeaderboardEntry + 288, // 312: hyapp.activity.v1.ActivityTemplateRewardJob.reward_items:type_name -> hyapp.activity.v1.ActivityTemplateRewardItem + 0, // 313: hyapp.activity.v1.AdminListActivityTemplateLeaderboardRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 328, // 314: hyapp.activity.v1.AdminListActivityTemplateLeaderboardResponse.period:type_name -> hyapp.activity.v1.ActivityTemplateRankPeriod + 317, // 315: hyapp.activity.v1.AdminListActivityTemplateLeaderboardResponse.entries:type_name -> hyapp.activity.v1.ActivityTemplateLeaderboardEntry + 0, // 316: hyapp.activity.v1.ListActivityTemplateRewardJobsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 329, // 317: hyapp.activity.v1.ListActivityTemplateRewardJobsResponse.jobs:type_name -> hyapp.activity.v1.ActivityTemplateRewardJob + 0, // 318: hyapp.activity.v1.RetryActivityTemplateRewardJobRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 329, // 319: hyapp.activity.v1.RetryActivityTemplateRewardJobResponse.job:type_name -> hyapp.activity.v1.ActivityTemplateRewardJob + 0, // 320: hyapp.activity.v1.ListActivityTemplateTaskClaimsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 316, // 321: hyapp.activity.v1.ListActivityTemplateTaskClaimsResponse.claims:type_name -> hyapp.activity.v1.ActivityTemplateTaskClaim + 0, // 322: hyapp.activity.v1.RetryActivityTemplateTaskClaimRequest.meta:type_name -> hyapp.activity.v1.RequestMeta + 316, // 323: hyapp.activity.v1.RetryActivityTemplateTaskClaimResponse.claim:type_name -> hyapp.activity.v1.ActivityTemplateTaskClaim + 341, // 324: hyapp.activity.v1.InboxAction.api:type_name -> hyapp.activity.v1.InboxActionAPI + 1, // 325: hyapp.activity.v1.ActivityService.PingActivity:input_type -> hyapp.activity.v1.PingActivityRequest + 3, // 326: hyapp.activity.v1.ActivityService.GetActivityStatus:input_type -> hyapp.activity.v1.GetActivityStatusRequest + 6, // 327: hyapp.activity.v1.MessageInboxService.ListMessageTabs:input_type -> hyapp.activity.v1.ListMessageTabsRequest + 9, // 328: hyapp.activity.v1.MessageInboxService.ListInboxMessages:input_type -> hyapp.activity.v1.ListInboxMessagesRequest + 11, // 329: hyapp.activity.v1.MessageInboxService.MarkInboxMessageRead:input_type -> hyapp.activity.v1.MarkInboxMessageReadRequest + 13, // 330: hyapp.activity.v1.MessageInboxService.MarkInboxSectionRead:input_type -> hyapp.activity.v1.MarkInboxSectionReadRequest + 15, // 331: hyapp.activity.v1.MessageInboxService.DeleteInboxMessage:input_type -> hyapp.activity.v1.DeleteInboxMessageRequest + 17, // 332: hyapp.activity.v1.MessageInboxService.CreateInboxMessage:input_type -> hyapp.activity.v1.CreateInboxMessageRequest + 19, // 333: hyapp.activity.v1.MessageInboxService.CreateFanoutJob:input_type -> hyapp.activity.v1.CreateFanoutJobRequest + 22, // 334: hyapp.activity.v1.MessageActionConfirmService.AcceptActionConfirm:input_type -> hyapp.activity.v1.AcceptActionConfirmRequest + 24, // 335: hyapp.activity.v1.MessageActionConfirmService.RejectActionConfirm:input_type -> hyapp.activity.v1.RejectActionConfirmRequest + 26, // 336: hyapp.activity.v1.MessageActionConfirmService.BatchGetActionConfirmStatus:input_type -> hyapp.activity.v1.BatchGetActionConfirmStatusRequest + 28, // 337: hyapp.activity.v1.MessageActionConfirmService.ListConversationActionConfirms:input_type -> hyapp.activity.v1.ListConversationActionConfirmsRequest + 30, // 338: hyapp.activity.v1.ActivityCronService.ProcessMessageFanoutBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 30, // 339: hyapp.activity.v1.ActivityCronService.ProcessLevelRewardBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 30, // 340: hyapp.activity.v1.ActivityCronService.ProcessTemporaryLevelBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 30, // 341: hyapp.activity.v1.ActivityCronService.ProcessAchievementRewardBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 30, // 342: hyapp.activity.v1.ActivityCronService.ProcessRoomTurnoverRewardSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 30, // 343: hyapp.activity.v1.ActivityCronService.ProcessWeeklyStarSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 30, // 344: hyapp.activity.v1.ActivityCronService.ProcessCPWeeklyRankSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 30, // 345: hyapp.activity.v1.ActivityCronService.ProcessAgencyOpeningSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 30, // 346: hyapp.activity.v1.ActivityCronService.ProcessActivityTemplateSettlementBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 318, // 347: hyapp.activity.v1.ActivityTemplateRuntimeService.GetCurrentActivityTemplate:input_type -> hyapp.activity.v1.GetCurrentActivityTemplateRequest + 320, // 348: hyapp.activity.v1.ActivityTemplateRuntimeService.VisitActivityTemplate:input_type -> hyapp.activity.v1.VisitActivityTemplateRequest + 322, // 349: hyapp.activity.v1.ActivityTemplateRuntimeService.ListActivityTemplateTasks:input_type -> hyapp.activity.v1.ListActivityTemplateTasksRequest + 324, // 350: hyapp.activity.v1.ActivityTemplateRuntimeService.ClaimActivityTemplateTaskReward:input_type -> hyapp.activity.v1.ClaimActivityTemplateTaskRewardRequest + 326, // 351: hyapp.activity.v1.ActivityTemplateRuntimeService.ListActivityTemplateLeaderboard:input_type -> hyapp.activity.v1.ListActivityTemplateLeaderboardRequest + 35, // 352: hyapp.activity.v1.TaskService.ListUserTasks:input_type -> hyapp.activity.v1.ListUserTasksRequest + 37, // 353: hyapp.activity.v1.TaskService.ClaimTaskReward:input_type -> hyapp.activity.v1.ClaimTaskRewardRequest + 39, // 354: hyapp.activity.v1.TaskService.ConsumeTaskEvent:input_type -> hyapp.activity.v1.ConsumeTaskEventRequest + 164, // 355: hyapp.activity.v1.GrowthLevelService.GetMyLevelOverview:input_type -> hyapp.activity.v1.GetMyLevelOverviewRequest + 166, // 356: hyapp.activity.v1.GrowthLevelService.GetLevelTrack:input_type -> hyapp.activity.v1.GetLevelTrackRequest + 170, // 357: hyapp.activity.v1.GrowthLevelService.BatchGetUserLevelDisplayProfiles:input_type -> hyapp.activity.v1.BatchGetUserLevelDisplayProfilesRequest + 173, // 358: hyapp.activity.v1.GrowthLevelService.ListLevelRewards:input_type -> hyapp.activity.v1.ListLevelRewardsRequest + 175, // 359: hyapp.activity.v1.GrowthLevelService.ConsumeLevelEvent:input_type -> hyapp.activity.v1.ConsumeLevelEventRequest + 177, // 360: hyapp.activity.v1.GrowthLevelService.SetUserLevel:input_type -> hyapp.activity.v1.SetUserLevelRequest + 187, // 361: hyapp.activity.v1.GrowthLevelService.IssueRegistrationLevelBadges:input_type -> hyapp.activity.v1.IssueRegistrationLevelBadgesRequest + 202, // 362: hyapp.activity.v1.AchievementService.ListAchievements:input_type -> hyapp.activity.v1.ListAchievementsRequest + 204, // 363: hyapp.activity.v1.AchievementService.ConsumeAchievementEvent:input_type -> hyapp.activity.v1.ConsumeAchievementEventRequest + 207, // 364: hyapp.activity.v1.AchievementService.ListMyBadges:input_type -> hyapp.activity.v1.ListMyBadgesRequest + 209, // 365: hyapp.activity.v1.AchievementService.SetBadgeDisplay:input_type -> hyapp.activity.v1.SetBadgeDisplayRequest + 220, // 366: hyapp.activity.v1.WheelService.ExecuteWheelDraw:input_type -> hyapp.activity.v1.ExecuteWheelDrawRequest + 136, // 367: hyapp.activity.v1.RoomTurnoverRewardService.GetRoomTurnoverRewardStatus:input_type -> hyapp.activity.v1.GetRoomTurnoverRewardStatusRequest + 248, // 368: hyapp.activity.v1.WeeklyStarService.GetWeeklyStarCurrent:input_type -> hyapp.activity.v1.GetWeeklyStarCurrentRequest + 244, // 369: hyapp.activity.v1.WeeklyStarService.ListWeeklyStarLeaderboard:input_type -> hyapp.activity.v1.ListWeeklyStarLeaderboardRequest + 250, // 370: hyapp.activity.v1.WeeklyStarService.ListWeeklyStarHistory:input_type -> hyapp.activity.v1.ListWeeklyStarHistoryRequest + 258, // 371: hyapp.activity.v1.CPWeeklyRankService.GetCPWeeklyRankStatus:input_type -> hyapp.activity.v1.GetCPWeeklyRankStatusRequest + 282, // 372: hyapp.activity.v1.AgencyOpeningService.GetAgencyOpeningStatus:input_type -> hyapp.activity.v1.GetAgencyOpeningStatusRequest + 284, // 373: hyapp.activity.v1.AgencyOpeningService.ApplyAgencyOpening:input_type -> hyapp.activity.v1.ApplyAgencyOpeningRequest + 278, // 374: hyapp.activity.v1.AgencyOpeningService.ListAgencyOpeningLeaderboard:input_type -> hyapp.activity.v1.ListAgencyOpeningApplicationsRequest + 42, // 375: hyapp.activity.v1.BroadcastService.EnsureBroadcastGroups:input_type -> hyapp.activity.v1.EnsureBroadcastGroupsRequest + 44, // 376: hyapp.activity.v1.BroadcastService.PublishRegionBroadcast:input_type -> hyapp.activity.v1.PublishRegionBroadcastRequest + 45, // 377: hyapp.activity.v1.BroadcastService.PublishGlobalBroadcast:input_type -> hyapp.activity.v1.PublishGlobalBroadcastRequest + 47, // 378: hyapp.activity.v1.BroadcastService.RemoveRegionBroadcastMember:input_type -> hyapp.activity.v1.RemoveRegionBroadcastMemberRequest + 30, // 379: hyapp.activity.v1.BroadcastService.ProcessBroadcastOutboxBatch:input_type -> hyapp.activity.v1.CronBatchRequest + 51, // 380: hyapp.activity.v1.AdminBroadcastService.GetGameWinBroadcastConfig:input_type -> hyapp.activity.v1.GetGameWinBroadcastConfigRequest + 53, // 381: hyapp.activity.v1.AdminBroadcastService.UpdateGameWinBroadcastConfig:input_type -> hyapp.activity.v1.UpdateGameWinBroadcastConfigRequest + 55, // 382: hyapp.activity.v1.RoomEventConsumerService.ConsumeRoomEvent:input_type -> hyapp.activity.v1.ConsumeRoomEventRequest + 58, // 383: hyapp.activity.v1.AdminTaskService.ListTaskDefinitions:input_type -> hyapp.activity.v1.ListTaskDefinitionsRequest + 60, // 384: hyapp.activity.v1.AdminTaskService.UpsertTaskDefinition:input_type -> hyapp.activity.v1.UpsertTaskDefinitionRequest + 62, // 385: hyapp.activity.v1.AdminTaskService.SetTaskDefinitionStatus:input_type -> hyapp.activity.v1.SetTaskDefinitionStatusRequest + 64, // 386: hyapp.activity.v1.AdminTaskService.PublishTaskRewardPolicy:input_type -> hyapp.activity.v1.PublishTaskRewardPolicyRequest + 69, // 387: hyapp.activity.v1.RegistrationRewardService.GetRegistrationRewardEligibility:input_type -> hyapp.activity.v1.GetRegistrationRewardEligibilityRequest + 71, // 388: hyapp.activity.v1.RegistrationRewardService.IssueRegistrationReward:input_type -> hyapp.activity.v1.IssueRegistrationRewardRequest + 73, // 389: hyapp.activity.v1.AdminRegistrationRewardService.GetRegistrationRewardConfig:input_type -> hyapp.activity.v1.GetRegistrationRewardConfigRequest + 75, // 390: hyapp.activity.v1.AdminRegistrationRewardService.UpdateRegistrationRewardConfig:input_type -> hyapp.activity.v1.UpdateRegistrationRewardConfigRequest + 77, // 391: hyapp.activity.v1.AdminRegistrationRewardService.ListRegistrationRewardClaims:input_type -> hyapp.activity.v1.ListRegistrationRewardClaimsRequest + 83, // 392: hyapp.activity.v1.FirstRechargeRewardService.GetFirstRechargeRewardStatus:input_type -> hyapp.activity.v1.GetFirstRechargeRewardStatusRequest + 85, // 393: hyapp.activity.v1.FirstRechargeRewardService.ConsumeFirstRechargeReward:input_type -> hyapp.activity.v1.ConsumeFirstRechargeRewardRequest + 87, // 394: hyapp.activity.v1.AdminFirstRechargeRewardService.GetFirstRechargeRewardConfig:input_type -> hyapp.activity.v1.GetFirstRechargeRewardConfigRequest + 89, // 395: hyapp.activity.v1.AdminFirstRechargeRewardService.UpdateFirstRechargeRewardConfig:input_type -> hyapp.activity.v1.UpdateFirstRechargeRewardConfigRequest + 91, // 396: hyapp.activity.v1.AdminFirstRechargeRewardService.ListFirstRechargeRewardClaims:input_type -> hyapp.activity.v1.ListFirstRechargeRewardClaimsRequest + 98, // 397: hyapp.activity.v1.CumulativeRechargeRewardService.GetCumulativeRechargeRewardStatus:input_type -> hyapp.activity.v1.GetCumulativeRechargeRewardStatusRequest + 100, // 398: hyapp.activity.v1.CumulativeRechargeRewardService.ConsumeCumulativeRechargeReward:input_type -> hyapp.activity.v1.ConsumeCumulativeRechargeRewardRequest + 113, // 399: hyapp.activity.v1.InviteActivityRewardService.GetInviteActivityRewardStatus:input_type -> hyapp.activity.v1.GetInviteActivityRewardStatusRequest + 115, // 400: hyapp.activity.v1.InviteActivityRewardService.ClaimInviteActivityReward:input_type -> hyapp.activity.v1.ClaimInviteActivityRewardRequest + 118, // 401: hyapp.activity.v1.InviteActivityRewardService.ListInviteActivityLeaderboard:input_type -> hyapp.activity.v1.ListInviteActivityLeaderboardRequest + 127, // 402: hyapp.activity.v1.InviteActivityRewardService.ListInviteActivityInvitees:input_type -> hyapp.activity.v1.ListInviteActivityInviteesRequest + 102, // 403: hyapp.activity.v1.AdminCumulativeRechargeRewardService.GetCumulativeRechargeRewardConfig:input_type -> hyapp.activity.v1.GetCumulativeRechargeRewardConfigRequest + 104, // 404: hyapp.activity.v1.AdminCumulativeRechargeRewardService.UpdateCumulativeRechargeRewardConfig:input_type -> hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigRequest + 106, // 405: hyapp.activity.v1.AdminCumulativeRechargeRewardService.ListCumulativeRechargeRewardGrants:input_type -> hyapp.activity.v1.ListCumulativeRechargeRewardGrantsRequest + 120, // 406: hyapp.activity.v1.AdminInviteActivityRewardService.GetInviteActivityRewardConfig:input_type -> hyapp.activity.v1.GetInviteActivityRewardConfigRequest + 122, // 407: hyapp.activity.v1.AdminInviteActivityRewardService.UpdateInviteActivityRewardConfig:input_type -> hyapp.activity.v1.UpdateInviteActivityRewardConfigRequest + 124, // 408: hyapp.activity.v1.AdminInviteActivityRewardService.ListInviteActivityRewardClaims:input_type -> hyapp.activity.v1.ListInviteActivityRewardClaimsRequest + 130, // 409: hyapp.activity.v1.AdminInviteActivityRewardService.ListInviteActivityRewardSummaries:input_type -> hyapp.activity.v1.ListInviteActivityRewardSummariesRequest + 138, // 410: hyapp.activity.v1.AdminRoomTurnoverRewardService.GetRoomTurnoverRewardConfig:input_type -> hyapp.activity.v1.GetRoomTurnoverRewardConfigRequest + 140, // 411: hyapp.activity.v1.AdminRoomTurnoverRewardService.UpdateRoomTurnoverRewardConfig:input_type -> hyapp.activity.v1.UpdateRoomTurnoverRewardConfigRequest + 142, // 412: hyapp.activity.v1.AdminRoomTurnoverRewardService.ListRoomTurnoverRewardSettlements:input_type -> hyapp.activity.v1.ListRoomTurnoverRewardSettlementsRequest + 144, // 413: hyapp.activity.v1.AdminRoomTurnoverRewardService.RetryRoomTurnoverRewardSettlement:input_type -> hyapp.activity.v1.RetryRoomTurnoverRewardSettlementRequest + 236, // 414: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarCycles:input_type -> hyapp.activity.v1.ListWeeklyStarCyclesRequest + 240, // 415: hyapp.activity.v1.AdminWeeklyStarService.CreateWeeklyStarCycle:input_type -> hyapp.activity.v1.UpsertWeeklyStarCycleRequest + 238, // 416: hyapp.activity.v1.AdminWeeklyStarService.GetWeeklyStarCycle:input_type -> hyapp.activity.v1.GetWeeklyStarCycleRequest + 240, // 417: hyapp.activity.v1.AdminWeeklyStarService.UpdateWeeklyStarCycle:input_type -> hyapp.activity.v1.UpsertWeeklyStarCycleRequest + 242, // 418: hyapp.activity.v1.AdminWeeklyStarService.SetWeeklyStarCycleStatus:input_type -> hyapp.activity.v1.SetWeeklyStarCycleStatusRequest + 244, // 419: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarLeaderboard:input_type -> hyapp.activity.v1.ListWeeklyStarLeaderboardRequest + 246, // 420: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarSettlements:input_type -> hyapp.activity.v1.ListWeeklyStarSettlementsRequest + 260, // 421: hyapp.activity.v1.AdminCPWeeklyRankService.GetCPWeeklyRankConfig:input_type -> hyapp.activity.v1.GetCPWeeklyRankConfigRequest + 262, // 422: hyapp.activity.v1.AdminCPWeeklyRankService.UpdateCPWeeklyRankConfig:input_type -> hyapp.activity.v1.UpdateCPWeeklyRankConfigRequest + 264, // 423: hyapp.activity.v1.AdminCPWeeklyRankService.ListCPWeeklyRankSettlements:input_type -> hyapp.activity.v1.ListCPWeeklyRankSettlementsRequest + 270, // 424: hyapp.activity.v1.AdminAgencyOpeningService.ListAgencyOpeningCycles:input_type -> hyapp.activity.v1.ListAgencyOpeningCyclesRequest + 274, // 425: hyapp.activity.v1.AdminAgencyOpeningService.CreateAgencyOpeningCycle:input_type -> hyapp.activity.v1.UpsertAgencyOpeningCycleRequest + 272, // 426: hyapp.activity.v1.AdminAgencyOpeningService.GetAgencyOpeningCycle:input_type -> hyapp.activity.v1.GetAgencyOpeningCycleRequest + 274, // 427: hyapp.activity.v1.AdminAgencyOpeningService.UpdateAgencyOpeningCycle:input_type -> hyapp.activity.v1.UpsertAgencyOpeningCycleRequest + 276, // 428: hyapp.activity.v1.AdminAgencyOpeningService.SetAgencyOpeningCycleStatus:input_type -> hyapp.activity.v1.SetAgencyOpeningCycleStatusRequest + 278, // 429: hyapp.activity.v1.AdminAgencyOpeningService.ListAgencyOpeningApplications:input_type -> hyapp.activity.v1.ListAgencyOpeningApplicationsRequest + 280, // 430: hyapp.activity.v1.AdminAgencyOpeningService.ReviewAgencyOpeningApplication:input_type -> hyapp.activity.v1.ReviewAgencyOpeningApplicationRequest + 294, // 431: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplates:input_type -> hyapp.activity.v1.ListActivityTemplatesRequest + 296, // 432: hyapp.activity.v1.AdminActivityTemplateService.CreateActivityTemplate:input_type -> hyapp.activity.v1.CreateActivityTemplateRequest + 298, // 433: hyapp.activity.v1.AdminActivityTemplateService.GetActivityTemplate:input_type -> hyapp.activity.v1.GetActivityTemplateRequest + 300, // 434: hyapp.activity.v1.AdminActivityTemplateService.UpdateActivityTemplate:input_type -> hyapp.activity.v1.UpdateActivityTemplateRequest + 302, // 435: hyapp.activity.v1.AdminActivityTemplateService.SetActivityTemplateStatus:input_type -> hyapp.activity.v1.SetActivityTemplateStatusRequest + 304, // 436: hyapp.activity.v1.AdminActivityTemplateService.DeleteActivityTemplate:input_type -> hyapp.activity.v1.DeleteActivityTemplateRequest + 307, // 437: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateVersions:input_type -> hyapp.activity.v1.ListActivityTemplateVersionsRequest + 309, // 438: hyapp.activity.v1.AdminActivityTemplateService.CloneActivityTemplate:input_type -> hyapp.activity.v1.CloneActivityTemplateRequest + 312, // 439: hyapp.activity.v1.AdminActivityTemplateService.ValidateActivityTemplate:input_type -> hyapp.activity.v1.ValidateActivityTemplateRequest + 330, // 440: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateLeaderboard:input_type -> hyapp.activity.v1.AdminListActivityTemplateLeaderboardRequest + 332, // 441: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateRewardJobs:input_type -> hyapp.activity.v1.ListActivityTemplateRewardJobsRequest + 334, // 442: hyapp.activity.v1.AdminActivityTemplateService.RetryActivityTemplateRewardJob:input_type -> hyapp.activity.v1.RetryActivityTemplateRewardJobRequest + 336, // 443: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateTaskClaims:input_type -> hyapp.activity.v1.ListActivityTemplateTaskClaimsRequest + 338, // 444: hyapp.activity.v1.AdminActivityTemplateService.RetryActivityTemplateTaskClaim:input_type -> hyapp.activity.v1.RetryActivityTemplateTaskClaimRequest + 149, // 445: hyapp.activity.v1.SevenDayCheckInService.GetSevenDayCheckInStatus:input_type -> hyapp.activity.v1.GetSevenDayCheckInStatusRequest + 151, // 446: hyapp.activity.v1.SevenDayCheckInService.SignSevenDayCheckIn:input_type -> hyapp.activity.v1.SignSevenDayCheckInRequest + 153, // 447: hyapp.activity.v1.AdminSevenDayCheckInService.GetSevenDayCheckInConfig:input_type -> hyapp.activity.v1.GetSevenDayCheckInConfigRequest + 155, // 448: hyapp.activity.v1.AdminSevenDayCheckInService.UpdateSevenDayCheckInConfig:input_type -> hyapp.activity.v1.UpdateSevenDayCheckInConfigRequest + 158, // 449: hyapp.activity.v1.AdminSevenDayCheckInService.ListSevenDayCheckInClaims:input_type -> hyapp.activity.v1.ListSevenDayCheckInClaimsRequest + 197, // 450: hyapp.activity.v1.AdminGrowthLevelService.ListLevelConfig:input_type -> hyapp.activity.v1.ListLevelConfigRequest + 189, // 451: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTrack:input_type -> hyapp.activity.v1.UpsertLevelTrackRequest + 191, // 452: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelRule:input_type -> hyapp.activity.v1.UpsertLevelRuleRequest + 193, // 453: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTier:input_type -> hyapp.activity.v1.UpsertLevelTierRequest + 195, // 454: hyapp.activity.v1.AdminGrowthLevelService.BatchUpsertLevelConfig:input_type -> hyapp.activity.v1.BatchUpsertLevelConfigRequest + 181, // 455: hyapp.activity.v1.AdminGrowthLevelService.BatchGetUserLevelAdminProfiles:input_type -> hyapp.activity.v1.BatchGetUserLevelAdminProfilesRequest + 184, // 456: hyapp.activity.v1.AdminGrowthLevelService.AdjustTemporaryUserLevels:input_type -> hyapp.activity.v1.AdjustTemporaryUserLevelsRequest + 202, // 457: hyapp.activity.v1.AdminAchievementService.ListAchievementDefinitions:input_type -> hyapp.activity.v1.ListAchievementsRequest + 211, // 458: hyapp.activity.v1.AdminAchievementService.UpsertAchievementDefinition:input_type -> hyapp.activity.v1.UpsertAchievementDefinitionRequest + 213, // 459: hyapp.activity.v1.AdminAchievementService.DeleteAchievementDefinition:input_type -> hyapp.activity.v1.DeleteAchievementDefinitionRequest + 222, // 460: hyapp.activity.v1.AdminWheelService.GetWheelConfig:input_type -> hyapp.activity.v1.GetWheelConfigRequest + 224, // 461: hyapp.activity.v1.AdminWheelService.UpsertWheelConfig:input_type -> hyapp.activity.v1.UpsertWheelConfigRequest + 226, // 462: hyapp.activity.v1.AdminWheelService.ListWheelDraws:input_type -> hyapp.activity.v1.ListWheelDrawsRequest + 229, // 463: hyapp.activity.v1.AdminWheelService.GetWheelDrawSummary:input_type -> hyapp.activity.v1.GetWheelDrawSummaryRequest + 2, // 464: hyapp.activity.v1.ActivityService.PingActivity:output_type -> hyapp.activity.v1.PingActivityResponse + 4, // 465: hyapp.activity.v1.ActivityService.GetActivityStatus:output_type -> hyapp.activity.v1.GetActivityStatusResponse + 7, // 466: hyapp.activity.v1.MessageInboxService.ListMessageTabs:output_type -> hyapp.activity.v1.ListMessageTabsResponse + 10, // 467: hyapp.activity.v1.MessageInboxService.ListInboxMessages:output_type -> hyapp.activity.v1.ListInboxMessagesResponse + 12, // 468: hyapp.activity.v1.MessageInboxService.MarkInboxMessageRead:output_type -> hyapp.activity.v1.MarkInboxMessageReadResponse + 14, // 469: hyapp.activity.v1.MessageInboxService.MarkInboxSectionRead:output_type -> hyapp.activity.v1.MarkInboxSectionReadResponse + 16, // 470: hyapp.activity.v1.MessageInboxService.DeleteInboxMessage:output_type -> hyapp.activity.v1.DeleteInboxMessageResponse + 18, // 471: hyapp.activity.v1.MessageInboxService.CreateInboxMessage:output_type -> hyapp.activity.v1.CreateInboxMessageResponse + 20, // 472: hyapp.activity.v1.MessageInboxService.CreateFanoutJob:output_type -> hyapp.activity.v1.CreateFanoutJobResponse + 23, // 473: hyapp.activity.v1.MessageActionConfirmService.AcceptActionConfirm:output_type -> hyapp.activity.v1.AcceptActionConfirmResponse + 25, // 474: hyapp.activity.v1.MessageActionConfirmService.RejectActionConfirm:output_type -> hyapp.activity.v1.RejectActionConfirmResponse + 27, // 475: hyapp.activity.v1.MessageActionConfirmService.BatchGetActionConfirmStatus:output_type -> hyapp.activity.v1.BatchGetActionConfirmStatusResponse + 29, // 476: hyapp.activity.v1.MessageActionConfirmService.ListConversationActionConfirms:output_type -> hyapp.activity.v1.ListConversationActionConfirmsResponse + 31, // 477: hyapp.activity.v1.ActivityCronService.ProcessMessageFanoutBatch:output_type -> hyapp.activity.v1.CronBatchResponse + 31, // 478: hyapp.activity.v1.ActivityCronService.ProcessLevelRewardBatch:output_type -> hyapp.activity.v1.CronBatchResponse + 31, // 479: hyapp.activity.v1.ActivityCronService.ProcessTemporaryLevelBatch:output_type -> hyapp.activity.v1.CronBatchResponse + 31, // 480: hyapp.activity.v1.ActivityCronService.ProcessAchievementRewardBatch:output_type -> hyapp.activity.v1.CronBatchResponse + 31, // 481: hyapp.activity.v1.ActivityCronService.ProcessRoomTurnoverRewardSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse + 31, // 482: hyapp.activity.v1.ActivityCronService.ProcessWeeklyStarSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse + 31, // 483: hyapp.activity.v1.ActivityCronService.ProcessCPWeeklyRankSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse + 31, // 484: hyapp.activity.v1.ActivityCronService.ProcessAgencyOpeningSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse + 31, // 485: hyapp.activity.v1.ActivityCronService.ProcessActivityTemplateSettlementBatch:output_type -> hyapp.activity.v1.CronBatchResponse + 319, // 486: hyapp.activity.v1.ActivityTemplateRuntimeService.GetCurrentActivityTemplate:output_type -> hyapp.activity.v1.GetCurrentActivityTemplateResponse + 321, // 487: hyapp.activity.v1.ActivityTemplateRuntimeService.VisitActivityTemplate:output_type -> hyapp.activity.v1.VisitActivityTemplateResponse + 323, // 488: hyapp.activity.v1.ActivityTemplateRuntimeService.ListActivityTemplateTasks:output_type -> hyapp.activity.v1.ListActivityTemplateTasksResponse + 325, // 489: hyapp.activity.v1.ActivityTemplateRuntimeService.ClaimActivityTemplateTaskReward:output_type -> hyapp.activity.v1.ClaimActivityTemplateTaskRewardResponse + 327, // 490: hyapp.activity.v1.ActivityTemplateRuntimeService.ListActivityTemplateLeaderboard:output_type -> hyapp.activity.v1.ListActivityTemplateLeaderboardResponse + 36, // 491: hyapp.activity.v1.TaskService.ListUserTasks:output_type -> hyapp.activity.v1.ListUserTasksResponse + 38, // 492: hyapp.activity.v1.TaskService.ClaimTaskReward:output_type -> hyapp.activity.v1.ClaimTaskRewardResponse + 40, // 493: hyapp.activity.v1.TaskService.ConsumeTaskEvent:output_type -> hyapp.activity.v1.ConsumeTaskEventResponse + 165, // 494: hyapp.activity.v1.GrowthLevelService.GetMyLevelOverview:output_type -> hyapp.activity.v1.GetMyLevelOverviewResponse + 167, // 495: hyapp.activity.v1.GrowthLevelService.GetLevelTrack:output_type -> hyapp.activity.v1.GetLevelTrackResponse + 171, // 496: hyapp.activity.v1.GrowthLevelService.BatchGetUserLevelDisplayProfiles:output_type -> hyapp.activity.v1.BatchGetUserLevelDisplayProfilesResponse + 174, // 497: hyapp.activity.v1.GrowthLevelService.ListLevelRewards:output_type -> hyapp.activity.v1.ListLevelRewardsResponse + 176, // 498: hyapp.activity.v1.GrowthLevelService.ConsumeLevelEvent:output_type -> hyapp.activity.v1.ConsumeLevelEventResponse + 178, // 499: hyapp.activity.v1.GrowthLevelService.SetUserLevel:output_type -> hyapp.activity.v1.SetUserLevelResponse + 188, // 500: hyapp.activity.v1.GrowthLevelService.IssueRegistrationLevelBadges:output_type -> hyapp.activity.v1.IssueRegistrationLevelBadgesResponse + 203, // 501: hyapp.activity.v1.AchievementService.ListAchievements:output_type -> hyapp.activity.v1.ListAchievementsResponse + 205, // 502: hyapp.activity.v1.AchievementService.ConsumeAchievementEvent:output_type -> hyapp.activity.v1.ConsumeAchievementEventResponse + 208, // 503: hyapp.activity.v1.AchievementService.ListMyBadges:output_type -> hyapp.activity.v1.ListMyBadgesResponse + 210, // 504: hyapp.activity.v1.AchievementService.SetBadgeDisplay:output_type -> hyapp.activity.v1.SetBadgeDisplayResponse + 221, // 505: hyapp.activity.v1.WheelService.ExecuteWheelDraw:output_type -> hyapp.activity.v1.ExecuteWheelDrawResponse + 137, // 506: hyapp.activity.v1.RoomTurnoverRewardService.GetRoomTurnoverRewardStatus:output_type -> hyapp.activity.v1.GetRoomTurnoverRewardStatusResponse + 249, // 507: hyapp.activity.v1.WeeklyStarService.GetWeeklyStarCurrent:output_type -> hyapp.activity.v1.GetWeeklyStarCurrentResponse + 245, // 508: hyapp.activity.v1.WeeklyStarService.ListWeeklyStarLeaderboard:output_type -> hyapp.activity.v1.ListWeeklyStarLeaderboardResponse + 252, // 509: hyapp.activity.v1.WeeklyStarService.ListWeeklyStarHistory:output_type -> hyapp.activity.v1.ListWeeklyStarHistoryResponse + 259, // 510: hyapp.activity.v1.CPWeeklyRankService.GetCPWeeklyRankStatus:output_type -> hyapp.activity.v1.GetCPWeeklyRankStatusResponse + 283, // 511: hyapp.activity.v1.AgencyOpeningService.GetAgencyOpeningStatus:output_type -> hyapp.activity.v1.GetAgencyOpeningStatusResponse + 285, // 512: hyapp.activity.v1.AgencyOpeningService.ApplyAgencyOpening:output_type -> hyapp.activity.v1.ApplyAgencyOpeningResponse + 279, // 513: hyapp.activity.v1.AgencyOpeningService.ListAgencyOpeningLeaderboard:output_type -> hyapp.activity.v1.ListAgencyOpeningApplicationsResponse + 43, // 514: hyapp.activity.v1.BroadcastService.EnsureBroadcastGroups:output_type -> hyapp.activity.v1.EnsureBroadcastGroupsResponse + 46, // 515: hyapp.activity.v1.BroadcastService.PublishRegionBroadcast:output_type -> hyapp.activity.v1.PublishBroadcastResponse + 46, // 516: hyapp.activity.v1.BroadcastService.PublishGlobalBroadcast:output_type -> hyapp.activity.v1.PublishBroadcastResponse + 48, // 517: hyapp.activity.v1.BroadcastService.RemoveRegionBroadcastMember:output_type -> hyapp.activity.v1.RemoveRegionBroadcastMemberResponse + 49, // 518: hyapp.activity.v1.BroadcastService.ProcessBroadcastOutboxBatch:output_type -> hyapp.activity.v1.ProcessBroadcastOutboxBatchResponse + 52, // 519: hyapp.activity.v1.AdminBroadcastService.GetGameWinBroadcastConfig:output_type -> hyapp.activity.v1.GetGameWinBroadcastConfigResponse + 54, // 520: hyapp.activity.v1.AdminBroadcastService.UpdateGameWinBroadcastConfig:output_type -> hyapp.activity.v1.UpdateGameWinBroadcastConfigResponse + 56, // 521: hyapp.activity.v1.RoomEventConsumerService.ConsumeRoomEvent:output_type -> hyapp.activity.v1.ConsumeRoomEventResponse + 59, // 522: hyapp.activity.v1.AdminTaskService.ListTaskDefinitions:output_type -> hyapp.activity.v1.ListTaskDefinitionsResponse + 61, // 523: hyapp.activity.v1.AdminTaskService.UpsertTaskDefinition:output_type -> hyapp.activity.v1.UpsertTaskDefinitionResponse + 63, // 524: hyapp.activity.v1.AdminTaskService.SetTaskDefinitionStatus:output_type -> hyapp.activity.v1.SetTaskDefinitionStatusResponse + 65, // 525: hyapp.activity.v1.AdminTaskService.PublishTaskRewardPolicy:output_type -> hyapp.activity.v1.PublishTaskRewardPolicyResponse + 70, // 526: hyapp.activity.v1.RegistrationRewardService.GetRegistrationRewardEligibility:output_type -> hyapp.activity.v1.GetRegistrationRewardEligibilityResponse + 72, // 527: hyapp.activity.v1.RegistrationRewardService.IssueRegistrationReward:output_type -> hyapp.activity.v1.IssueRegistrationRewardResponse + 74, // 528: hyapp.activity.v1.AdminRegistrationRewardService.GetRegistrationRewardConfig:output_type -> hyapp.activity.v1.GetRegistrationRewardConfigResponse + 76, // 529: hyapp.activity.v1.AdminRegistrationRewardService.UpdateRegistrationRewardConfig:output_type -> hyapp.activity.v1.UpdateRegistrationRewardConfigResponse + 78, // 530: hyapp.activity.v1.AdminRegistrationRewardService.ListRegistrationRewardClaims:output_type -> hyapp.activity.v1.ListRegistrationRewardClaimsResponse + 84, // 531: hyapp.activity.v1.FirstRechargeRewardService.GetFirstRechargeRewardStatus:output_type -> hyapp.activity.v1.GetFirstRechargeRewardStatusResponse + 86, // 532: hyapp.activity.v1.FirstRechargeRewardService.ConsumeFirstRechargeReward:output_type -> hyapp.activity.v1.ConsumeFirstRechargeRewardResponse + 88, // 533: hyapp.activity.v1.AdminFirstRechargeRewardService.GetFirstRechargeRewardConfig:output_type -> hyapp.activity.v1.GetFirstRechargeRewardConfigResponse + 90, // 534: hyapp.activity.v1.AdminFirstRechargeRewardService.UpdateFirstRechargeRewardConfig:output_type -> hyapp.activity.v1.UpdateFirstRechargeRewardConfigResponse + 92, // 535: hyapp.activity.v1.AdminFirstRechargeRewardService.ListFirstRechargeRewardClaims:output_type -> hyapp.activity.v1.ListFirstRechargeRewardClaimsResponse + 99, // 536: hyapp.activity.v1.CumulativeRechargeRewardService.GetCumulativeRechargeRewardStatus:output_type -> hyapp.activity.v1.GetCumulativeRechargeRewardStatusResponse + 101, // 537: hyapp.activity.v1.CumulativeRechargeRewardService.ConsumeCumulativeRechargeReward:output_type -> hyapp.activity.v1.ConsumeCumulativeRechargeRewardResponse + 114, // 538: hyapp.activity.v1.InviteActivityRewardService.GetInviteActivityRewardStatus:output_type -> hyapp.activity.v1.GetInviteActivityRewardStatusResponse + 116, // 539: hyapp.activity.v1.InviteActivityRewardService.ClaimInviteActivityReward:output_type -> hyapp.activity.v1.ClaimInviteActivityRewardResponse + 119, // 540: hyapp.activity.v1.InviteActivityRewardService.ListInviteActivityLeaderboard:output_type -> hyapp.activity.v1.ListInviteActivityLeaderboardResponse + 128, // 541: hyapp.activity.v1.InviteActivityRewardService.ListInviteActivityInvitees:output_type -> hyapp.activity.v1.ListInviteActivityInviteesResponse + 103, // 542: hyapp.activity.v1.AdminCumulativeRechargeRewardService.GetCumulativeRechargeRewardConfig:output_type -> hyapp.activity.v1.GetCumulativeRechargeRewardConfigResponse + 105, // 543: hyapp.activity.v1.AdminCumulativeRechargeRewardService.UpdateCumulativeRechargeRewardConfig:output_type -> hyapp.activity.v1.UpdateCumulativeRechargeRewardConfigResponse + 107, // 544: hyapp.activity.v1.AdminCumulativeRechargeRewardService.ListCumulativeRechargeRewardGrants:output_type -> hyapp.activity.v1.ListCumulativeRechargeRewardGrantsResponse + 121, // 545: hyapp.activity.v1.AdminInviteActivityRewardService.GetInviteActivityRewardConfig:output_type -> hyapp.activity.v1.GetInviteActivityRewardConfigResponse + 123, // 546: hyapp.activity.v1.AdminInviteActivityRewardService.UpdateInviteActivityRewardConfig:output_type -> hyapp.activity.v1.UpdateInviteActivityRewardConfigResponse + 125, // 547: hyapp.activity.v1.AdminInviteActivityRewardService.ListInviteActivityRewardClaims:output_type -> hyapp.activity.v1.ListInviteActivityRewardClaimsResponse + 131, // 548: hyapp.activity.v1.AdminInviteActivityRewardService.ListInviteActivityRewardSummaries:output_type -> hyapp.activity.v1.ListInviteActivityRewardSummariesResponse + 139, // 549: hyapp.activity.v1.AdminRoomTurnoverRewardService.GetRoomTurnoverRewardConfig:output_type -> hyapp.activity.v1.GetRoomTurnoverRewardConfigResponse + 141, // 550: hyapp.activity.v1.AdminRoomTurnoverRewardService.UpdateRoomTurnoverRewardConfig:output_type -> hyapp.activity.v1.UpdateRoomTurnoverRewardConfigResponse + 143, // 551: hyapp.activity.v1.AdminRoomTurnoverRewardService.ListRoomTurnoverRewardSettlements:output_type -> hyapp.activity.v1.ListRoomTurnoverRewardSettlementsResponse + 145, // 552: hyapp.activity.v1.AdminRoomTurnoverRewardService.RetryRoomTurnoverRewardSettlement:output_type -> hyapp.activity.v1.RetryRoomTurnoverRewardSettlementResponse + 237, // 553: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarCycles:output_type -> hyapp.activity.v1.ListWeeklyStarCyclesResponse + 241, // 554: hyapp.activity.v1.AdminWeeklyStarService.CreateWeeklyStarCycle:output_type -> hyapp.activity.v1.UpsertWeeklyStarCycleResponse + 239, // 555: hyapp.activity.v1.AdminWeeklyStarService.GetWeeklyStarCycle:output_type -> hyapp.activity.v1.GetWeeklyStarCycleResponse + 241, // 556: hyapp.activity.v1.AdminWeeklyStarService.UpdateWeeklyStarCycle:output_type -> hyapp.activity.v1.UpsertWeeklyStarCycleResponse + 243, // 557: hyapp.activity.v1.AdminWeeklyStarService.SetWeeklyStarCycleStatus:output_type -> hyapp.activity.v1.SetWeeklyStarCycleStatusResponse + 245, // 558: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarLeaderboard:output_type -> hyapp.activity.v1.ListWeeklyStarLeaderboardResponse + 247, // 559: hyapp.activity.v1.AdminWeeklyStarService.ListWeeklyStarSettlements:output_type -> hyapp.activity.v1.ListWeeklyStarSettlementsResponse + 261, // 560: hyapp.activity.v1.AdminCPWeeklyRankService.GetCPWeeklyRankConfig:output_type -> hyapp.activity.v1.GetCPWeeklyRankConfigResponse + 263, // 561: hyapp.activity.v1.AdminCPWeeklyRankService.UpdateCPWeeklyRankConfig:output_type -> hyapp.activity.v1.UpdateCPWeeklyRankConfigResponse + 265, // 562: hyapp.activity.v1.AdminCPWeeklyRankService.ListCPWeeklyRankSettlements:output_type -> hyapp.activity.v1.ListCPWeeklyRankSettlementsResponse + 271, // 563: hyapp.activity.v1.AdminAgencyOpeningService.ListAgencyOpeningCycles:output_type -> hyapp.activity.v1.ListAgencyOpeningCyclesResponse + 275, // 564: hyapp.activity.v1.AdminAgencyOpeningService.CreateAgencyOpeningCycle:output_type -> hyapp.activity.v1.UpsertAgencyOpeningCycleResponse + 273, // 565: hyapp.activity.v1.AdminAgencyOpeningService.GetAgencyOpeningCycle:output_type -> hyapp.activity.v1.GetAgencyOpeningCycleResponse + 275, // 566: hyapp.activity.v1.AdminAgencyOpeningService.UpdateAgencyOpeningCycle:output_type -> hyapp.activity.v1.UpsertAgencyOpeningCycleResponse + 277, // 567: hyapp.activity.v1.AdminAgencyOpeningService.SetAgencyOpeningCycleStatus:output_type -> hyapp.activity.v1.SetAgencyOpeningCycleStatusResponse + 279, // 568: hyapp.activity.v1.AdminAgencyOpeningService.ListAgencyOpeningApplications:output_type -> hyapp.activity.v1.ListAgencyOpeningApplicationsResponse + 281, // 569: hyapp.activity.v1.AdminAgencyOpeningService.ReviewAgencyOpeningApplication:output_type -> hyapp.activity.v1.ReviewAgencyOpeningApplicationResponse + 295, // 570: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplates:output_type -> hyapp.activity.v1.ListActivityTemplatesResponse + 297, // 571: hyapp.activity.v1.AdminActivityTemplateService.CreateActivityTemplate:output_type -> hyapp.activity.v1.CreateActivityTemplateResponse + 299, // 572: hyapp.activity.v1.AdminActivityTemplateService.GetActivityTemplate:output_type -> hyapp.activity.v1.GetActivityTemplateResponse + 301, // 573: hyapp.activity.v1.AdminActivityTemplateService.UpdateActivityTemplate:output_type -> hyapp.activity.v1.UpdateActivityTemplateResponse + 303, // 574: hyapp.activity.v1.AdminActivityTemplateService.SetActivityTemplateStatus:output_type -> hyapp.activity.v1.SetActivityTemplateStatusResponse + 305, // 575: hyapp.activity.v1.AdminActivityTemplateService.DeleteActivityTemplate:output_type -> hyapp.activity.v1.DeleteActivityTemplateResponse + 308, // 576: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateVersions:output_type -> hyapp.activity.v1.ListActivityTemplateVersionsResponse + 310, // 577: hyapp.activity.v1.AdminActivityTemplateService.CloneActivityTemplate:output_type -> hyapp.activity.v1.CloneActivityTemplateResponse + 313, // 578: hyapp.activity.v1.AdminActivityTemplateService.ValidateActivityTemplate:output_type -> hyapp.activity.v1.ValidateActivityTemplateResponse + 331, // 579: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateLeaderboard:output_type -> hyapp.activity.v1.AdminListActivityTemplateLeaderboardResponse + 333, // 580: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateRewardJobs:output_type -> hyapp.activity.v1.ListActivityTemplateRewardJobsResponse + 335, // 581: hyapp.activity.v1.AdminActivityTemplateService.RetryActivityTemplateRewardJob:output_type -> hyapp.activity.v1.RetryActivityTemplateRewardJobResponse + 337, // 582: hyapp.activity.v1.AdminActivityTemplateService.ListActivityTemplateTaskClaims:output_type -> hyapp.activity.v1.ListActivityTemplateTaskClaimsResponse + 339, // 583: hyapp.activity.v1.AdminActivityTemplateService.RetryActivityTemplateTaskClaim:output_type -> hyapp.activity.v1.RetryActivityTemplateTaskClaimResponse + 150, // 584: hyapp.activity.v1.SevenDayCheckInService.GetSevenDayCheckInStatus:output_type -> hyapp.activity.v1.GetSevenDayCheckInStatusResponse + 152, // 585: hyapp.activity.v1.SevenDayCheckInService.SignSevenDayCheckIn:output_type -> hyapp.activity.v1.SignSevenDayCheckInResponse + 154, // 586: hyapp.activity.v1.AdminSevenDayCheckInService.GetSevenDayCheckInConfig:output_type -> hyapp.activity.v1.GetSevenDayCheckInConfigResponse + 156, // 587: hyapp.activity.v1.AdminSevenDayCheckInService.UpdateSevenDayCheckInConfig:output_type -> hyapp.activity.v1.UpdateSevenDayCheckInConfigResponse + 159, // 588: hyapp.activity.v1.AdminSevenDayCheckInService.ListSevenDayCheckInClaims:output_type -> hyapp.activity.v1.ListSevenDayCheckInClaimsResponse + 198, // 589: hyapp.activity.v1.AdminGrowthLevelService.ListLevelConfig:output_type -> hyapp.activity.v1.ListLevelConfigResponse + 190, // 590: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTrack:output_type -> hyapp.activity.v1.UpsertLevelTrackResponse + 192, // 591: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelRule:output_type -> hyapp.activity.v1.UpsertLevelRuleResponse + 194, // 592: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTier:output_type -> hyapp.activity.v1.UpsertLevelTierResponse + 196, // 593: hyapp.activity.v1.AdminGrowthLevelService.BatchUpsertLevelConfig:output_type -> hyapp.activity.v1.BatchUpsertLevelConfigResponse + 182, // 594: hyapp.activity.v1.AdminGrowthLevelService.BatchGetUserLevelAdminProfiles:output_type -> hyapp.activity.v1.BatchGetUserLevelAdminProfilesResponse + 185, // 595: hyapp.activity.v1.AdminGrowthLevelService.AdjustTemporaryUserLevels:output_type -> hyapp.activity.v1.AdjustTemporaryUserLevelsResponse + 203, // 596: hyapp.activity.v1.AdminAchievementService.ListAchievementDefinitions:output_type -> hyapp.activity.v1.ListAchievementsResponse + 212, // 597: hyapp.activity.v1.AdminAchievementService.UpsertAchievementDefinition:output_type -> hyapp.activity.v1.UpsertAchievementDefinitionResponse + 214, // 598: hyapp.activity.v1.AdminAchievementService.DeleteAchievementDefinition:output_type -> hyapp.activity.v1.DeleteAchievementDefinitionResponse + 223, // 599: hyapp.activity.v1.AdminWheelService.GetWheelConfig:output_type -> hyapp.activity.v1.GetWheelConfigResponse + 225, // 600: hyapp.activity.v1.AdminWheelService.UpsertWheelConfig:output_type -> hyapp.activity.v1.UpsertWheelConfigResponse + 227, // 601: hyapp.activity.v1.AdminWheelService.ListWheelDraws:output_type -> hyapp.activity.v1.ListWheelDrawsResponse + 230, // 602: hyapp.activity.v1.AdminWheelService.GetWheelDrawSummary:output_type -> hyapp.activity.v1.GetWheelDrawSummaryResponse + 464, // [464:603] is the sub-list for method output_type + 325, // [325:464] is the sub-list for method input_type + 325, // [325:325] is the sub-list for extension type_name + 325, // [325:325] is the sub-list for extension extendee + 0, // [0:325] is the sub-list for field type_name } func init() { file_proto_activity_v1_activity_proto_init() } @@ -30782,7 +30957,7 @@ func file_proto_activity_v1_activity_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_activity_v1_activity_proto_rawDesc), len(file_proto_activity_v1_activity_proto_rawDesc)), NumEnums: 0, - NumMessages: 341, + NumMessages: 343, NumExtensions: 0, NumServices: 35, }, diff --git a/api/proto/activity/v1/activity.proto b/api/proto/activity/v1/activity.proto index a250bd12..b5f1c73e 100644 --- a/api/proto/activity/v1/activity.proto +++ b/api/proto/activity/v1/activity.proto @@ -74,6 +74,8 @@ message InboxMessage { repeated string image_urls = 12; // reward_items 是活动发奖的有序结构化快照;客户端不解析 body/metadata_json 猜测数量和有效天数。 repeated InboxRewardItem reward_items = 13; + // actions 最多两个;每个按钮的文案、样式、API 和参数均由后端快照提供。 + repeated InboxAction actions = 14; } // ListInboxMessagesRequest 按 section 和游标分页读取当前用户 inbox。 @@ -159,6 +161,8 @@ message CreateInboxMessageRequest { repeated string image_urls = 22; // reward_items 与 image_urls 一样由 inbox owner 写入受控 metadata,避免扩表并保持强类型输出。 repeated InboxRewardItem reward_items = 23; + // actions 由 inbox owner 校验并写入 metadata JSON;客户端只消费强类型输出。 + repeated InboxAction actions = 24; } // CreateInboxMessageResponse 返回入箱结果;重复同一 producer_event_id 时 created=false。 @@ -3027,6 +3031,23 @@ message InboxRewardItem { int64 duration_days = 5; } +// InboxActionAPI 是后端下发的同源 App API 请求;Flutter 只执行相对 /api/v1 路径, +// 不接收 headers、host 或自定义 scheme,避免通知内容绕过统一鉴权和租户请求头。 +message InboxActionAPI { + string method = 1; + string path = 2; + string query_json = 3; + string body_json = 4; +} + +// InboxAction 与 C2C im_confirm.actions 保持相同的按钮展示语义;label 完全由后端提供。 +message InboxAction { + string action = 1; + string label = 2; + string style = 3; + InboxActionAPI api = 4; +} + // ActivityService 只暴露同步查询,不把事件消费伪装成 RPC。 service ActivityService { rpc PingActivity(PingActivityRequest) returns (PingActivityResponse); diff --git a/docs/Fami_VIP_Flutter对接方案.md b/docs/Fami_VIP_Flutter对接方案.md index 40ebc0ca..0ab4a7f3 100644 --- a/docs/Fami_VIP_Flutter对接方案.md +++ b/docs/Fami_VIP_Flutter对接方案.md @@ -1162,7 +1162,7 @@ PATCH: - `GET /api/v1/vip/coin-rebates/current`:查当前 UTC 日资格。 - `POST /api/v1/vip/coin-rebates/statuses`:批量恢复系统消息中的真实状态,或分页查历史。 - `POST /api/v1/vip/coin-rebates/{rebate_id}/claim`:手动领取。 -- `GET /api/v1/messages?section=system&page_size=20&page_token=`:查“VIP金币返现”系统消息。 +- `GET /api/v1/messages?section=system&page_size=20&page_token=`:查 “VIP Coin Cashback” 系统消息。 ### 参数 @@ -1312,9 +1312,9 @@ claim: ```json { "message_id": "msg_vip_rebate_xxx", - "title": "VIP金币返现", - "summary": "尊敬的VIP用户,平台今日返现100金币,请及时领取。", - "body": "尊敬的VIP用户,平台今日返现100金币,请及时领取。", + "title": "VIP Coin Cashback", + "summary": "Your daily VIP cashback of 100 coins is ready. Claim it before it expires.", + "body": "Your daily VIP cashback of 100 coins is ready. Claim it before it expires.", "icon_url": "", "image_url": "", "action_type": "vip_coin_rebate_claim", diff --git a/docs/VIP系统架构.md b/docs/VIP系统架构.md index 59c26462..8cb1c5a3 100644 --- a/docs/VIP系统架构.md +++ b/docs/VIP系统架构.md @@ -110,7 +110,7 @@ Fami 的 VIP1–VIP9 初始全部为 `disabled`。30 天只是不产生零时长 1. 首个成功批次固化当时的 `config_version` 和等级金额矩阵;后续分页不重读新配置。 2. wallet 根据会员历史还原 UTC 0 点时的付费 VIP;0 点后才购买或升级的状态从次日起参与。 3. 生成 `vip_daily_coin_rebates` 资格,领取窗口固定为 `[UTC 当日0点,UTC 次日0点)`。 -4. 同事务写 `VipDailyCoinRebateAvailable` outbox;activity-service 幂等投影为“VIP金币返现”系统消息。 +4. 同事务写 `VipDailyCoinRebateAvailable` outbox;activity-service 幂等投影为 “VIP Coin Cashback” 系统消息。 5. 用户手动领取时,返现行锁、COIN 余额、交易、分录和 `WalletBalanceChanged` outbox 在一个事务内提交。 “日切资格”严格按 UTC 0 点;“金额配置”是当日首个成功 run 的快照,不伪造系统尚未保存的 0 点历史配置。正常情况下 cron 每分钟触发;如零点后 wallet/cron 长时间不可用,恢复前的后台金额修改会进入当日快照。运营若要保证修改次日生效,应在当日 run 已创建后修改。 diff --git a/docs/新版VIP权限策略_Flutter客户端对接文档.md b/docs/新版VIP权限策略_Flutter客户端对接文档.md index dda9bde4..69daffdb 100644 --- a/docs/新版VIP权限策略_Flutter客户端对接文档.md +++ b/docs/新版VIP权限策略_Flutter客户端对接文档.md @@ -1334,9 +1334,9 @@ Flutter 使用 `event_id` 去重,直接使用事件内的用户、VIP 和头 ```json { "message_id": "msg_vip_rebate_xxx", - "title": "VIP金币返现", - "summary": "尊敬的VIP用户,平台今日返现100金币,请及时领取。", - "body": "尊敬的VIP用户,平台今日返现100金币,请及时领取。", + "title": "VIP Coin Cashback", + "summary": "Your daily VIP cashback of 100 coins is ready. Claim it before it expires.", + "body": "Your daily VIP cashback of 100 coins is ready. Claim it before it expires.", "icon_url": "", "image_url": "", "action_type": "vip_coin_rebate_claim", diff --git a/server/admin/internal/modules/fullservernotice/handler.go b/server/admin/internal/modules/fullservernotice/handler.go index b5ae0bb6..fab3b048 100644 --- a/server/admin/internal/modules/fullservernotice/handler.go +++ b/server/admin/internal/modules/fullservernotice/handler.go @@ -44,30 +44,45 @@ func New(activity activityclient.Client, audit shared.OperationLogger) *Handler } type fanoutRequest struct { - CommandID string `json:"command_id"` - MessageType string `json:"message_type"` - TargetScope string `json:"target_scope"` - TargetUserID int64 `json:"target_user_id"` - UserIDs int64List `json:"user_ids"` - RegionID int64 `json:"region_id"` - Country string `json:"country"` - ProducerEventType string `json:"producer_event_type"` - AggregateType string `json:"aggregate_type"` - AggregateID string `json:"aggregate_id"` - TemplateID string `json:"template_id"` - TemplateVersion string `json:"template_version"` - Title string `json:"title"` - Summary string `json:"summary"` - Body string `json:"body"` - IconURL string `json:"icon_url"` - ImageURL string `json:"image_url"` - ActionType string `json:"action_type"` - ActionParam string `json:"action_param"` - Priority int32 `json:"priority"` - SentAtMS int64 `json:"sent_at_ms"` - ExpireAtMS int64 `json:"expire_at_ms"` - MetadataJSON string `json:"metadata_json"` - BatchSize int32 `json:"batch_size"` + CommandID string `json:"command_id"` + MessageType string `json:"message_type"` + TargetScope string `json:"target_scope"` + TargetUserID int64 `json:"target_user_id"` + UserIDs int64List `json:"user_ids"` + RegionID int64 `json:"region_id"` + Country string `json:"country"` + ProducerEventType string `json:"producer_event_type"` + AggregateType string `json:"aggregate_type"` + AggregateID string `json:"aggregate_id"` + TemplateID string `json:"template_id"` + TemplateVersion string `json:"template_version"` + Title string `json:"title"` + Summary string `json:"summary"` + Body string `json:"body"` + IconURL string `json:"icon_url"` + ImageURL string `json:"image_url"` + Actions []inboxActionRequest `json:"actions"` + ActionType string `json:"action_type"` + ActionParam string `json:"action_param"` + Priority int32 `json:"priority"` + SentAtMS int64 `json:"sent_at_ms"` + ExpireAtMS int64 `json:"expire_at_ms"` + MetadataJSON string `json:"metadata_json"` + BatchSize int32 `json:"batch_size"` +} + +type inboxActionRequest struct { + Action string `json:"action"` + Label string `json:"label"` + Style string `json:"style"` + API inboxActionAPIRequest `json:"api"` +} + +type inboxActionAPIRequest struct { + Method string `json:"method"` + Path string `json:"path"` + Query map[string]any `json:"query,omitempty"` + Body any `json:"body,omitempty"` } type fanoutDTO struct { @@ -168,6 +183,13 @@ func normalizeFanoutRequest(req fanoutRequest, adminID int64) (fanoutRequest, er req.Body = strings.TrimSpace(req.Body) req.IconURL = strings.TrimSpace(req.IconURL) req.ImageURL = strings.TrimSpace(req.ImageURL) + for index := range req.Actions { + req.Actions[index].Action = strings.ToLower(strings.TrimSpace(req.Actions[index].Action)) + req.Actions[index].Label = strings.TrimSpace(req.Actions[index].Label) + req.Actions[index].Style = strings.ToLower(strings.TrimSpace(req.Actions[index].Style)) + req.Actions[index].API.Method = strings.ToUpper(strings.TrimSpace(req.Actions[index].API.Method)) + req.Actions[index].API.Path = strings.TrimSpace(req.Actions[index].API.Path) + } req.ActionType = strings.TrimSpace(req.ActionType) req.ActionParam = strings.TrimSpace(req.ActionParam) req.ProducerEventType = firstText(req.ProducerEventType, defaultProducerEventType) @@ -247,6 +269,7 @@ func buildTemplateSnapshotJSON(req fanoutRequest) (string, error) { "body": req.Body, "icon_url": req.IconURL, "image_url": req.ImageURL, + "actions": req.Actions, "action_type": req.ActionType, "action_param": req.ActionParam, "priority": req.Priority, diff --git a/server/admin/internal/modules/fullservernotice/handler_test.go b/server/admin/internal/modules/fullservernotice/handler_test.go index 7ce74e38..8906ff35 100644 --- a/server/admin/internal/modules/fullservernotice/handler_test.go +++ b/server/admin/internal/modules/fullservernotice/handler_test.go @@ -7,11 +7,21 @@ import ( func TestBuildFanoutJSONForUserIDScope(t *testing.T) { req, err := normalizeFanoutRequest(fanoutRequest{ - MessageType: "activity", - TargetScope: "user_ids", - UserIDs: int64List{42, 43, 42, 0}, - Title: "活动上线", - Summary: "新活动已上线。", + MessageType: "activity", + TargetScope: "user_ids", + UserIDs: int64List{42, 43, 42, 0}, + Title: "活动上线", + Summary: "新活动已上线。", + Actions: []inboxActionRequest{{ + Action: " JOIN ", + Label: " Join now ", + Style: " PRIMARY ", + API: inboxActionAPIRequest{ + Method: " post ", + Path: " /api/v1/activities/act_01/join ", + Body: map[string]any{"campaign_id": "act_01"}, + }, + }}, ActionType: "activity_detail", ActionParam: "activity_id=act_01", MetadataJSON: `{"source":"admin"}`, @@ -31,7 +41,7 @@ func TestBuildFanoutJSONForUserIDScope(t *testing.T) { if err != nil { t.Fatalf("buildTemplateSnapshotJSON failed: %v", err) } - for _, required := range []string{`"title":"活动上线"`, `"action_type":"activity_detail"`, `"metadata_json":{"source":"admin"}`} { + for _, required := range []string{`"title":"活动上线"`, `"action":"join"`, `"label":"Join now"`, `"method":"POST"`, `"path":"/api/v1/activities/act_01/join"`, `"action_type":"activity_detail"`, `"metadata_json":{"source":"admin"}`} { if !strings.Contains(templateSnapshotJSON, required) { t.Fatalf("template snapshot %s missing %s", templateSnapshotJSON, required) } diff --git a/services/activity-service/internal/app/vip_rebate_notice.go b/services/activity-service/internal/app/vip_rebate_notice.go index a478c2e6..37be3677 100644 --- a/services/activity-service/internal/app/vip_rebate_notice.go +++ b/services/activity-service/internal/app/vip_rebate_notice.go @@ -3,13 +3,13 @@ package app import ( "context" "encoding/json" - "fmt" "strings" "time" "hyapp/pkg/appcode" "hyapp/pkg/walletmq" "hyapp/pkg/xerr" + messagedomain "hyapp/services/activity-service/internal/domain/message" messageservice "hyapp/services/activity-service/internal/service/message" ) @@ -85,30 +85,21 @@ func createVIPRebateSystemNotice(ctx context.Context, service *messageservice.Se if service == nil { return xerr.New(xerr.Unavailable, "message service is not configured") } - actionParam, err := json.Marshal(map[string]any{ - "rebate_id": event.RebateID, - "task_day": event.TaskDay, - "coin_amount": event.CoinAmount, - "expires_at_ms": event.ExpiresAtMS, - }) - if err != nil { - return err - } - summary := fmt.Sprintf("尊敬的VIP用户,平台今日返现%d金币,请及时领取。", event.CoinAmount) - _, err = service.CreateSystemNotice(ctx, messageservice.NoticeCommand{ + // 返现资格尚未入账,英文文案必须表达“可领取”而不是“已到账”,避免客户端展示与钱包事实冲突。 + title, summary := messageservice.VIPDailyCoinRebateNoticeCopy(event.CoinAmount) + _, err := service.CreateSystemNotice(ctx, messageservice.NoticeCommand{ TargetUserID: event.UserID, Producer: "wallet-service", ProducerEventID: event.EventID, ProducerEventType: vipDailyCoinRebateAvailableEventType, AggregateType: "vip_daily_coin_rebate", AggregateID: event.RebateID, - TemplateID: "vip_daily_coin_rebate_available", - TemplateVersion: "v1", - Title: "VIP金币返现", + TemplateID: messageservice.VIPDailyCoinRebateNoticeTemplateID, + TemplateVersion: messageservice.VIPDailyCoinRebateNoticeTemplateVersion, + Title: title, Summary: summary, Body: summary, - ActionType: "vip_coin_rebate_claim", - ActionParam: string(actionParam), + Actions: []messagedomain.InboxAction{messageservice.VIPDailyCoinRebateNoticeAction(event.RebateID)}, Priority: 50, SentAtMS: event.AvailableAtMS, ExpireAtMS: event.ExpiresAtMS, diff --git a/services/activity-service/internal/app/vip_rebate_notice_test.go b/services/activity-service/internal/app/vip_rebate_notice_test.go index d2f2fad9..a4cf17da 100644 --- a/services/activity-service/internal/app/vip_rebate_notice_test.go +++ b/services/activity-service/internal/app/vip_rebate_notice_test.go @@ -65,9 +65,30 @@ func TestVIPRebateWalletEventCreatesOneIdempotentSystemNotice(t *testing.T) { t.Fatalf("system inbox mismatch: items=%+v err=%v", items, err) } item := items[0] - if item.Title != "VIP金币返现" || item.ActionType != "vip_coin_rebate_claim" || item.AggregateID != event.RebateID || item.ExpireAtMS != event.ExpiresAtMS || item.ActionParam == "" { + wantSummary := "Your daily VIP cashback of 100000 coins is ready. Claim it before it expires." + if item.Title != "VIP Coin Cashback" || item.Summary != wantSummary || item.Body != wantSummary || item.TemplateVersion != "v2" || item.AggregateID != event.RebateID || item.ExpireAtMS != event.ExpiresAtMS || len(item.Actions) != 1 { t.Fatalf("VIP rebate notice mismatch: %+v", item) } + action := item.Actions[0] + if action.Action != "claim" || action.Label != "Claim" || action.Style != "primary" || action.API.Method != "POST" || action.API.Path != "/api/v1/vip/coin-rebates/viprebate_fami_2027-01-15_42/claim" || action.API.Body == nil { + t.Fatalf("VIP rebate action mismatch: %+v", action) + } + + // 当天部署前已经落库的 v1 中文消息仍在有效窗口内;列表读取必须立即投影为同一英文文案。 + legacyActionParam := `{"coin_amount":88,"rebate_id":"viprebate_fami_2027-01-15_43"}` + if _, err := service.CreateSystemNotice(ctx, messageservice.NoticeCommand{ + TargetUserID: 43, Producer: "wallet-service", ProducerEventID: "wev-vip-rebate-legacy", + TemplateID: "vip_daily_coin_rebate_available", TemplateVersion: "v1", + Title: "VIP金币返现", Summary: "尊敬的VIP用户,平台今日返现88金币,请及时领取。", + Body: "尊敬的VIP用户,平台今日返现88金币,请及时领取。", ActionType: "vip_coin_rebate_claim", + ActionParam: legacyActionParam, SentAtMS: event.AvailableAtMS, ExpireAtMS: event.ExpiresAtMS, + }); err != nil { + t.Fatalf("create legacy system notice failed: %v", err) + } + legacyItems, _, err := service.ListInboxMessages(ctx, 43, "system", 20, "") + if err != nil || len(legacyItems) != 1 || legacyItems[0].Title != "VIP Coin Cashback" || legacyItems[0].Summary != "Your daily VIP cashback of 88 coins is ready. Claim it before it expires." || legacyItems[0].Body != legacyItems[0].Summary || legacyItems[0].ActionType != "" || len(legacyItems[0].Actions) != 1 || legacyItems[0].Actions[0].Label != "Claim" { + t.Fatalf("legacy VIP rebate notice must return English copy: items=%+v err=%v", legacyItems, err) + } } func vipRebateWalletMessage(t *testing.T, eventType string, userID int64, payload string) []byte { diff --git a/services/activity-service/internal/domain/message/message.go b/services/activity-service/internal/domain/message/message.go index 222330d8..dd1613e1 100644 --- a/services/activity-service/internal/domain/message/message.go +++ b/services/activity-service/internal/domain/message/message.go @@ -48,6 +48,22 @@ type RewardItem struct { DurationDays int64 `json:"duration_days,omitempty"` } +// InboxActionAPI 只描述 gateway 同源 API;headers 和绝对 URL 不进入消息事实。 +type InboxActionAPI struct { + Method string `json:"method"` + Path string `json:"path"` + Query map[string]any `json:"query,omitempty"` + Body any `json:"body,omitempty"` +} + +// InboxAction 是 system/activity 卡片的通用操作按钮快照,展示文案完全由生产者提供。 +type InboxAction struct { + Action string `json:"action"` + Label string `json:"label"` + Style string `json:"style"` + API InboxActionAPI `json:"api"` +} + // InboxMessage is the user-visible snapshot stored in user_inbox_messages. type InboxMessage struct { AppCode string @@ -69,7 +85,9 @@ type InboxMessage struct { // ImageURLs 是一张通知卡片内的有序图片列表;ImageURL 保留首图兼容旧客户端。 ImageURLs []string // RewardItems 从 metadata_json 还原为强类型响应;历史消息没有该字段时保持空列表。 - RewardItems []RewardItem + RewardItems []RewardItem + // Actions 与图片/奖励一样存入 metadata_json,避免为展示协议扩表。 + Actions []InboxAction ActionType string ActionParam string Priority int32 @@ -137,7 +155,9 @@ type CreateInput struct { // ImageURLs 会由 service 写入受控 metadata 快照,MySQL 继续使用现有 JSON 列持久化。 ImageURLs []string // RewardItems 与发奖事实一起固化,防止资源改名、换图或改时长后历史消息漂移。 - RewardItems []RewardItem + RewardItems []RewardItem + // Actions 最多两个,owner service 会校验按钮文案、样式和同源 API。 + Actions []InboxAction ActionType string ActionParam string Priority int32 diff --git a/services/activity-service/internal/service/message/fanout_worker.go b/services/activity-service/internal/service/message/fanout_worker.go index 0a5a2a99..a32d72df 100644 --- a/services/activity-service/internal/service/message/fanout_worker.go +++ b/services/activity-service/internal/service/message/fanout_worker.go @@ -40,22 +40,23 @@ type fanoutTargetFilter struct { } type fanoutTemplateSnapshot struct { - ProducerEventType string `json:"producer_event_type"` - AggregateType string `json:"aggregate_type"` - AggregateID string `json:"aggregate_id"` - TemplateID string `json:"template_id"` - TemplateVersion string `json:"template_version"` - Title string `json:"title"` - Summary string `json:"summary"` - Body string `json:"body"` - IconURL string `json:"icon_url"` - ImageURL string `json:"image_url"` - ActionType string `json:"action_type"` - ActionParam string `json:"action_param"` - Priority int32 `json:"priority"` - SentAtMS int64 `json:"sent_at_ms"` - ExpireAtMS int64 `json:"expire_at_ms"` - MetadataJSON json.RawMessage `json:"metadata_json"` + ProducerEventType string `json:"producer_event_type"` + AggregateType string `json:"aggregate_type"` + AggregateID string `json:"aggregate_id"` + TemplateID string `json:"template_id"` + TemplateVersion string `json:"template_version"` + Title string `json:"title"` + Summary string `json:"summary"` + Body string `json:"body"` + IconURL string `json:"icon_url"` + ImageURL string `json:"image_url"` + Actions []messagedomain.InboxAction `json:"actions"` + ActionType string `json:"action_type"` + ActionParam string `json:"action_param"` + Priority int32 `json:"priority"` + SentAtMS int64 `json:"sent_at_ms"` + ExpireAtMS int64 `json:"expire_at_ms"` + MetadataJSON json.RawMessage `json:"metadata_json"` } // ProcessNextFanoutJob claims one job, processes one target page, then commits progress. @@ -125,6 +126,7 @@ func (s *Service) processFanoutJobPage(ctx context.Context, job messagedomain.Fa Body: snapshot.Body, IconURL: snapshot.IconURL, ImageURL: snapshot.ImageURL, + Actions: snapshot.Actions, ActionType: snapshot.ActionType, ActionParam: snapshot.ActionParam, Priority: snapshot.Priority, diff --git a/services/activity-service/internal/service/message/notice.go b/services/activity-service/internal/service/message/notice.go index 810480a6..392f2b2b 100644 --- a/services/activity-service/internal/service/message/notice.go +++ b/services/activity-service/internal/service/message/notice.go @@ -3,13 +3,21 @@ package message import ( "context" "encoding/json" + "fmt" + "net/url" "strings" "hyapp/pkg/xerr" messagedomain "hyapp/services/activity-service/internal/domain/message" ) -const defaultNoticeProducer = "activity-service" +const ( + defaultNoticeProducer = "activity-service" + + VIPDailyCoinRebateNoticeTemplateID = "vip_daily_coin_rebate_available" + VIPDailyCoinRebateNoticeTemplateVersion = "v2" + VIPDailyCoinRebateNoticeTitle = "VIP Coin Cashback" +) // NoticeCommand is the common producer-facing command for one user-visible system/activity message. type NoticeCommand struct { @@ -28,6 +36,7 @@ type NoticeCommand struct { ImageURL string ImageURLs []string RewardItems []messagedomain.RewardItem + Actions []messagedomain.InboxAction ActionType string ActionParam string Priority int32 @@ -43,6 +52,54 @@ type NoticeResult struct { Created bool } +// VIPDailyCoinRebateNoticeCopy 使用钱包金额事实生成统一英文快照;金额缺失时仍返回英文兜底, +// 供读取历史 v1 中文消息时关闭旧文案泄漏,而不伪造未知的返现金额。 +func VIPDailyCoinRebateNoticeCopy(coinAmount int64) (string, string) { + if coinAmount <= 0 { + return VIPDailyCoinRebateNoticeTitle, "Your daily VIP cashback is ready. Claim it before it expires." + } + return VIPDailyCoinRebateNoticeTitle, fmt.Sprintf("Your daily VIP cashback of %d coins is ready. Claim it before it expires.", coinAmount) +} + +// normalizeVIPDailyCoinRebateNoticeCopy keeps already-persisted v1 inbox snapshots compatible with +// the English-only client contract. The rebate ID and amount still come from the immutable wallet event. +func normalizeVIPDailyCoinRebateNoticeCopy(message messagedomain.InboxMessage) messagedomain.InboxMessage { + if message.TemplateID != VIPDailyCoinRebateNoticeTemplateID || message.ActionType != "vip_coin_rebate_claim" { + return message + } + var actionParam struct { + CoinAmount int64 `json:"coin_amount"` + RebateID string `json:"rebate_id"` + } + _ = json.Unmarshal([]byte(message.ActionParam), &actionParam) + message.Title, message.Summary = VIPDailyCoinRebateNoticeCopy(actionParam.CoinAmount) + message.Body = message.Summary + if strings.TrimSpace(actionParam.RebateID) != "" { + message.Actions = []messagedomain.InboxAction{VIPDailyCoinRebateNoticeAction(actionParam.RebateID)} + message.ActionType = "" + message.ActionParam = "" + } + return message +} + +// VIPDailyCoinRebateNoticeAction 把 VIP 返现映射成普通 inbox 操作;Flutter 不识别 VIP, +// 只展示后端 label 并执行同源 API。稳定 command_id 让超时重试仍命中钱包幂等结果。 +func VIPDailyCoinRebateNoticeAction(rebateID string) messagedomain.InboxAction { + rebateID = strings.TrimSpace(rebateID) + return messagedomain.InboxAction{ + Action: "claim", + Label: "Claim", + Style: "primary", + API: messagedomain.InboxActionAPI{ + Method: "POST", + Path: "/api/v1/vip/coin-rebates/" + url.PathEscape(rebateID) + "/claim", + Body: map[string]any{ + "command_id": "vip_rebate_claim_" + rebateID, + }, + }, + } +} + // NoticeFanoutCommand is the common command for background system/activity broadcasts. type NoticeFanoutCommand struct { CommandID string @@ -62,6 +119,7 @@ type NoticeFanoutCommand struct { Body string IconURL string ImageURL string + Actions []messagedomain.InboxAction ActionType string ActionParam string Priority int32 @@ -108,6 +166,7 @@ func (s *Service) CreateNotice(ctx context.Context, messageType string, cmd Noti ImageURL: cmd.ImageURL, ImageURLs: cmd.ImageURLs, RewardItems: cmd.RewardItems, + Actions: cmd.Actions, ActionType: cmd.ActionType, ActionParam: cmd.ActionParam, Priority: cmd.Priority, @@ -202,6 +261,7 @@ func noticeTemplateSnapshotJSON(cmd NoticeFanoutCommand) (string, error) { "body": strings.TrimSpace(cmd.Body), "icon_url": strings.TrimSpace(cmd.IconURL), "image_url": strings.TrimSpace(cmd.ImageURL), + "actions": cmd.Actions, "action_type": strings.TrimSpace(cmd.ActionType), "action_param": strings.TrimSpace(cmd.ActionParam), "priority": cmd.Priority, diff --git a/services/activity-service/internal/service/message/service.go b/services/activity-service/internal/service/message/service.go index 7578bf4d..48fefd28 100644 --- a/services/activity-service/internal/service/message/service.go +++ b/services/activity-service/internal/service/message/service.go @@ -5,6 +5,7 @@ import ( "context" "encoding/base64" "encoding/json" + "net/url" "slices" "strings" "time" @@ -149,6 +150,9 @@ func (s *Service) ListInboxMessages(ctx context.Context, userID int64, section s for index := range messages { messages[index].ImageURLs = inboxImageURLs(messages[index].MetadataJSON, messages[index].ImageURL) messages[index].RewardItems = inboxRewardItems(messages[index].MetadataJSON) + messages[index].Actions = inboxActions(messages[index].MetadataJSON) + // 旧返现消息没有 actions;读取投影补齐英文文案和后端驱动按钮,不回写历史钱包事实。 + messages[index] = normalizeVIPDailyCoinRebateNoticeCopy(messages[index]) } if len(messages) <= limit { return messages, "", nil @@ -226,6 +230,7 @@ func (s *Service) CreateInboxMessage(ctx context.Context, input messagedomain.Cr ImageURL: input.ImageURL, ImageURLs: append([]string(nil), input.ImageURLs...), RewardItems: append([]messagedomain.RewardItem(nil), input.RewardItems...), + Actions: append([]messagedomain.InboxAction(nil), input.Actions...), ActionType: input.ActionType, ActionParam: input.ActionParam, Priority: input.Priority, @@ -246,6 +251,7 @@ func (s *Service) CreateInboxMessage(ctx context.Context, input messagedomain.Cr } existing.ImageURLs = inboxImageURLs(existing.MetadataJSON, existing.ImageURL) existing.RewardItems = inboxRewardItems(existing.MetadataJSON) + existing.Actions = inboxActions(existing.MetadataJSON) return existing, false, nil } return existing, true, nil @@ -367,11 +373,12 @@ func normalizeCreateInput(input messagedomain.CreateInput) messagedomain.CreateI input.ImageURL = strings.TrimSpace(input.ImageURL) input.ImageURLs = normalizeInboxImageURLs(input.ImageURLs, input.ImageURL) input.RewardItems = normalizeInboxRewardItems(input.RewardItems) + input.Actions = normalizeInboxActions(input.Actions) if input.ImageURL == "" && len(input.ImageURLs) > 0 { input.ImageURL = input.ImageURLs[0] } - // 图片和奖励项都写入 inbox owner 的受控 metadata 快照,避免扩表,同时对客户端仍输出强类型字段。 - input.MetadataJSON = inboxMetadataWithPresentation(input.MetadataJSON, input.ImageURLs, input.RewardItems) + // 图片、奖励和操作按钮都写入 inbox owner 的受控 metadata 快照,避免扩表,同时输出强类型字段。 + input.MetadataJSON = inboxMetadataWithPresentation(input.MetadataJSON, input.ImageURLs, input.RewardItems, input.Actions) input.ActionType = strings.TrimSpace(input.ActionType) input.ActionParam = strings.TrimSpace(input.ActionParam) input.MetadataJSON = strings.TrimSpace(input.MetadataJSON) @@ -431,6 +438,9 @@ func validateCreateInput(input messagedomain.CreateInput) error { return xerr.New(xerr.InvalidArgument, "reward_items values cannot be negative") } } + if err := validateInboxActions(input.Actions); err != nil { + return err + } if input.Title == "" || input.Summary == "" { return xerr.New(xerr.InvalidArgument, "title and summary are required") } @@ -449,6 +459,9 @@ func validateCreateInput(input messagedomain.CreateInput) error { if len(input.RewardItems) > 0 && !slices.Equal(inboxRewardItems(input.MetadataJSON), input.RewardItems) { return xerr.New(xerr.InvalidArgument, "metadata_json must be an object when reward_items is present") } + if len(input.Actions) > 0 && !sameJSONValue(inboxActions(input.MetadataJSON), input.Actions) { + return xerr.New(xerr.InvalidArgument, "metadata_json must be an object when actions are present") + } return nil } @@ -478,6 +491,15 @@ func validateFanoutInput(input messagedomain.CreateFanoutInput) error { if input.TemplateSnapshotJSON == "" || !json.Valid([]byte(input.TemplateSnapshotJSON)) { return xerr.New(xerr.InvalidArgument, "template_snapshot_json is invalid") } + var snapshot struct { + Actions []messagedomain.InboxAction `json:"actions"` + } + if err := json.Unmarshal([]byte(input.TemplateSnapshotJSON), &snapshot); err != nil { + return xerr.New(xerr.InvalidArgument, "template_snapshot_json is invalid") + } + if err := validateInboxActions(normalizeInboxActions(snapshot.Actions)); err != nil { + return err + } return nil } @@ -545,6 +567,8 @@ func sameInboxPayload(existing messagedomain.InboxMessage, next messagedomain.In next.ImageURLs = inboxImageURLs(next.MetadataJSON, next.ImageURL) existing.RewardItems = inboxRewardItems(existing.MetadataJSON) next.RewardItems = inboxRewardItems(next.MetadataJSON) + existing.Actions = inboxActions(existing.MetadataJSON) + next.Actions = inboxActions(next.MetadataJSON) return existing.UserID == next.UserID && existing.MessageType == next.MessageType && existing.Producer == next.Producer && @@ -584,7 +608,7 @@ func normalizeInboxImageURLs(values []string, legacyImageURL string) []string { return result } -func inboxMetadataWithPresentation(raw string, imageURLs []string, rewardItems []messagedomain.RewardItem) string { +func inboxMetadataWithPresentation(raw string, imageURLs []string, rewardItems []messagedomain.RewardItem, actions []messagedomain.InboxAction) string { raw = strings.TrimSpace(raw) metadata := map[string]any{} if raw != "" { @@ -606,6 +630,11 @@ func inboxMetadataWithPresentation(raw string, imageURLs []string, rewardItems [ } else { metadata["reward_items"] = rewardItems } + if len(actions) == 0 { + delete(metadata, "actions") + } else { + metadata["actions"] = actions + } if len(metadata) == 0 { return "" } @@ -650,6 +679,81 @@ func inboxImageURLs(raw string, legacyImageURL string) []string { return normalizeInboxImageURLs(metadata.ImageURLs, legacyImageURL) } +func normalizeInboxActions(values []messagedomain.InboxAction) []messagedomain.InboxAction { + result := make([]messagedomain.InboxAction, 0, len(values)) + for _, value := range values { + value.Action = strings.ToLower(strings.TrimSpace(value.Action)) + value.Label = strings.TrimSpace(value.Label) + value.Style = strings.ToLower(strings.TrimSpace(value.Style)) + if value.Style == "" { + value.Style = "primary" + } + value.API.Method = strings.ToUpper(strings.TrimSpace(value.API.Method)) + if value.API.Method == "" { + value.API.Method = "POST" + } + value.API.Path = strings.TrimSpace(value.API.Path) + result = append(result, value) + } + return result +} + +func inboxActions(raw string) []messagedomain.InboxAction { + var metadata struct { + Actions []messagedomain.InboxAction `json:"actions"` + } + if err := json.Unmarshal([]byte(strings.TrimSpace(raw)), &metadata); err != nil { + return nil + } + return normalizeInboxActions(metadata.Actions) +} + +func validateInboxActions(actions []messagedomain.InboxAction) error { + if len(actions) > 2 { + return xerr.New(xerr.InvalidArgument, "actions has too many items") + } + seen := make(map[string]struct{}, len(actions)) + for _, action := range actions { + if action.Action == "" || action.Label == "" { + return xerr.New(xerr.InvalidArgument, "actions action and label are required") + } + if utf8.RuneCountInString(action.Action) > 64 || utf8.RuneCountInString(action.Label) > 64 { + return xerr.New(xerr.InvalidArgument, "actions action or label is too long") + } + if _, exists := seen[action.Action]; exists { + return xerr.New(xerr.InvalidArgument, "actions action must be unique") + } + seen[action.Action] = struct{}{} + if action.Style != "primary" && action.Style != "secondary" { + return xerr.New(xerr.InvalidArgument, "actions style is invalid") + } + switch action.API.Method { + case "GET", "POST", "PUT", "PATCH", "DELETE": + default: + return xerr.New(xerr.InvalidArgument, "actions api method is invalid") + } + parsed, err := url.Parse(action.API.Path) + if err != nil || parsed.IsAbs() || parsed.Host != "" || parsed.RawQuery != "" || parsed.Fragment != "" || + !strings.HasPrefix(parsed.Path, "/api/v1/") || strings.Contains(parsed.Path, "..") { + return xerr.New(xerr.InvalidArgument, "actions api path is invalid") + } + if (action.API.Method == "GET" || action.API.Method == "DELETE") && action.API.Body != nil { + return xerr.New(xerr.InvalidArgument, "actions api body is not supported for method") + } + payload, err := json.Marshal(action) + if err != nil || len(payload) > 8192 { + return xerr.New(xerr.InvalidArgument, "actions item is too large") + } + } + return nil +} + +func sameJSONValue(left any, right any) bool { + leftBody, leftErr := json.Marshal(left) + rightBody, rightErr := json.Marshal(right) + return leftErr == nil && rightErr == nil && sameJSONText(string(leftBody), string(rightBody)) +} + func sameFanoutPayload(existing messagedomain.FanoutJob, next messagedomain.FanoutJob) bool { return existing.CommandID == next.CommandID && existing.MessageType == next.MessageType && diff --git a/services/activity-service/internal/service/message/service_test.go b/services/activity-service/internal/service/message/service_test.go index 5c4fba92..84c36b8c 100644 --- a/services/activity-service/internal/service/message/service_test.go +++ b/services/activity-service/internal/service/message/service_test.go @@ -42,9 +42,31 @@ func TestInboxMessageLifecycleUsesMySQLFacts(t *testing.T) { MessageType: messagedomain.SectionActivity, Title: "活动奖励到账", Summary: "你的活动奖励已发放。", - ActionType: "activity_detail", - ActionParam: "activity_id=act_01", - SentAtMS: 1_800_000_000_100, + Actions: []messagedomain.InboxAction{ + { + Action: "dismiss", + Label: "Dismiss", + Style: "secondary", + API: messagedomain.InboxActionAPI{ + Method: "POST", + Path: "/api/v1/activities/act_01/dismiss", + Body: map[string]any{"source": "inbox"}, + }, + }, + { + Action: "join", + Label: "Join now", + Style: "primary", + API: messagedomain.InboxActionAPI{ + Method: "POST", + Path: "/api/v1/activities/act_01/join", + Body: map[string]any{"campaign_id": "act_01"}, + }, + }, + }, + ActionType: "activity_detail", + ActionParam: "activity_id=act_01", + SentAtMS: 1_800_000_000_100, }) if err != nil || !created { t.Fatalf("CreateInboxMessage activity failed: created=%v message=%+v err=%v", created, second, err) @@ -192,11 +214,31 @@ func TestNoticeHelpersCreateInboxAndFanoutPayloads(t *testing.T) { AggregateID: "act_01", Title: "活动奖励到账", Summary: "你的活动奖励已发放。", - ActionType: "activity_detail", - ActionParam: "activity_id=act_01", - Metadata: map[string]any{"activity_id": "act_01"}, + Actions: []messagedomain.InboxAction{ + { + Action: "dismiss", + Label: "Dismiss", + Style: "secondary", + API: messagedomain.InboxActionAPI{ + Method: "POST", + Path: "/api/v1/activities/act_01/dismiss", + }, + }, + { + Action: "join", + Label: "Join now", + Style: "primary", + API: messagedomain.InboxActionAPI{ + Method: "POST", + Path: "/api/v1/activities/act_01/join", + }, + }, + }, + ActionType: "activity_detail", + ActionParam: "activity_id=act_01", + Metadata: map[string]any{"activity_id": "act_01"}, }) - if err != nil || !notice.Created || notice.Message.MessageType != messagedomain.SectionActivity || notice.Message.Producer != "activity-service" { + if err != nil || !notice.Created || notice.Message.MessageType != messagedomain.SectionActivity || notice.Message.Producer != "activity-service" || len(notice.Message.Actions) != 2 || notice.Message.Actions[1].Label != "Join now" { t.Fatalf("CreateActivityNotice failed: notice=%+v err=%v", notice, err) } diff --git a/services/activity-service/internal/transport/grpc/message_server.go b/services/activity-service/internal/transport/grpc/message_server.go index 48f6bb46..f92fd3e0 100644 --- a/services/activity-service/internal/transport/grpc/message_server.go +++ b/services/activity-service/internal/transport/grpc/message_server.go @@ -2,6 +2,7 @@ package grpc import ( "context" + "encoding/json" "strings" activityv1 "hyapp.local/api/proto/activity/v1" @@ -82,6 +83,10 @@ func (s *MessageServer) DeleteInboxMessage(ctx context.Context, req *activityv1. func (s *MessageServer) CreateInboxMessage(ctx context.Context, req *activityv1.CreateInboxMessageRequest) (*activityv1.CreateInboxMessageResponse, error) { ctx = appcode.WithContext(ctx, req.GetMeta().GetAppCode()) + actions, err := inboxActionsFromProto(req.GetActions()) + if err != nil { + return nil, xerr.ToGRPCError(xerr.New(xerr.InvalidArgument, "actions JSON is invalid")) + } message, created, err := s.svc.CreateInboxMessage(ctx, messagedomain.CreateInput{ TargetUserID: req.GetTargetUserId(), Producer: req.GetProducer(), @@ -99,6 +104,7 @@ func (s *MessageServer) CreateInboxMessage(ctx context.Context, req *activityv1. ImageURL: req.GetImageUrl(), ImageURLs: req.GetImageUrls(), RewardItems: inboxRewardItemsFromProto(req.GetRewardItems()), + Actions: actions, ActionType: req.GetActionType(), ActionParam: req.GetActionParam(), Priority: req.GetPriority(), @@ -144,6 +150,7 @@ func inboxMessageProto(message messagedomain.InboxMessage) *activityv1.InboxMess ImageUrl: message.ImageURL, ImageUrls: imageURLs, RewardItems: inboxRewardItemsToProto(message.RewardItems), + Actions: inboxActionsToProto(message.Actions), ActionType: message.ActionType, ActionParam: message.ActionParam, Read: message.Read(), @@ -151,6 +158,69 @@ func inboxMessageProto(message messagedomain.InboxMessage) *activityv1.InboxMess } } +func inboxActionsFromProto(items []*activityv1.InboxAction) ([]messagedomain.InboxAction, error) { + result := make([]messagedomain.InboxAction, 0, len(items)) + for _, item := range items { + if item == nil { + continue + } + query := map[string]any{} + if raw := strings.TrimSpace(item.GetApi().GetQueryJson()); raw != "" { + if err := json.Unmarshal([]byte(raw), &query); err != nil { + return nil, err + } + } + var body any + if raw := strings.TrimSpace(item.GetApi().GetBodyJson()); raw != "" { + if err := json.Unmarshal([]byte(raw), &body); err != nil { + return nil, err + } + } + result = append(result, messagedomain.InboxAction{ + Action: item.GetAction(), + Label: item.GetLabel(), + Style: item.GetStyle(), + API: messagedomain.InboxActionAPI{ + Method: item.GetApi().GetMethod(), + Path: item.GetApi().GetPath(), + Query: query, + Body: body, + }, + }) + } + return result, nil +} + +func inboxActionsToProto(items []messagedomain.InboxAction) []*activityv1.InboxAction { + result := make([]*activityv1.InboxAction, 0, len(items)) + for _, item := range items { + queryJSON := "" + if len(item.API.Query) > 0 { + if encoded, err := json.Marshal(item.API.Query); err == nil { + queryJSON = string(encoded) + } + } + bodyJSON := "" + if item.API.Body != nil { + if encoded, err := json.Marshal(item.API.Body); err == nil { + bodyJSON = string(encoded) + } + } + result = append(result, &activityv1.InboxAction{ + Action: item.Action, + Label: item.Label, + Style: item.Style, + Api: &activityv1.InboxActionAPI{ + Method: item.API.Method, + Path: item.API.Path, + QueryJson: queryJSON, + BodyJson: bodyJSON, + }, + }) + } + return result +} + func inboxRewardItemsFromProto(items []*activityv1.InboxRewardItem) []messagedomain.RewardItem { result := make([]messagedomain.RewardItem, 0, len(items)) for _, item := range items { diff --git a/services/gateway-service/internal/transport/http/messageapi/message_handler.go b/services/gateway-service/internal/transport/http/messageapi/message_handler.go index f5cb09d9..bc4fa1e0 100644 --- a/services/gateway-service/internal/transport/http/messageapi/message_handler.go +++ b/services/gateway-service/internal/transport/http/messageapi/message_handler.go @@ -1,6 +1,7 @@ package messageapi import ( + "encoding/json" "net/http" "strconv" "strings" @@ -29,12 +30,27 @@ type inboxMessageData struct { ImageURL string `json:"image_url"` ImageURLs []string `json:"image_urls"` RewardItems []inboxRewardItemData `json:"reward_items"` + Actions []inboxActionData `json:"actions"` ActionType string `json:"action_type"` ActionParam string `json:"action_param"` Read bool `json:"read"` SentAtMS int64 `json:"sent_at_ms"` } +type inboxActionData struct { + Action string `json:"action"` + Label string `json:"label"` + Style string `json:"style"` + API inboxActionAPIData `json:"api"` +} + +type inboxActionAPIData struct { + Method string `json:"method"` + Path string `json:"path"` + Query map[string]any `json:"query,omitempty"` + Body any `json:"body,omitempty"` +} + type inboxRewardItemData struct { RewardType string `json:"reward_type"` Name string `json:"name"` @@ -130,6 +146,23 @@ func (h *Handler) listInboxMessages(writer http.ResponseWriter, request *http.Re DurationDays: reward.GetDurationDays(), }) } + actions := make([]inboxActionData, 0, len(item.GetActions())) + for _, action := range item.GetActions() { + if action == nil || action.GetApi() == nil { + continue + } + actions = append(actions, inboxActionData{ + Action: action.GetAction(), + Label: action.GetLabel(), + Style: action.GetStyle(), + API: inboxActionAPIData{ + Method: action.GetApi().GetMethod(), + Path: action.GetApi().GetPath(), + Query: inboxActionJSONMap(action.GetApi().GetQueryJson()), + Body: inboxActionJSONValue(action.GetApi().GetBodyJson()), + }, + }) + } items = append(items, inboxMessageData{ MessageID: item.GetMessageId(), Title: item.GetTitle(), @@ -139,6 +172,7 @@ func (h *Handler) listInboxMessages(writer http.ResponseWriter, request *http.Re ImageURL: item.GetImageUrl(), ImageURLs: item.GetImageUrls(), RewardItems: rewardItems, + Actions: actions, ActionType: item.GetActionType(), ActionParam: item.GetActionParam(), Read: item.GetRead(), @@ -148,6 +182,28 @@ func (h *Handler) listInboxMessages(writer http.ResponseWriter, request *http.Re httpkit.WriteOK(writer, request, map[string]any{"section": resp.GetSection(), "items": items, "next_page_token": resp.GetNextPageToken()}) } +func inboxActionJSONMap(raw string) map[string]any { + result := map[string]any{} + if strings.TrimSpace(raw) == "" { + return result + } + if err := json.Unmarshal([]byte(raw), &result); err != nil { + return map[string]any{} + } + return result +} + +func inboxActionJSONValue(raw string) any { + if strings.TrimSpace(raw) == "" { + return nil + } + var result any + if err := json.Unmarshal([]byte(raw), &result); err != nil { + return nil + } + return result +} + // markInboxSectionRead marks all current visible unread messages in one backend-owned section. func (h *Handler) markInboxSectionRead(writer http.ResponseWriter, request *http.Request) { if h.messageClient == nil { diff --git a/services/gateway-service/internal/transport/http/response_test.go b/services/gateway-service/internal/transport/http/response_test.go index dbf9640c..68817aae 100644 --- a/services/gateway-service/internal/transport/http/response_test.go +++ b/services/gateway-service/internal/transport/http/response_test.go @@ -8441,9 +8441,19 @@ func TestMessageTabsAndInboxRoutesUseAuthenticatedUser(t *testing.T) { }}, listResp: &activityv1.ListInboxMessagesResponse{ Section: "system", Items: []*activityv1.InboxMessage{{ - MessageId: "msg-1", - Title: "提现审核通过", - Summary: "你的提现申请已通过。", + MessageId: "msg-1", + Title: "提现审核通过", + Summary: "你的提现申请已通过。", + Actions: []*activityv1.InboxAction{{ + Action: "claim", + Label: "Claim", + Style: "primary", + Api: &activityv1.InboxActionAPI{ + Method: "POST", + Path: "/api/v1/rewards/reward_01/claim", + BodyJson: `{"command_id":"claim_reward_01"}`, + }, + }}, ActionType: "wallet_withdraw_detail", ActionParam: "withdrawal_id=wd_01", SentAtMs: 1777996800000, @@ -8485,6 +8495,24 @@ func TestMessageTabsAndInboxRoutesUseAuthenticatedUser(t *testing.T) { if response.Code != httpkit.CodeOK || !ok || data["section"] != "system" || data["next_page_token"] != "cursor-2" { t.Fatalf("message list envelope mismatch: %+v", response) } + items, ok := data["items"].([]any) + if !ok || len(items) != 1 { + t.Fatalf("message list items mismatch: %+v", data["items"]) + } + item, ok := items[0].(map[string]any) + if !ok { + t.Fatalf("message list item type mismatch: %+v", items[0]) + } + actions, ok := item["actions"].([]any) + if !ok || len(actions) != 1 { + t.Fatalf("message actions mismatch: %+v", item["actions"]) + } + action, ok := actions[0].(map[string]any) + api, apiOK := action["api"].(map[string]any) + body, bodyOK := api["body"].(map[string]any) + if !ok || !apiOK || !bodyOK || action["label"] != "Claim" || api["method"] != "POST" || api["path"] != "/api/v1/rewards/reward_01/claim" || body["command_id"] != "claim_reward_01" { + t.Fatalf("message action response mismatch: %+v", action) + } } func TestTaskTabsAndClaimRoutesUseAuthenticatedUser(t *testing.T) {