@metarouter/ajs-starter-kit 1.0.66 → 1.0.68

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.
Files changed (38) hide show
  1. package/.dist/actioniq/kit.etag.json +1 -1
  2. package/.dist/actioniq/playbook.etag.json +1 -1
  3. package/.dist/actioniq/playbook.json +1 -1
  4. package/.dist/amperity/connection.etag.json +1 -0
  5. package/.dist/amperity/connection.json +38 -0
  6. package/.dist/amperity/kit.etag.json +1 -0
  7. package/.dist/amperity/metadata.json +20 -0
  8. package/.dist/amperity/playbook.etag.json +1 -0
  9. package/.dist/amperity/playbook.json +51 -0
  10. package/.dist/google-ad-words/kit.etag.json +1 -1
  11. package/.dist/google-ad-words/metadata.json +5 -1
  12. package/.dist/google-ads/connection.etag.json +1 -0
  13. package/.dist/google-ads/connection.json +72 -0
  14. package/.dist/google-ads/kit.etag.json +1 -0
  15. package/.dist/google-ads/metadata.json +20 -0
  16. package/.dist/google-ads/playbook.etag.json +1 -0
  17. package/.dist/google-ads/playbook.json +148 -0
  18. package/.dist/google-analytics-4/connection.etag.json +1 -1
  19. package/.dist/google-analytics-4/connection.json +5 -1
  20. package/.dist/google-analytics-4/kit.etag.json +1 -1
  21. package/.dist/google-analytics-4/playbook.etag.json +1 -1
  22. package/.dist/google-analytics-4/playbook.json +233 -45
  23. package/.dist/kafka/kit.etag.json +1 -1
  24. package/.dist/kafka/metadata.json +1 -1
  25. package/.dist/kochava/connection.etag.json +1 -0
  26. package/.dist/kochava/connection.json +12 -0
  27. package/.dist/kochava/kit.etag.json +1 -0
  28. package/.dist/kochava/metadata.json +20 -0
  29. package/.dist/kochava/playbook.etag.json +1 -0
  30. package/.dist/kochava/playbook.json +487 -0
  31. package/.dist/pinterest-capi/kit.etag.json +1 -1
  32. package/.dist/pinterest-capi/playbook.etag.json +1 -1
  33. package/.dist/pinterest-capi/playbook.json +179 -2
  34. package/.dist/roomvo/connection.etag.json +1 -1
  35. package/.dist/roomvo/connection.json +21 -4
  36. package/.dist/roomvo/kit.etag.json +1 -1
  37. package/index.js +24 -0
  38. package/package.json +1 -1
