@smartico/public-api 0.0.421 → 0.0.422

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/README.md CHANGED
@@ -180,6 +180,17 @@ import { SmarticoAPI, WSAPI } from '@smartico/public-api';
180
180
 
181
181
  // publicApiUrl is resolved automatically by SmarticoAPI from your label key
182
182
  const messageSender = async (message: any, publicApiUrl?: string): Promise<any> => {
183
+
184
+ // if label has user hash protection enabled, calculate hash and add in the message, e.g.
185
+ const hashValidityTimestampMs = ~~(+new Date() / 1000) * 1000 + 24 * 3600 * 1000;
186
+ const userExtId = message.user_ext_id;
187
+ const saltKey = 'your_secret_salt_key_setup_on_smartico_side';
188
+ const hashValue = md5((userExtId + ':' + saltKey + ':' + hashValidityTimestampMs).toLowerCase()) +
189
+ ':' +
190
+ hashValidityTimestampMs;
191
+
192
+ message.hash = hashValue;
193
+
183
194
  const res = await fetch(publicApiUrl, {
184
195
  method: 'POST',
185
196
  headers: { 'Content-Type': 'application/json' },
@@ -229,6 +240,9 @@ You can make HTTP calls to the Smartico public endpoint to interact with user da
229
240
 
230
241
  This example checks whether a user belongs to specific segments. It corresponds to `checkSegmentListMatch` (cid: 161 / response cid: 162) described in [Native Protocol](docs/native/PROTOCOL.md).
231
242
 
243
+ Note: in case your label has user hash protection enabled, you need to calculate it using secret salt key and pass it in the data under "hash" value.
244
+ Check for more details here - https://help.smartico.ai/welcome/technical-guides/front-end-integration/extended-integration#protecting-user-identification-on-the-public-front-end
245
+
232
246
  **Request:**
233
247
 
234
248
  ```bash
@@ -205,6 +205,8 @@ export interface TMiniGameTemplate {
205
205
  activeTillDate?: number;
206
206
  /** Number of steps to complete the game and collect the prize (step games — Voyager / Treasure Hunt) */
207
207
  steps_to_finish_game?: number;
208
+ /** Minimum number of path steps / collectible prizes a session must include before the game can finish (step games — Voyager / Treasure Hunt). `>= 1` and `<= steps_to_finish_game`; when omitted, no minimum is enforced */
209
+ min_steps_to_finish_game?: number;
208
210
  /** ID of the operator-defined custom section (widget menu grouping) the mini-game is assigned to */
209
211
  custom_section_id?: number;
210
212
  /** Full raw UI definition of the mini-game (skin, colors, per-game visual settings) — see {@link SAWTemplateUI}. The commonly needed values are already lifted onto this template object */
package/dist/index.js CHANGED
@@ -516,6 +516,7 @@ var SAWTemplatesTransform = function SAWTemplatesTransform(items) {
516
516
  earliest_expiration_dt: r.earliest_expiration_dt,
517
517
  latest_expiration_dt: r.latest_expiration_dt,
518
518
  steps_to_finish_game: r.saw_template_ui_definition.steps_to_finish_game,
519
+ min_steps_to_finish_game: r.saw_template_ui_definition.min_steps_to_finish_game,
519
520
  custom_section_id: r.saw_template_ui_definition.custom_section_id,
520
521
  saw_template_ui_definition: r.saw_template_ui_definition
521
522
  }, r.saw_game_type_id === exports.SAWGameType.LootboxCalendarDays || r.saw_game_type_id === exports.SAWGameType.LootboxWeekdays ? {