Master Data Reference of GS2-LoginReward
Reference of the format of master data and various models to be imported
{
"version": "2023-07-11",
"bonusModels": [
{
"name": "[string]Bonus Model Name",
"metadata": "[string?]Metadata",
"mode": "[string]mode",
"periodEventId": "[string?]GS2-Schedule Event GRN that represents the period during which to enable login bonuses",
"resetHour": "[int]Reset time of the receive flag (UTC)",
"repeat": "[string]Whether to repeat after reaching the end",
"rewards": [
{
"acquireActions": [
{
"action": "[string]Types of actions to be performed in the acquire action",
"request": "[string]JSON of request"
}
]
}
],
"missedReceiveRelief": "[string]Missed Rescue Function",
"missedReceiveReliefVerifyActions": [
{
"action": "[string]Types of actions to be performed in the verify task",
"request": "[string]JSON of request"
}
],
"missedReceiveReliefConsumeActions": [
{
"action": "[string]Types of actions to be performed in the consume action",
"request": "[string]JSON of request"
}
]
}
]
}
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| version | | | ✓ | 2023-07-11 | | Format version of master data |
| bonusModels | List<BonusModel> | | | | ~ 100 items | Bonus Model A bonus model defines the distribution schedule for login bonuses. There are two schedule types: 《Schedule Mode》 and 《Streaming Mode》.
In Schedule Mode, a GS2-Schedule event must be specified, and bonuses are distributed based on the number of days elapsed since the event’s start date. If the user misses a day partway through, the bonus for that day will not be granted.
In Streaming Mode, the rewards configured for the bonus are distributed sequentially from the beginning each day. Streaming Mode also supports repetition; when enabled, the distribution restarts from the first reward after reaching the end of the stream.
Both Schedule Mode and Streaming Mode provide a missed-bonus recovery feature. By paying a certain cost, users can receive bonuses they previously missed. However, if a GS2-Schedule event is associated, users cannot receive bonuses beyond the number of days elapsed since the event’s start date. Additionally, the recovery feature cannot be used when using Streaming Mode with repetition enabled.
In both Schedule Mode and Streaming Mode, the maximum number of days that can be configured for bonuses is 100 days. |
Reward
Reward
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| acquireActions | List<AcquireAction> | | ✓ | | 1 ~ 10 items | List of Acquire Action |
ConsumeAction
Consume Action
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| action | String Enum enum { "Gs2AdReward:ConsumePointByUserId", "Gs2Dictionary:DeleteEntriesByUserId", "Gs2Enhance:DeleteProgressByUserId", "Gs2Exchange:DeleteAwaitByUserId", "Gs2Experience:SubExperienceByUserId", "Gs2Experience:SubRankCapByUserId", "Gs2Formation:SubMoldCapacityByUserId", "Gs2Grade:SubGradeByUserId", "Gs2Guild:DecreaseMaximumCurrentMaximumMemberCountByGuildName", "Gs2Idle:DecreaseMaximumIdleMinutesByUserId", "Gs2Inbox:OpenMessageByUserId", "Gs2Inbox:DeleteMessageByUserId", "Gs2Inventory:ConsumeItemSetByUserId", "Gs2Inventory:ConsumeSimpleItemsByUserId", "Gs2Inventory:ConsumeBigItemByUserId", "Gs2JobQueue:DeleteJobByUserId", "Gs2Limit:CountUpByUserId", "Gs2LoginReward:MarkReceivedByUserId", "Gs2Mission:ReceiveByUserId", "Gs2Mission:BatchReceiveByUserId", "Gs2Mission:DecreaseCounterByUserId", "Gs2Mission:ResetCounterByUserId", "Gs2Money:WithdrawByUserId", "Gs2Money:RecordReceipt", "Gs2Money2:WithdrawByUserId", "Gs2Money2:VerifyReceiptByUserId", "Gs2Quest:DeleteProgressByUserId", "Gs2Ranking2:CreateGlobalRankingReceivedRewardByUserId", "Gs2Ranking2:CreateClusterRankingReceivedRewardByUserId", "Gs2Schedule:DeleteTriggerByUserId", "Gs2SerialKey:UseByUserId", "Gs2Showcase:IncrementPurchaseCountByUserId", "Gs2SkillTree:MarkRestrainByUserId", "Gs2Stamina:DecreaseMaxValueByUserId", "Gs2Stamina:ConsumeStaminaByUserId", }
| | ✓ | | ~ 128 chars | Types of actions to be performed in the consume action |
| request | string | | ✓ | | ~ 524288 chars | JSON of request |
AcquireAction
Acquire Action
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| action | String Enum enum { "Gs2AdReward:AcquirePointByUserId", "Gs2Dictionary:AddEntriesByUserId", "Gs2Enchant:ReDrawBalanceParameterStatusByUserId", "Gs2Enchant:SetBalanceParameterStatusByUserId", "Gs2Enchant:ReDrawRarityParameterStatusByUserId", "Gs2Enchant:AddRarityParameterStatusByUserId", "Gs2Enchant:SetRarityParameterStatusByUserId", "Gs2Enhance:DirectEnhanceByUserId", "Gs2Enhance:UnleashByUserId", "Gs2Enhance:CreateProgressByUserId", "Gs2Exchange:ExchangeByUserId", "Gs2Exchange:IncrementalExchangeByUserId", "Gs2Exchange:CreateAwaitByUserId", "Gs2Exchange:AcquireForceByUserId", "Gs2Exchange:SkipByUserId", "Gs2Experience:AddExperienceByUserId", "Gs2Experience:SetExperienceByUserId", "Gs2Experience:AddRankCapByUserId", "Gs2Experience:SetRankCapByUserId", "Gs2Experience:MultiplyAcquireActionsByUserId", "Gs2Formation:AddMoldCapacityByUserId", "Gs2Formation:SetMoldCapacityByUserId", "Gs2Formation:AcquireActionsToFormProperties", "Gs2Formation:SetFormByUserId", "Gs2Formation:AcquireActionsToPropertyFormProperties", "Gs2Friend:UpdateProfileByUserId", "Gs2Grade:AddGradeByUserId", "Gs2Grade:ApplyRankCapByUserId", "Gs2Grade:MultiplyAcquireActionsByUserId", "Gs2Guild:IncreaseMaximumCurrentMaximumMemberCountByGuildName", "Gs2Guild:SetMaximumCurrentMaximumMemberCountByGuildName", "Gs2Idle:IncreaseMaximumIdleMinutesByUserId", "Gs2Idle:SetMaximumIdleMinutesByUserId", "Gs2Idle:ReceiveByUserId", "Gs2Inbox:SendMessageByUserId", "Gs2Inventory:AddCapacityByUserId", "Gs2Inventory:SetCapacityByUserId", "Gs2Inventory:AcquireItemSetByUserId", "Gs2Inventory:AcquireItemSetWithGradeByUserId", "Gs2Inventory:AddReferenceOfByUserId", "Gs2Inventory:DeleteReferenceOfByUserId", "Gs2Inventory:AcquireSimpleItemsByUserId", "Gs2Inventory:SetSimpleItemsByUserId", "Gs2Inventory:AcquireBigItemByUserId", "Gs2Inventory:SetBigItemByUserId", "Gs2JobQueue:PushByUserId", "Gs2Limit:CountDownByUserId", "Gs2Limit:DeleteCounterByUserId", "Gs2LoginReward:DeleteReceiveStatusByUserId", "Gs2LoginReward:UnmarkReceivedByUserId", "Gs2Lottery:DrawByUserId", "Gs2Lottery:ResetBoxByUserId", "Gs2Mission:RevertReceiveByUserId", "Gs2Mission:IncreaseCounterByUserId", "Gs2Mission:SetCounterByUserId", "Gs2Money:DepositByUserId", "Gs2Money:RevertRecordReceipt", "Gs2Money2:DepositByUserId", "Gs2Quest:CreateProgressByUserId", "Gs2Schedule:TriggerByUserId", "Gs2Schedule:ExtendTriggerByUserId", "Gs2Script:InvokeScript", "Gs2SerialKey:RevertUseByUserId", "Gs2SerialKey:IssueOnce", "Gs2Showcase:DecrementPurchaseCountByUserId", "Gs2Showcase:ForceReDrawByUserId", "Gs2SkillTree:MarkReleaseByUserId", "Gs2Stamina:RecoverStaminaByUserId", "Gs2Stamina:RaiseMaxValueByUserId", "Gs2Stamina:SetMaxValueByUserId", "Gs2Stamina:SetRecoverIntervalByUserId", "Gs2Stamina:SetRecoverValueByUserId", "Gs2StateMachine:StartStateMachineByUserId", }
| | ✓ | | ~ 128 chars | Types of actions to be performed in the acquire action |
| request | string | | ✓ | | ~ 524288 chars | JSON of request |
VerifyAction
Verify Action
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| action | String Enum enum { "Gs2Dictionary:VerifyEntryByUserId", "Gs2Distributor:IfExpressionByUserId", "Gs2Distributor:AndExpressionByUserId", "Gs2Distributor:OrExpressionByUserId", "Gs2Enchant:VerifyRarityParameterStatusByUserId", "Gs2Experience:VerifyRankByUserId", "Gs2Experience:VerifyRankCapByUserId", "Gs2Grade:VerifyGradeByUserId", "Gs2Grade:VerifyGradeUpMaterialByUserId", "Gs2Guild:VerifyCurrentMaximumMemberCountByGuildName", "Gs2Guild:VerifyIncludeMemberByUserId", "Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId", "Gs2Inventory:VerifyItemSetByUserId", "Gs2Inventory:VerifyReferenceOfByUserId", "Gs2Inventory:VerifySimpleItemByUserId", "Gs2Inventory:VerifyBigItemByUserId", "Gs2Limit:VerifyCounterByUserId", "Gs2Matchmaking:VerifyIncludeParticipantByUserId", "Gs2Mission:VerifyCompleteByUserId", "Gs2Mission:VerifyCounterValueByUserId", "Gs2Ranking2:VerifyGlobalRankingScoreByUserId", "Gs2Ranking2:VerifyClusterRankingScoreByUserId", "Gs2Ranking2:VerifySubscribeRankingScoreByUserId", "Gs2Schedule:VerifyTriggerByUserId", "Gs2Schedule:VerifyEventByUserId", "Gs2SerialKey:VerifyCodeByUserId", "Gs2Stamina:VerifyStaminaValueByUserId", "Gs2Stamina:VerifyStaminaMaxValueByUserId", "Gs2Stamina:VerifyStaminaRecoverIntervalMinutesByUserId", "Gs2Stamina:VerifyStaminaRecoverValueByUserId", "Gs2Stamina:VerifyStaminaOverflowValueByUserId", }
| | ✓ | | ~ 128 chars | Types of actions to be performed in the verify task |
| request | string | | ✓ | | ~ 524288 chars | JSON of request |
VerifyActionResult
Verify action execution result
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| action | String Enum enum { "Gs2Dictionary:VerifyEntryByUserId", "Gs2Distributor:IfExpressionByUserId", "Gs2Distributor:AndExpressionByUserId", "Gs2Distributor:OrExpressionByUserId", "Gs2Enchant:VerifyRarityParameterStatusByUserId", "Gs2Experience:VerifyRankByUserId", "Gs2Experience:VerifyRankCapByUserId", "Gs2Grade:VerifyGradeByUserId", "Gs2Grade:VerifyGradeUpMaterialByUserId", "Gs2Guild:VerifyCurrentMaximumMemberCountByGuildName", "Gs2Guild:VerifyIncludeMemberByUserId", "Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId", "Gs2Inventory:VerifyItemSetByUserId", "Gs2Inventory:VerifyReferenceOfByUserId", "Gs2Inventory:VerifySimpleItemByUserId", "Gs2Inventory:VerifyBigItemByUserId", "Gs2Limit:VerifyCounterByUserId", "Gs2Matchmaking:VerifyIncludeParticipantByUserId", "Gs2Mission:VerifyCompleteByUserId", "Gs2Mission:VerifyCounterValueByUserId", "Gs2Ranking2:VerifyGlobalRankingScoreByUserId", "Gs2Ranking2:VerifyClusterRankingScoreByUserId", "Gs2Ranking2:VerifySubscribeRankingScoreByUserId", "Gs2Schedule:VerifyTriggerByUserId", "Gs2Schedule:VerifyEventByUserId", "Gs2SerialKey:VerifyCodeByUserId", "Gs2Stamina:VerifyStaminaValueByUserId", "Gs2Stamina:VerifyStaminaMaxValueByUserId", "Gs2Stamina:VerifyStaminaRecoverIntervalMinutesByUserId", "Gs2Stamina:VerifyStaminaRecoverValueByUserId", "Gs2Stamina:VerifyStaminaOverflowValueByUserId", }
| | ✓ | | ~ 128 chars | Types of actions to be performed in the verify task |
| verifyRequest | string | | ✓ | | ~ 524288 chars | JSON of request |
| statusCode | int | | | | 0 ~ 999 | Status code |
| verifyResult | string | | | | ~ 1048576 chars | Result payload |
ConsumeActionResult
Consume action execution result
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| action | String Enum enum { "Gs2AdReward:ConsumePointByUserId", "Gs2Dictionary:DeleteEntriesByUserId", "Gs2Enhance:DeleteProgressByUserId", "Gs2Exchange:DeleteAwaitByUserId", "Gs2Experience:SubExperienceByUserId", "Gs2Experience:SubRankCapByUserId", "Gs2Formation:SubMoldCapacityByUserId", "Gs2Grade:SubGradeByUserId", "Gs2Guild:DecreaseMaximumCurrentMaximumMemberCountByGuildName", "Gs2Idle:DecreaseMaximumIdleMinutesByUserId", "Gs2Inbox:OpenMessageByUserId", "Gs2Inbox:DeleteMessageByUserId", "Gs2Inventory:ConsumeItemSetByUserId", "Gs2Inventory:ConsumeSimpleItemsByUserId", "Gs2Inventory:ConsumeBigItemByUserId", "Gs2JobQueue:DeleteJobByUserId", "Gs2Limit:CountUpByUserId", "Gs2LoginReward:MarkReceivedByUserId", "Gs2Mission:ReceiveByUserId", "Gs2Mission:BatchReceiveByUserId", "Gs2Mission:DecreaseCounterByUserId", "Gs2Mission:ResetCounterByUserId", "Gs2Money:WithdrawByUserId", "Gs2Money:RecordReceipt", "Gs2Money2:WithdrawByUserId", "Gs2Money2:VerifyReceiptByUserId", "Gs2Quest:DeleteProgressByUserId", "Gs2Ranking2:CreateGlobalRankingReceivedRewardByUserId", "Gs2Ranking2:CreateClusterRankingReceivedRewardByUserId", "Gs2Schedule:DeleteTriggerByUserId", "Gs2SerialKey:UseByUserId", "Gs2Showcase:IncrementPurchaseCountByUserId", "Gs2SkillTree:MarkRestrainByUserId", "Gs2Stamina:DecreaseMaxValueByUserId", "Gs2Stamina:ConsumeStaminaByUserId", }
| | ✓ | | ~ 128 chars | Types of actions to be performed in the consume action |
| consumeRequest | string | | ✓ | | ~ 524288 chars | JSON of request |
| statusCode | int | | | | 0 ~ 999 | Status code |
| consumeResult | string | | | | ~ 1048576 chars | Result payload |
AcquireActionResult
Acquire action execution result
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| action | String Enum enum { "Gs2AdReward:AcquirePointByUserId", "Gs2Dictionary:AddEntriesByUserId", "Gs2Enchant:ReDrawBalanceParameterStatusByUserId", "Gs2Enchant:SetBalanceParameterStatusByUserId", "Gs2Enchant:ReDrawRarityParameterStatusByUserId", "Gs2Enchant:AddRarityParameterStatusByUserId", "Gs2Enchant:SetRarityParameterStatusByUserId", "Gs2Enhance:DirectEnhanceByUserId", "Gs2Enhance:UnleashByUserId", "Gs2Enhance:CreateProgressByUserId", "Gs2Exchange:ExchangeByUserId", "Gs2Exchange:IncrementalExchangeByUserId", "Gs2Exchange:CreateAwaitByUserId", "Gs2Exchange:AcquireForceByUserId", "Gs2Exchange:SkipByUserId", "Gs2Experience:AddExperienceByUserId", "Gs2Experience:SetExperienceByUserId", "Gs2Experience:AddRankCapByUserId", "Gs2Experience:SetRankCapByUserId", "Gs2Experience:MultiplyAcquireActionsByUserId", "Gs2Formation:AddMoldCapacityByUserId", "Gs2Formation:SetMoldCapacityByUserId", "Gs2Formation:AcquireActionsToFormProperties", "Gs2Formation:SetFormByUserId", "Gs2Formation:AcquireActionsToPropertyFormProperties", "Gs2Friend:UpdateProfileByUserId", "Gs2Grade:AddGradeByUserId", "Gs2Grade:ApplyRankCapByUserId", "Gs2Grade:MultiplyAcquireActionsByUserId", "Gs2Guild:IncreaseMaximumCurrentMaximumMemberCountByGuildName", "Gs2Guild:SetMaximumCurrentMaximumMemberCountByGuildName", "Gs2Idle:IncreaseMaximumIdleMinutesByUserId", "Gs2Idle:SetMaximumIdleMinutesByUserId", "Gs2Idle:ReceiveByUserId", "Gs2Inbox:SendMessageByUserId", "Gs2Inventory:AddCapacityByUserId", "Gs2Inventory:SetCapacityByUserId", "Gs2Inventory:AcquireItemSetByUserId", "Gs2Inventory:AcquireItemSetWithGradeByUserId", "Gs2Inventory:AddReferenceOfByUserId", "Gs2Inventory:DeleteReferenceOfByUserId", "Gs2Inventory:AcquireSimpleItemsByUserId", "Gs2Inventory:SetSimpleItemsByUserId", "Gs2Inventory:AcquireBigItemByUserId", "Gs2Inventory:SetBigItemByUserId", "Gs2JobQueue:PushByUserId", "Gs2Limit:CountDownByUserId", "Gs2Limit:DeleteCounterByUserId", "Gs2LoginReward:DeleteReceiveStatusByUserId", "Gs2LoginReward:UnmarkReceivedByUserId", "Gs2Lottery:DrawByUserId", "Gs2Lottery:ResetBoxByUserId", "Gs2Mission:RevertReceiveByUserId", "Gs2Mission:IncreaseCounterByUserId", "Gs2Mission:SetCounterByUserId", "Gs2Money:DepositByUserId", "Gs2Money:RevertRecordReceipt", "Gs2Money2:DepositByUserId", "Gs2Quest:CreateProgressByUserId", "Gs2Schedule:TriggerByUserId", "Gs2Schedule:ExtendTriggerByUserId", "Gs2Script:InvokeScript", "Gs2SerialKey:RevertUseByUserId", "Gs2SerialKey:IssueOnce", "Gs2Showcase:DecrementPurchaseCountByUserId", "Gs2Showcase:ForceReDrawByUserId", "Gs2SkillTree:MarkReleaseByUserId", "Gs2Stamina:RecoverStaminaByUserId", "Gs2Stamina:RaiseMaxValueByUserId", "Gs2Stamina:SetMaxValueByUserId", "Gs2Stamina:SetRecoverIntervalByUserId", "Gs2Stamina:SetRecoverValueByUserId", "Gs2StateMachine:StartStateMachineByUserId", }
| | ✓ | | ~ 128 chars | Types of actions to be performed in the acquire action |
| acquireRequest | string | | ✓ | | ~ 524288 chars | JSON of request |
| statusCode | int | | | | 0 ~ 999 | Status code |
| acquireResult | string | | | | ~ 1048576 chars | Result payload |
TransactionResult
Transaction execution results
Transaction execution results executed using server-side transaction auto-execution functionality
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| transactionId | string | | ✓ | | 36 ~ 36 chars | Transaction ID |
| verifyResults | List<VerifyActionResult> | | | | 0 ~ 10 items | List of verify action execution results |
| consumeResults | List<ConsumeActionResult> | | | [] | 0 ~ 10 items | List of consume action execution results |
| acquireResults | List<AcquireActionResult> | | | [] | 0 ~ 100 items | List of acquire action execution results |
| hasError | bool | | ✓ | false | | Whether an error occurred during transaction execution |
BonusModel
Bonus Model
A bonus model defines the distribution schedule for login bonuses.
There are two schedule types: 《Schedule Mode》 and 《Streaming Mode》.
In Schedule Mode, a GS2-Schedule event must be specified, and bonuses are distributed based on the number of days elapsed since the event’s start date.
If the user misses a day partway through, the bonus for that day will not be granted.
In Streaming Mode, the rewards configured for the bonus are distributed sequentially from the beginning each day.
Streaming Mode also supports repetition; when enabled, the distribution restarts from the first reward after reaching the end of the stream.
Both Schedule Mode and Streaming Mode provide a missed-bonus recovery feature.
By paying a certain cost, users can receive bonuses they previously missed.
However, if a GS2-Schedule event is associated, users cannot receive bonuses beyond the number of days elapsed since the event’s start date.
Additionally, the recovery feature cannot be used when using Streaming Mode with repetition enabled.
In both Schedule Mode and Streaming Mode, the maximum number of days that can be configured for bonuses is 100 days.
| Type | Condition | Required | Default | Value Limits | Description |
|---|
| bonusModelId | string | | ✓ | | ~ 1024 chars | Login Bonus Model GRN |
| name | string | | ✓ | | ~ 128 chars | Bonus Model Name |
| metadata | string | | | | ~ 2048 chars | Metadata |
| mode | String Enum enum { “schedule”, “streaming” }
| | ✓ | | ~ 128 chars | mode| Enumerator String Definition | Description |
|---|
| “schedule” | Schedule Mode | | “streaming” | Streaming Mode |
|
| periodEventId | string | | | | ~ 1024 chars | GS2-Schedule Event GRN that represents the period during which to enable login bonuses |
| resetHour | int | {periodEventId} == "" | ✓* | | 0 ~ 23 | Reset time of the receive flag (UTC)
* Enabled if periodEventId is “" |
| repeat | String Enum enum { “enabled”, “disabled” }
| {mode} == “streaming” | ✓* | | ~ 128 chars | Whether to repeat after reaching the end| Enumerator String Definition | Description |
|---|
| “enabled” | Enabled | | “disabled” | Disabled |
* Enabled if mode is “streaming” |
| rewards | List<Reward> | | | | 0 ~ 100 items | List of rewards |
| missedReceiveRelief | String Enum enum { “enabled”, “disabled” }
| | ✓ | “disabled” | ~ 128 chars | Missed Rescue Function| Enumerator String Definition | Description |
|---|
| “enabled” | Enabled | | “disabled” | Disabled |
|
| missedReceiveReliefVerifyActions | List<VerifyAction> | {missedReceiveRelief} == “enabled” | | [] | 0 ~ 10 items | List of verify actions for missed receive relief
* Enabled if missedReceiveRelief is “enabled” |
| missedReceiveReliefConsumeActions | List<ConsumeAction> | {missedReceiveRelief} == “enabled” | | [] | 0 ~ 10 items | List of consume actions for missed receive relief
* Enabled if missedReceiveRelief is “enabled” |