@smartico/public-api 0.0.380 → 0.0.381
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +103 -0
- package/README.md +32 -10
- package/dist/Base/ClassId.d.ts +2 -0
- package/dist/Jackpots/JackpotDetails.d.ts +14 -15
- package/dist/Jackpots/JackpotPot.d.ts +10 -6
- package/dist/Raffle/GetRaffleWonPrizesRequest.d.ts +9 -0
- package/dist/Raffle/GetRaffleWonPrizesResponse.d.ts +52 -0
- package/dist/Raffle/index.d.ts +2 -0
- package/dist/SmarticoAPI.d.ts +6 -1
- package/dist/SmarticoLib/index.d.ts +5 -1
- package/dist/WSAPI/WSAPIAvatars.d.ts +267 -49
- package/dist/WSAPI/WSAPIBonuses.d.ts +224 -10
- package/dist/WSAPI/WSAPIGamePick.d.ts +538 -253
- package/dist/WSAPI/WSAPIGeneral.d.ts +156 -14
- package/dist/WSAPI/WSAPIInbox.d.ts +547 -58
- package/dist/WSAPI/WSAPIJackpots.d.ts +292 -57
- package/dist/WSAPI/WSAPILeaderBoard.d.ts +127 -13
- package/dist/WSAPI/WSAPIMiniGames.d.ts +465 -49
- package/dist/WSAPI/WSAPIRaffles.d.ts +576 -52
- package/dist/WSAPI/WSAPITournaments.d.ts +3 -3
- package/dist/WSAPI/WSAPITypes.d.ts +243 -132
- package/dist/WSAPI/WSAPIUser.d.ts +193 -43
- package/dist/index.js +3409 -615
- package/dist/index.js.map +1 -1
- package/dist/index.modern.mjs +3391 -608
- package/dist/index.modern.mjs.map +1 -1
- package/docs/Callbacks.md +162 -0
- package/docs/SmarticoObject.md +445 -0
- package/docs/Transforms.md +99 -0
- package/docs/api/README.md +26 -0
- package/docs/api/classes/WSAPIAvatars.md +282 -54
- package/docs/api/classes/WSAPIBonuses.md +233 -12
- package/docs/api/classes/WSAPIClans.md +380 -10
- package/docs/api/classes/WSAPIGamePick.md +555 -26
- package/docs/api/classes/WSAPIGeneral.md +165 -16
- package/docs/api/classes/WSAPIInbox.md +588 -64
- package/docs/api/classes/WSAPIJackpots.md +320 -66
- package/docs/api/classes/WSAPILeaderBoard.md +133 -15
- package/docs/api/classes/WSAPIMiniGames.md +501 -64
- package/docs/api/classes/WSAPIMissions.md +58 -79
- package/docs/api/classes/WSAPIRaffles.md +647 -69
- package/docs/api/classes/WSAPIStore.md +83 -108
- package/docs/api/classes/WSAPITournaments.md +495 -28
- package/docs/api/classes/WSAPIUser.md +520 -83
- package/docs/api/documents/Callbacks.md +162 -0
- package/docs/api/documents/SmarticoObject.md +445 -0
- package/docs/api/documents/Transforms.md +99 -0
- package/docs/api/enumerations/BonusStatus-1.md +11 -6
- package/docs/api/enumerations/JoinClanErrorCode.md +81 -0
- package/docs/api/enumerations/TournamentRegistrationError.md +12 -0
- package/docs/api/functions/clanTournamentPlayersTransform.md +13 -0
- package/docs/api/interfaces/AvatarCustomized.md +25 -0
- package/docs/api/interfaces/AvatarDefinition.md +94 -0
- package/docs/api/interfaces/AvatarPrompt.md +45 -0
- package/docs/api/interfaces/BonusMetaMap-1.md +4 -1
- package/docs/api/interfaces/BonusTemplateMetaMap-1.md +9 -4
- package/docs/api/interfaces/Clan.md +4 -0
- package/docs/api/interfaces/ClanInfo.md +109 -0
- package/docs/api/interfaces/ClanMember.md +53 -0
- package/docs/api/interfaces/ClanTournamentPlayerRaw.md +67 -0
- package/docs/api/interfaces/GemsDiamondsLog.md +43 -0
- package/docs/api/interfaces/GetClanInfoResponse.md +61 -0
- package/docs/api/interfaces/GetClanTournamentPlayersResponse.md +81 -0
- package/docs/api/interfaces/GetRaffleWonPrizesRequest.md +59 -0
- package/docs/api/interfaces/GetRaffleWonPrizesResponse.md +95 -0
- package/docs/api/interfaces/InboxMarkMessageAction.md +10 -2
- package/docs/api/interfaces/JackpotDetails.md +14 -15
- package/docs/api/interfaces/JackpotPot.md +9 -6
- package/docs/api/interfaces/LeaderBoardDetailsT.md +14 -8
- package/docs/api/interfaces/LeaderBoardUserT.md +8 -5
- package/docs/api/interfaces/LeaderBoardsRewardsT.md +7 -0
- package/docs/api/interfaces/PointsLog.md +43 -0
- package/docs/api/interfaces/RaffleWonPrize.md +59 -0
- package/docs/api/interfaces/RaffleWonPrizePublicMeta.md +27 -0
- package/docs/api/interfaces/RaffleWonPrizeUser.md +43 -0
- package/docs/api/interfaces/TAchCategory.md +2 -7
- package/docs/api/interfaces/TAvatarCustomized.md +4 -4
- package/docs/api/interfaces/TAvatarDefinition.md +13 -14
- package/docs/api/interfaces/TAvatarPrompt.md +6 -6
- package/docs/api/interfaces/TBonus.md +16 -8
- package/docs/api/interfaces/TBuyStoreItemResult.md +4 -29
- package/docs/api/interfaces/TClaimBonusResult.md +5 -5
- package/docs/api/interfaces/TClan.md +8 -4
- package/docs/api/interfaces/TClanInfo.md +47 -0
- package/docs/api/interfaces/TClanJoinResult.md +11 -1
- package/docs/api/interfaces/TClanTournamentPlayer.md +55 -0
- package/docs/api/interfaces/TClanTournamentPlayersResult.md +27 -0
- package/docs/api/interfaces/TClans.md +3 -1
- package/docs/api/interfaces/TGetTranslations.md +4 -0
- package/docs/api/interfaces/TInboxMessage.md +14 -6
- package/docs/api/interfaces/TInboxMessageBody.md +18 -12
- package/docs/api/interfaces/TLevel.md +17 -20
- package/docs/api/interfaces/TLevelCurrent.md +19 -18
- package/docs/api/interfaces/TMiniGamePlayBatchResult.md +14 -6
- package/docs/api/interfaces/TMiniGamePlayResult.md +9 -4
- package/docs/api/interfaces/TMissionClaimRewardResult.md +1 -9
- package/docs/api/interfaces/TMissionOptInResult.md +1 -5
- package/docs/api/interfaces/TMissionOrBadge.md +4 -7
- package/docs/api/interfaces/TRaffleOptinResponse.md +4 -2
- package/docs/api/interfaces/TSegmentCheckResult.md +10 -0
- package/docs/api/interfaces/TSetAvatarResult.md +3 -3
- package/docs/api/interfaces/TStoreItem.md +3 -13
- package/docs/api/interfaces/TTournament.md +1 -1
- package/docs/api/interfaces/TTournamentDetailed.md +1 -1
- package/docs/api/interfaces/TTournamentRegistrationResult.md +4 -2
- package/docs/api/interfaces/TUICustomSection.md +23 -19
- package/docs/api/interfaces/TUserProfile.md +18 -16
- package/docs/api/interfaces/TransformedRaffleClaimPrizeResponse.md +6 -2
- package/docs/api/interfaces/UserLevelExtraCountersT.md +9 -2
- package/docs/api/type-aliases/ActivityLogEntry.md +3 -0
- package/docs/native/ADDING_METHODS.md +7 -2
- package/docs/native/PROTOCOL.md +337 -0
- package/docs/ui/avatars/UIGuide_getAvatarPrompts.md +100 -0
- package/docs/ui/avatars/UIGuide_getAvatarsCustomized.md +90 -0
- package/docs/ui/avatars/UIGuide_getAvatarsList.md +105 -0
- package/docs/ui/avatars/UIGuide_setAvatar.md +118 -0
- package/docs/ui/bonuses/UIGuide_claimBonus.md +144 -0
- package/docs/ui/bonuses/UIGuide_getBonuses.md +176 -0
- package/docs/ui/gamepick/UIGuide_gamePickGetActiveRound.md +99 -0
- package/docs/ui/gamepick/UIGuide_gamePickGetActiveRounds.md +76 -0
- package/docs/ui/gamepick/UIGuide_gamePickGetBoard.md +81 -0
- package/docs/ui/gamepick/UIGuide_gamePickGetGameInfo.md +78 -0
- package/docs/ui/gamepick/UIGuide_gamePickGetHistory.md +55 -0
- package/docs/ui/gamepick/UIGuide_gamePickGetRoundInfoForUser.md +71 -0
- package/docs/ui/gamepick/UIGuide_gamePickGetUserInfo.md +64 -0
- package/docs/ui/gamepick/UIGuide_gamePickSubmitSelection.md +103 -0
- package/docs/ui/gamepick/UIGuide_gamePickSubmitSelectionQuiz.md +67 -0
- package/docs/ui/general/UIGuide_getCustomSections.md +137 -0
- package/docs/ui/general/UIGuide_getRelatedItemsForGame.md +140 -0
- package/docs/ui/inbox/UIGuide_deleteInboxMessage.md +135 -0
- package/docs/ui/inbox/UIGuide_getInboxMessageBody.md +133 -0
- package/docs/ui/inbox/UIGuide_getInboxMessages.md +186 -0
- package/docs/ui/inbox/UIGuide_markInboxMessageAsRead.md +122 -0
- package/docs/ui/inbox/UIGuide_markUnmarkInboxMessageAsFavorite.md +84 -0
- package/docs/ui/jackpots/UIGuide_getJackpotEligibleGames.md +73 -0
- package/docs/ui/jackpots/UIGuide_getJackpotWinners.md +83 -0
- package/docs/ui/jackpots/UIGuide_jackpotGet.md +138 -0
- package/docs/ui/jackpots/UIGuide_jackpotOptIn.md +85 -0
- package/docs/ui/jackpots/UIGuide_jackpotOptOut.md +65 -0
- package/docs/ui/leaderboard/UIGuide_getLeaderBoard.md +166 -0
- package/docs/ui/minigames/UIGuide_getMiniGames.md +153 -0
- package/docs/ui/minigames/UIGuide_getMiniGamesHistory.md +90 -0
- package/docs/ui/minigames/UIGuide_playMiniGame.md +150 -0
- package/docs/ui/minigames/UIGuide_playMiniGameBatch.md +128 -0
- package/docs/ui/raffles/UIGuide_claimRafflePrize.md +99 -0
- package/docs/ui/raffles/UIGuide_getRaffleDrawRun.md +117 -0
- package/docs/ui/raffles/UIGuide_getRaffleDrawRunsHistory.md +92 -0
- package/docs/ui/raffles/UIGuide_getRaffleWonPrizes.md +120 -0
- package/docs/ui/raffles/UIGuide_getRaffles.md +175 -0
- package/docs/ui/raffles/UIGuide_requestRaffleOptin.md +114 -0
- package/docs/ui/user/UIGuide_getActivityLog.md +130 -0
- package/docs/ui/user/UIGuide_getLevels.md +47 -42
- package/package.json +1 -1
- package/src/Base/ClassId.ts +2 -0
- package/src/Jackpots/JackpotDetails.ts +14 -15
- package/src/Jackpots/JackpotPot.ts +10 -6
- package/src/Raffle/GetRaffleWonPrizesRequest.ts +12 -0
- package/src/Raffle/GetRaffleWonPrizesResponse.ts +56 -0
- package/src/Raffle/index.ts +3 -1
- package/src/SmarticoAPI.ts +14 -1
- package/src/SmarticoLib/index.ts +4 -0
- package/src/WSAPI/WSAPIAvatars.ts +267 -49
- package/src/WSAPI/WSAPIBonuses.ts +224 -10
- package/src/WSAPI/WSAPIGamePick.ts +538 -253
- package/src/WSAPI/WSAPIGeneral.ts +156 -14
- package/src/WSAPI/WSAPIInbox.ts +545 -56
- package/src/WSAPI/WSAPIJackpots.ts +297 -61
- package/src/WSAPI/WSAPILeaderBoard.ts +127 -13
- package/src/WSAPI/WSAPIMiniGames.ts +465 -49
- package/src/WSAPI/WSAPIRaffles.ts +592 -64
- package/src/WSAPI/WSAPITournaments.ts +3 -3
- package/src/WSAPI/WSAPITypes.ts +243 -132
- package/src/WSAPI/WSAPIUser.ts +193 -43
- package/tsconfig.json +9 -1
|
@@ -52,90 +52,70 @@ affordability state of the Buy button — the SDK does not pre-compute
|
|
|
52
52
|
affordability into `can_buy`.
|
|
53
53
|
|
|
54
54
|
**Subscription model (`onUpdate`)**
|
|
55
|
-
The callback
|
|
56
|
-
catalog — never a diff/patch — after any `buyStoreItem(...)` call
|
|
57
|
-
resolves on this connection (regardless of `err_code`). It is the ONLY
|
|
58
|
-
trigger for the store catalog. Side effects covered:
|
|
59
|
-
- Pool decrement on the item the user just bought.
|
|
60
|
-
- `purchased_today` / `purchased_this_week` / `purchased_this_month`
|
|
61
|
-
flag flips (these appear only in the purchase-history list, but the
|
|
62
|
-
underlying `can_buy` field on the main catalog re-evaluates against
|
|
63
|
-
the operator's "max bought" rules after every purchase).
|
|
64
|
-
- `can_buy === false` after a per-period purchase cap is hit.
|
|
65
|
-
|
|
55
|
+
The callback receives the FULL refreshed catalog (never a diff/patch).
|
|
66
56
|
Each subsequent call to `getStoreItems({ onUpdate })` REPLACES the prior
|
|
67
|
-
callback —
|
|
57
|
+
callback — only one active subscriber at a time. Pass
|
|
68
58
|
`onUpdate: undefined` (or omit it) to keep the prior callback in place;
|
|
69
59
|
the callback is never auto-cleared.
|
|
70
60
|
|
|
71
|
-
**
|
|
61
|
+
**Update triggers**
|
|
62
|
+
|
|
63
|
+
Fires after: any `buyStoreItem(...)` call resolves on this connection
|
|
64
|
+
(success OR failure). This is the ONLY trigger. The refreshed array
|
|
65
|
+
reflects pool decrement on the just-bought item, per-period purchase
|
|
66
|
+
cap re-evaluation on `can_buy`, and any `purchased_today` /
|
|
67
|
+
`purchased_this_week` / `purchased_this_month` flips visible via
|
|
68
|
+
[getStorePurchasedItems](#getstorepurchaseditems).
|
|
69
|
+
|
|
70
|
+
Does NOT fire for:
|
|
72
71
|
- Operator-side BO catalog edits (price, ribbons, pool seed, segment
|
|
73
|
-
conditions, new/removed items)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
-
|
|
79
|
-
|
|
80
|
-
the
|
|
81
|
-
tracked balance source (e.g. the user's gamification profile,
|
|
82
|
-
updated independently of this catalog).
|
|
83
|
-
- Items going past their `active_till_date` while the page is open do
|
|
84
|
-
NOT push — the item will simply disappear on the next refresh.
|
|
72
|
+
conditions, new/removed items) — surface only on the next cache miss.
|
|
73
|
+
- Concurrent purchases by OTHER users — the current user's view of
|
|
74
|
+
`pool` may be stale until they themselves refresh.
|
|
75
|
+
- User balance changes from gameplay — the catalog is independent of
|
|
76
|
+
balance; the consumer drives Buy-button affordability from a
|
|
77
|
+
separately-tracked balance source.
|
|
78
|
+
- Items going past their `active_till_date` while the page is open —
|
|
79
|
+
the item simply disappears on the next refresh.
|
|
85
80
|
|
|
86
81
|
**Server-side filtering** (what's already excluded before the SDK sees it)
|
|
87
|
-
- Items outside the `[active_from_date, active_till_date]` window —
|
|
88
|
-
the till-date, items are ALWAYS filtered out server-side.
|
|
89
|
-
- Items the user fails visibility-segment / visibility-condition
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
- Items outside the `[active_from_date, active_till_date]` window —
|
|
83
|
+
past the till-date, items are ALWAYS filtered out server-side.
|
|
84
|
+
- Items the user fails visibility-segment / visibility-condition
|
|
85
|
+
checks for.
|
|
86
|
+
- Items configured to hide-when-empty whose pool has reached 0
|
|
87
|
+
(per-item operator flag). Items without that flag are still returned
|
|
88
|
+
with `pool === 0` so a "Sold out" state can be rendered.
|
|
93
89
|
- Items where the per-period bought-count cap is reached (and the
|
|
94
90
|
operator chose to hide rather than just disable).
|
|
95
91
|
|
|
96
|
-
**
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
- `
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
`'new'`, `'vip'` (built-in styling) or a custom-image URL (250×300 px).
|
|
124
|
-
- `category_ids` maps to `TStoreCategory.id` from
|
|
125
|
-
[getStoreCategories](#getstorecategories) — an item can appear in multiple categories;
|
|
126
|
-
render it as multiple cards or once per active-tab as the consumer's
|
|
127
|
-
navigation prefers.
|
|
128
|
-
- `only_in_custom_section: true` means the item should be HIDDEN from
|
|
129
|
-
the main store view and shown only inside the operator-defined
|
|
130
|
-
custom section (`custom_section_id`). The catalog still includes it —
|
|
131
|
-
filter client-side for general views.
|
|
132
|
-
- `type` distinguishes the post-purchase server effect (see "Side
|
|
133
|
-
effects" below). UI rendering of the CATALOG card is identical across
|
|
134
|
-
types — there is no built-in card variation per type.
|
|
135
|
-
- `purchase_ts`, `purchase_points_amount`, `purchased_today`,
|
|
136
|
-
`purchased_this_week`, `purchased_this_month` are populated only on
|
|
137
|
-
rows returned from [getStorePurchasedItems](#getstorepurchaseditems) (purchase history),
|
|
138
|
-
NOT on rows from `getStoreItems`.
|
|
92
|
+
**Reading state from the returned item**
|
|
93
|
+
The catalog row carries everything a Buy button needs except the user's
|
|
94
|
+
balance: `can_buy` already reflects segment / visibility / per-period
|
|
95
|
+
cap checks, but the SDK does NOT pre-compute balance affordability —
|
|
96
|
+
compare `discounted_price ?? price` against the user's balance for
|
|
97
|
+
`purchase_type` (`ach_points_balance` / `ach_gems_balance` /
|
|
98
|
+
`ach_diamonds_balance` from [getUserProfile](WSAPIUser.md#getuserprofile)). `purchase_type` is
|
|
99
|
+
per-item (`'points'` / `'gems'` / `'diamonds'`); operators can mix
|
|
100
|
+
currencies within a single catalog. For sold-out display, `pool === 0`
|
|
101
|
+
means the operator chose to keep the item visible — render an "Out of
|
|
102
|
+
stock" overlay. When `discounted_price` is set, render `price` with a
|
|
103
|
+
strikethrough and `discounted_price` as the active price; the
|
|
104
|
+
accompanying `discount_price_ribbon` is either a percentage preset
|
|
105
|
+
(`'10'`, `'15'`, `'20'`, `'25'`, `'50'`) or the literal `'custom'`
|
|
106
|
+
(in which case `custom_ribbon_image` is the artwork at 250×300 px).
|
|
107
|
+
A live countdown for time-limited items is rendered only when the
|
|
108
|
+
operator has enabled the per-item `show_timer` flag.
|
|
109
|
+
|
|
110
|
+
**Cross-references**
|
|
111
|
+
`category_ids` joins to `TStoreCategory.id` from
|
|
112
|
+
[getStoreCategories](#getstorecategories) (many-to-many — an item can belong to
|
|
113
|
+
multiple categories). Items with `only_in_custom_section: true` are
|
|
114
|
+
returned in the catalog but intended for their custom-section view
|
|
115
|
+
only — filter them client-side for the main store view. The
|
|
116
|
+
history-only fields (`purchase_ts`, `purchase_points_amount`, the
|
|
117
|
+
`purchased_*` booleans) are populated only by
|
|
118
|
+
[getStorePurchasedItems](#getstorepurchaseditems), not by this method.
|
|
139
119
|
|
|
140
120
|
**Idempotency**: yes. `getStoreItems` is a pure read. Calling it
|
|
141
121
|
repeatedly within the 30-second cache window resolves from the cache
|
|
@@ -622,40 +602,35 @@ Promise resolving to an array of `TStoreItem` history entries
|
|
|
622
602
|
- History rows render identically across types — there is no deep-link to
|
|
623
603
|
the bonus wallet or re-claim affordance on the row itself.
|
|
624
604
|
|
|
625
|
-
**
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
item, useful only if you render a "Buy Again" affordance on the history
|
|
655
|
-
row (see UI guidance below).
|
|
656
|
-
- `custom_data` — present, but unlike `getStoreItems` the history
|
|
657
|
-
transform does NOT auto-parse JSON strings. If you store JSON there,
|
|
658
|
-
call `JSON.parse()` yourself.
|
|
605
|
+
**Per-row data**
|
|
606
|
+
Each row uses the `TStoreItem` shape but populates four history-only
|
|
607
|
+
fields not present on `getStoreItems` output. `purchase_ts` is the
|
|
608
|
+
Unix-ms timestamp of the purchase — format with
|
|
609
|
+
`new Date(purchase_ts).toLocaleString()` in the user's local timezone;
|
|
610
|
+
no relative labels ("Today" / "Yesterday") are produced by the SDK.
|
|
611
|
+
`purchase_points_amount` is the amount actually paid at the time of
|
|
612
|
+
purchase — a snapshot of the historical price, which may differ from
|
|
613
|
+
the item's current `price`. `purchase_type` is the currency actually
|
|
614
|
+
charged (`'points' | 'gems' | 'diamonds'`); render the matching
|
|
615
|
+
balance icon next to the amount. The convenience booleans
|
|
616
|
+
`purchased_today` / `purchased_this_week` / `purchased_this_month` are
|
|
617
|
+
computed client-side from the consumer's local clock — useful for
|
|
618
|
+
grouping rows under "Today" / "This Week" headers.
|
|
619
|
+
|
|
620
|
+
**Catalog fields on a history row**
|
|
621
|
+
The promotional fields (`ribbon`, `discounted_price`,
|
|
622
|
+
`discount_price_ribbon`, `custom_ribbon_image`, `active_till_date`)
|
|
623
|
+
reflect the CURRENT catalog state of the item, NOT its state at
|
|
624
|
+
purchase time — the default Smartico UI hides them on history rows to
|
|
625
|
+
avoid implying that the historical purchase carried the current
|
|
626
|
+
promotional banner. Descriptive marketing fields (`description`,
|
|
627
|
+
`hint_text`, `related_games`) are typically suppressed on a compact
|
|
628
|
+
history row. The current-purchasability fields `can_buy` and `pool`
|
|
629
|
+
reflect now, not then — useful only if you render a "Buy Again"
|
|
630
|
+
affordance on the row. One implementation gotcha: unlike
|
|
631
|
+
`getStoreItems`, this method's transform does NOT auto-parse JSON
|
|
632
|
+
strings in `custom_data` — call `JSON.parse()` yourself if you store
|
|
633
|
+
JSON there.
|
|
659
634
|
|
|
660
635
|
**Cache & refresh**
|
|
661
636
|
- The SDK caches each `(limit, offset)` page separately for 30 seconds.
|