@@ -0,0 +1,487 @@
1
+ {
2
+ "version": "v0.0.1",
3
+ "params": [
4
+ {
5
+ "name": "KOCHAVA_APP_ID",
6
+ "exampleValue": "my-kochava-app-id"
7
+ },
8
+ {
9
+ "name": "USER_ID",
10
+ "exampleValue": "my-user-id"
11
+ }
12
+ ],
13
+ "global": {
14
+ "enrichments": [
15
+ {
16
+ "staticString": "$$KOCHAVA_APP_ID$$",
17
+ "outputKey": "kochava_app_id"
18
+ }
19
+ ],
20
+ "mappings": [
21
+ {
22
+ "inputKey": "anonymousId",
23
+ "outputKey": "kochava_device_id"
24
+ }
25
+ ]
26
+ },
27
+ "eventSpecific": {
28
+ "application_installed": {
29
+ "enrichments": [
30
+ {
31
+ "staticString": "install",
32
+ "outputKey": "action"
33
+ }
34
+ ],
35
+ "mappings": [
36
+ {
37
+ "inputKey": "context.device.adTrackingEnabled",
38
+ "outputKey": "data.app_tracking_transparency.att",
39
+ "defaultBool": false
40
+ },
41
+ {
42
+ "inputKey": "context.device.advertisingId",
43
+ "outputKey": "data.device_ids",
44
+ "transforms": [
45
+ {
46
+ "expression": {
47
+ "lang": "lua",
48
+ "body": "local deviceType = input.context.device.type\nif deviceType == 'ios' then\n return {\n idfa = input.context.device.advertisingId,\n idfv = input.context.device.id\n }\nelseif deviceType == 'android' then\n return {\n adid = input.context.device.advertisingId,\n android_id = input.context.device.id\n }\nend"
49
+ }
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ "inputKey": "context.ip",
55
+ "outputKey": "data.origination_ip"
56
+ },
57
+ {
58
+ "inputKey": "context.userAgent",
59
+ "outputKey": "data.device_ua"
60
+ },
61
+ {
62
+ "inputKey": "context.library.version",
63
+ "outputKey": "data.app_version"
64
+ },
65
+ {
66
+ "inputKey": "input",
67
+ "outputKey": "data.usertime",
68
+ "transforms": [
69
+ {
70
+ "expression": {
71
+ "lang": "lua",
72
+ "body": "return MILLISECONDS_SINCE_EPOCH(input.receivedAt)"
73
+ }
74
+ }
75
+ ]
76
+ }
77
+ ]
78
+ },
79
+ "identify": {
80
+ "enrichments": [
81
+ {
82
+ "staticString": "$$USER_ID$$",
83
+ "outputKey": "data.app_userid"
84
+ }
85
+ ],
86
+ "mappings": [
87
+ {
88
+ "inputKey": "context.device.advertisingId",
89
+ "outputKey": "device_id",
90
+ "transforms": [
91
+ {
92
+ "expression": {
93
+ "lang": "lua",
94
+ "body": "local deviceType = input.context.device.type\nif deviceType == 'ios' then\n return {\n idfa = input.context.device.advertisingId\n }\nelseif deviceType == 'android' then\n return {\n adid = input.context.device.advertisingId\n }\nend"
95
+ }
96
+ }
97
+ ]
98
+ }
99
+ ]
100
+ },
101
+ "checkout_started": {
102
+ "enrichments": [
103
+ {
104
+ "staticString": "event",
105
+ "outputKey": "action"
106
+ },
107
+ {
108
+ "staticString": "",
109
+ "outputKey": "data.device_ver"
110
+ },
111
+ {
112
+ "staticString": "Checkout Start",
113
+ "outputKey": "data.event_name"
114
+ }
115
+ ],
116
+ "mappings": [
117
+ {
118
+ "inputKey": "context.device.adTrackingEnabled",
119
+ "outputKey": "data.app_tracking_transparency.att",
120
+ "defaultBool": false
121
+ },
122
+ {
123
+ "inputKey": "context.device.advertisingId",
124
+ "outputKey": "data.device_ids",
125
+ "transforms": [
126
+ {
127
+ "expression": {
128
+ "lang": "lua",
129
+ "body": "local deviceType = input.context.device.type\nif deviceType == 'ios' then\n return {\n idfa = input.context.device.advertisingId,\n idfv = input.context.device.id\n }\nelseif deviceType == 'android' then\n return {\n adid = input.context.device.advertisingId,\n android_id = input.context.device.id\n }\nend"
130
+ }
131
+ }
132
+ ]
133
+ },
134
+ {
135
+ "inputKey": "context.ip",
136
+ "outputKey": "data.origination_ip"
137
+ },
138
+ {
139
+ "inputKey": "context.userAgent",
140
+ "outputKey": "data.device_ua"
141
+ },
142
+ {
143
+ "inputKey": "context.library.version",
144
+ "outputKey": "data.app_version"
145
+ },
146
+ {
147
+ "inputKey": "input",
148
+ "outputKey": "data.event_data.name",
149
+ "transforms": [
150
+ {
151
+ "expression": {
152
+ "lang": "lua",
153
+ "body": "return JOIN(PLUCK(input.properties.products, 'name'), ',')"
154
+ }
155
+ }
156
+ ]
157
+ },
158
+ {
159
+ "inputKey": "input",
160
+ "outputKey": "data.event_data.content_id",
161
+ "transforms": [
162
+ {
163
+ "expression": {
164
+ "lang": "lua",
165
+ "body": "return JOIN(PLUCK(input.properties.products, 'product_id'), ',')"
166
+ }
167
+ }
168
+ ]
169
+ },
170
+ {
171
+ "inputKey": "properties.currency",
172
+ "outputKey": "data.event_data.currency",
173
+ "transforms": [
174
+ {
175
+ "modifyString": "uppercase"
176
+ }
177
+ ]
178
+ },
179
+ {
180
+ "inputKey": "properties.quantity",
181
+ "outputKey": "data.event_data.quantity"
182
+ },
183
+ {
184
+ "inputKey": "input",
185
+ "outputKey": "data.usertime",
186
+ "transforms": [
187
+ {
188
+ "expression": {
189
+ "lang": "lua",
190
+ "body": "return MILLISECONDS_SINCE_EPOCH(input.receivedAt)"
191
+ }
192
+ }
193
+ ]
194
+ }
195
+ ]
196
+ },
197
+ "order_completed": {
198
+ "enrichments": [
199
+ {
200
+ "staticString": "event",
201
+ "outputKey": "action"
202
+ },
203
+ {
204
+ "staticString": "",
205
+ "outputKey": "data.device_ver"
206
+ },
207
+ {
208
+ "staticString": "Purchase",
209
+ "outputKey": "data.event_name"
210
+ }
211
+ ],
212
+ "mappings": [
213
+ {
214
+ "inputKey": "context.device.adTrackingEnabled",
215
+ "outputKey": "data.app_tracking_transparency.att",
216
+ "defaultBool": false
217
+ },
218
+ {
219
+ "inputKey": "context.device.advertisingId",
220
+ "outputKey": "data.device_ids",
221
+ "transforms": [
222
+ {
223
+ "expression": {
224
+ "lang": "lua",
225
+ "body": "local deviceType = input.context.device.type\nif deviceType == 'ios' then\n return {\n idfa = input.context.device.advertisingId,\n idfv = input.context.device.id\n }\nelseif deviceType == 'android' then\n return {\n adid = input.context.device.advertisingId,\n android_id = input.context.device.id\n }\nend"
226
+ }
227
+ }
228
+ ]
229
+ },
230
+ {
231
+ "inputKey": "context.ip",
232
+ "outputKey": "data.origination_ip"
233
+ },
234
+ {
235
+ "inputKey": "context.userAgent",
236
+ "outputKey": "data.device_ua"
237
+ },
238
+ {
239
+ "inputKey": "context.library.version",
240
+ "outputKey": "data.app_version"
241
+ },
242
+ {
243
+ "inputKey": "input",
244
+ "outputKey": "data.event_data.name",
245
+ "transforms": [
246
+ {
247
+ "expression": {
248
+ "lang": "lua",
249
+ "body": "return JOIN(PLUCK(input.properties.products, 'name'), ',')"
250
+ }
251
+ }
252
+ ]
253
+ },
254
+ {
255
+ "inputKey": "input",
256
+ "outputKey": "data.event_data.content_id",
257
+ "transforms": [
258
+ {
259
+ "expression": {
260
+ "lang": "lua",
261
+ "body": "return JOIN(PLUCK(input.properties.products, 'product_id'), ',')"
262
+ }
263
+ }
264
+ ]
265
+ },
266
+ {
267
+ "inputKey": "properties.revenue",
268
+ "outputKey": "data.event_data.price"
269
+ },
270
+ {
271
+ "inputKey": "properties.currency",
272
+ "outputKey": "data.event_data.currency",
273
+ "transforms": [
274
+ {
275
+ "modifyString": "uppercase"
276
+ }
277
+ ]
278
+ },
279
+ {
280
+ "inputKey": "input",
281
+ "outputKey": "data.usertime",
282
+ "transforms": [
283
+ {
284
+ "expression": {
285
+ "lang": "lua",
286
+ "body": "return MILLISECONDS_SINCE_EPOCH(input.receivedAt)"
287
+ }
288
+ }
289
+ ]
290
+ }
291
+ ]
292
+ },
293
+ "product_added": {
294
+ "enrichments": [
295
+ {
296
+ "staticString": "event",
297
+ "outputKey": "action"
298
+ },
299
+ {
300
+ "staticString": "",
301
+ "outputKey": "data.device_ver"
302
+ },
303
+ {
304
+ "staticString": "Add to Cart",
305
+ "outputKey": "data.event_name"
306
+ }
307
+ ],
308
+ "mappings": [
309
+ {
310
+ "inputKey": "context.device.adTrackingEnabled",
311
+ "outputKey": "data.app_tracking_transparency.att",
312
+ "defaultBool": false
313
+ },
314
+ {
315
+ "inputKey": "context.device.advertisingId",
316
+ "outputKey": "data.device_ids",
317
+ "transforms": [
318
+ {
319
+ "expression": {
320
+ "lang": "lua",
321
+ "body": "local deviceType = input.context.device.type\nif deviceType == 'ios' then\n return {\n idfa = input.context.device.advertisingId,\n idfv = input.context.device.id\n }\nelseif deviceType == 'android' then\n return {\n adid = input.context.device.advertisingId,\n android_id = input.context.device.id\n }\nend"
322
+ }
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "inputKey": "context.ip",
328
+ "outputKey": "data.origination_ip"
329
+ },
330
+ {
331
+ "inputKey": "context.userAgent",
332
+ "outputKey": "data.device_ua"
333
+ },
334
+ {
335
+ "inputKey": "context.library.version",
336
+ "outputKey": "data.app_version"
337
+ },
338
+ {
339
+ "inputKey": "properties.name",
340
+ "outputKey": "data.event_data.name"
341
+ },
342
+ {
343
+ "inputKey": "properties.product_id",
344
+ "outputKey": "data.event_data.content_id"
345
+ },
346
+ {
347
+ "inputKey": "properties.quantity",
348
+ "outputKey": "data.event_data.quantity"
349
+ },
350
+ {
351
+ "inputKey": "input",
352
+ "outputKey": "data.usertime",
353
+ "transforms": [
354
+ {
355
+ "expression": {
356
+ "lang": "lua",
357
+ "body": "return MILLISECONDS_SINCE_EPOCH(input.receivedAt)"
358
+ }
359
+ }
360
+ ]
361
+ }
362
+ ]
363
+ },
364
+ "products_searched": {
365
+ "enrichments": [
366
+ {
367
+ "staticString": "event",
368
+ "outputKey": "action"
369
+ },
370
+ {
371
+ "staticString": "",
372
+ "outputKey": "data.device_ver"
373
+ },
374
+ {
375
+ "staticString": "Search",
376
+ "outputKey": "data.event_name"
377
+ }
378
+ ],
379
+ "mappings": [
380
+ {
381
+ "inputKey": "context.device.adTrackingEnabled",
382
+ "outputKey": "data.app_tracking_transparency.att",
383
+ "defaultBool": false
384
+ },
385
+ {
386
+ "inputKey": "context.device.advertisingId",
387
+ "outputKey": "data.device_ids",
388
+ "transforms": [
389
+ {
390
+ "expression": {
391
+ "lang": "lua",
392
+ "body": "local deviceType = input.context.device.type\nif deviceType == 'ios' then\n return {\n idfa = input.context.device.advertisingId,\n idfv = input.context.device.id\n }\nelseif deviceType == 'android' then\n return {\n adid = input.context.device.advertisingId,\n android_id = input.context.device.id\n }\nend"
393
+ }
394
+ }
395
+ ]
396
+ },
397
+ {
398
+ "inputKey": "context.ip",
399
+ "outputKey": "data.origination_ip"
400
+ },
401
+ {
402
+ "inputKey": "context.userAgent",
403
+ "outputKey": "data.device_ua"
404
+ },
405
+ {
406
+ "inputKey": "context.library.version",
407
+ "outputKey": "data.app_version"
408
+ },
409
+ {
410
+ "inputKey": "properties.query",
411
+ "outputKey": "data.event_data.uri"
412
+ },
413
+ {
414
+ "inputKey": "input",
415
+ "outputKey": "data.usertime",
416
+ "transforms": [
417
+ {
418
+ "expression": {
419
+ "lang": "lua",
420
+ "body": "return MILLISECONDS_SINCE_EPOCH(input.receivedAt)"
421
+ }
422
+ }
423
+ ]
424
+ }
425
+ ]
426
+ }
427
+ },
428
+ "default": {
429
+ "enrichments": [
430
+ {
431
+ "staticString": "event",
432
+ "outputKey": "action"
433
+ },
434
+ {
435
+ "staticString": "",
436
+ "outputKey": "data.device_ver"
437
+ }
438
+ ],
439
+ "mappings": [
440
+ {
441
+ "inputKey": "context.device.adTrackingEnabled",
442
+ "outputKey": "data.app_tracking_transparency.att",
443
+ "defaultBool": false
444
+ },
445
+ {
446
+ "inputKey": "event",
447
+ "outputKey": "data.event_name"
448
+ },
449
+ {
450
+ "inputKey": "context.device.advertisingId",
451
+ "outputKey": "data.device_ids",
452
+ "transforms": [
453
+ {
454
+ "expression": {
455
+ "lang": "lua",
456
+ "body": "local deviceType = input.context.device.type\nif deviceType == 'ios' then\n return {\n idfa = input.context.device.advertisingId,\n idfv = input.context.device.id\n }\nelseif deviceType == 'android' then\n return {\n adid = input.context.device.advertisingId,\n android_id = input.context.device.id\n }\nend"
457
+ }
458
+ }
459
+ ]
460
+ },
461
+ {
462
+ "inputKey": "context.ip",
463
+ "outputKey": "data.origination_ip"
464
+ },
465
+ {
466
+ "inputKey": "context.userAgent",
467
+ "outputKey": "data.device_ua"
468
+ },
469
+ {
470
+ "inputKey": "context.library.version",
471
+ "outputKey": "data.app_version"
472
+ },
473
+ {
474
+ "inputKey": "input",
475
+ "outputKey": "data.usertime",
476
+ "transforms": [
477
+ {
478
+ "expression": {
479
+ "lang": "lua",
480
+ "body": "return MILLISECONDS_SINCE_EPOCH(input.receivedAt)"
481
+ }
482
+ }
483
+ ]
484
+ }
485
+ ]
486
+ }
487
+ }
@@ -1 +1 @@
1
- "107d7b4508c3a2f3853cb4ef602182f0"
1
+ "b04e2a153bb7942fdc8cbdc05a5bf150"
@@ -1 +1 @@
1
- "8690d6ffb1d011636ae0cbf816c291ac"
1
+ "333104bb41fd658bff6a76f39cd1f121"
@@ -1,5 +1,17 @@
1
1
  {
2
2
  "version": "v0.0.1",
3
+ "default": {
4
+ "filters": [
5
+ {
6
+ "byEventNames": {
7
+ "action": "allow",
8
+ "events": [
9
+ ""
10
+ ]
11
+ }
12
+ }
13
+ ]
14
+ },
3
15
  "global": {
4
16
  "enrichments": [
5
17
  {
@@ -153,6 +165,100 @@
153
165
  }
154
166
  ]
155
167
  },
168
+ "product_list_viewed": {
169
+ "enrichments": [
170
+ {
171
+ "outputKey": "event_name",
172
+ "staticString": "view_category"
173
+ }
174
+ ],
175
+ "mappings": [
176
+ {
177
+ "inputKey": "input",
178
+ "outputKey": "custom_data.content_ids",
179
+ "transforms": [
180
+ {
181
+ "expression": {
182
+ "body": "return MAP(input.properties.products, function (p) return p.product_id end )",
183
+ "lang": "lua"
184
+ }
185
+ }
186
+ ]
187
+ },
188
+ {
189
+ "inputKey": "input",
190
+ "outputKey": "custom_data.contents",
191
+ "transforms": [
192
+ {
193
+ "expression": {
194
+ "body": "local contents=MAP(input.properties.products,\n function (p)\n return {\n id=p.product_id,\n item_price=tostring(p.price),\n quantity=p.quantity\n }\n end\n)\nreturn contents",
195
+ "lang": "lua"
196
+ }
197
+ }
198
+ ]
199
+ }
200
+ ]
201
+ },
202
+ "product_viewed": {
203
+ "enrichments": [
204
+ {
205
+ "outputKey": "event_name",
206
+ "staticString": "page_visit"
207
+ }
208
+ ],
209
+ "mappings": [
210
+ {
211
+ "inputKey": "properties.currency",
212
+ "outputKey": "custom_data.currency",
213
+ "defaultString": "USD",
214
+ "transforms": [
215
+ {
216
+ "modifyString": "uppercase"
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ "inputKey": "input",
222
+ "outputKey": "custom_data.value",
223
+ "transforms": [
224
+ {
225
+ "expression": {
226
+ "lang": "lua",
227
+ "body": "return tostring(input.properties.price * (input.properties.quantity or 1))"
228
+ }
229
+ }
230
+ ]
231
+ },
232
+ {
233
+ "inputKey": "input",
234
+ "outputKey": "custom_data.content_ids",
235
+ "transforms": [
236
+ {
237
+ "expression": {
238
+ "body": "return { input.properties.product_id }",
239
+ "lang": "lua"
240
+ }
241
+ }
242
+ ]
243
+ },
244
+ {
245
+ "inputKey": "input",
246
+ "outputKey": "custom_data.contents",
247
+ "transforms": [
248
+ {
249
+ "expression": {
250
+ "body": "return {{\n id=input.properties.product_id,\n item_price=tostring(input.properties.price),\n quantity=input.properties.quantity\n}}",
251
+ "lang": "lua"
252
+ }
253
+ }
254
+ ]
255
+ },
256
+ {
257
+ "inputKey": "properties.quantity",
258
+ "outputKey": "custom_data.num_items"
259
+ }
260
+ ]
261
+ },
156
262
  "product_added": {
157
263
  "enrichments": [
158
264
  {
@@ -201,7 +307,7 @@
201
307
  "transforms": [
202
308
  {
203
309
  "expression": {
204
- "body": "return {{\n item_price=tostring(input.properties.price),\n quantity=input.properties.quantity\n}}",
310
+ "body": "return {{\n id=input.properties.product_id,\n item_price=tostring(input.properties.price),\n quantity=input.properties.quantity\n}}",
205
311
  "lang": "lua"
206
312
  }
207
313
  }
@@ -213,6 +319,77 @@
213
319
  }
214
320
  ]
215
321
  },
322
+ "cart_viewed": {
323
+ "enrichments": [
324
+ {
325
+ "outputKey": "event_name",
326
+ "staticString": "page_visit"
327
+ }
328
+ ],
329
+ "mappings": [
330
+ {
331
+ "inputKey": "properties.currency",
332
+ "outputKey": "custom_data.currency",
333
+ "transforms": [
334
+ {
335
+ "modifyString": "uppercase"
336
+ }
337
+ ]
338
+ },
339
+ {
340
+ "inputKey": "input",
341
+ "outputKey": "custom_data.value",
342
+ "transforms": [
343
+ {
344
+ "expression": {
345
+ "lang": "lua",
346
+ "body": "return tostring(SUM(MAP(input.properties.products, function (p) return p.price * (p.quantity or 1) end)))"
347
+ }
348
+ }
349
+ ]
350
+ },
351
+ {
352
+ "inputKey": "input",
353
+ "outputKey": "custom_data.content_ids",
354
+ "transforms": [
355
+ {
356
+ "expression": {
357
+ "body": "return MAP(input.properties.products, function (p) return p.product_id end )",
358
+ "lang": "lua"
359
+ }
360
+ }
361
+ ]
362
+ },
363
+ {
364
+ "inputKey": "input",
365
+ "outputKey": "custom_data.contents",
366
+ "transforms": [
367
+ {
368
+ "expression": {
369
+ "body": "local contents=MAP(input.properties.products,\n function (p)\n return {\n id=p.product_id,\n item_price=tostring(p.price),\n quantity=p.quantity\n }\n end\n)\nreturn contents",
370
+ "lang": "lua"
371
+ }
372
+ }
373
+ ]
374
+ },
375
+ {
376
+ "inputKey": "input",
377
+ "outputKey": "custom_data.num_items",
378
+ "transforms": [
379
+ {
380
+ "expression": {
381
+ "lang": "lua",
382
+ "body": "return SUM(MAP(input.properties.products, function (p) return p.quantity or 1 end))"
383
+ }
384
+ }
385
+ ]
386
+ },
387
+ {
388
+ "inputKey": "properties.order_id",
389
+ "outputKey": "custom_data.order_id"
390
+ }
391
+ ]
392
+ },
216
393
  "order_completed": {
217
394
  "enrichments": [
218
395
  {
@@ -260,7 +437,7 @@
260
437
  "transforms": [
261
438
  {
262
439
  "expression": {
263
- "body": "local contents=MAP(input.properties.products,\n function (p)\n return {\n item_price=tostring(p.price),\n quantity=p.quantity\n }\n end\n)\nreturn contents",
440
+ "body": "local contents=MAP(input.properties.products,\n function (p)\n return {\n id=p.product_id,\n item_price=tostring(p.price),\n quantity=p.quantity\n }\n end\n)\nreturn contents",
264
441
  "lang": "lua"
265
442
  }
266
443
  }