n8n-nodes-synca 1.0.19 → 1.0.22

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.
@@ -0,0 +1,986 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SyncaWolt = void 0;
4
+ class SyncaWolt {
5
+ constructor() {
6
+ this.description = {
7
+ usableAsTool: true,
8
+ displayName: 'Synca Wolt',
9
+ name: 'customSyncaWolt',
10
+ icon: { light: 'file:icon.svg', dark: 'file:icon.svg' },
11
+ group: ['transform'],
12
+ version: 1,
13
+ description: 'Invoke Wolt actions via the Synca backend - Orders, Venue, Menu, and Timeslots management',
14
+ subtitle: '={{$parameter["resource"] + ": " + $parameter["operation"]}}',
15
+ defaults: { name: 'Synca Wolt' },
16
+ inputs: ["main"],
17
+ outputs: ["main"],
18
+ credentials: [{ name: 'customSyncaApiCredentials', required: true }],
19
+ properties: [
20
+ {
21
+ displayName: 'Credentials',
22
+ name: 'credentials',
23
+ type: 'options',
24
+ typeOptions: { loadOptionsMethod: 'getCredentials' },
25
+ default: '',
26
+ required: true,
27
+ description: 'Select the Wolt credentials to use',
28
+ },
29
+ {
30
+ displayName: 'Resource',
31
+ name: 'resource',
32
+ type: 'options',
33
+ noDataExpression: true,
34
+ options: [
35
+ {
36
+ name: 'Orders',
37
+ value: 'orders',
38
+ description: 'Manage orders, refunds, tracking, and cancellations',
39
+ },
40
+ {
41
+ name: 'Venue',
42
+ value: 'venue',
43
+ description: 'Manage venue status, delivery provider, and opening times',
44
+ },
45
+ {
46
+ name: 'Menu',
47
+ value: 'menu',
48
+ description: 'Manage menu items, inventory, and options',
49
+ },
50
+ {
51
+ name: 'Timeslots',
52
+ value: 'timeslots',
53
+ description: 'Manage delivery timeslot configurations',
54
+ },
55
+ ],
56
+ default: 'orders',
57
+ },
58
+ {
59
+ displayName: 'Operation',
60
+ name: 'operation',
61
+ type: 'options',
62
+ noDataExpression: true,
63
+ displayOptions: { show: { resource: ['orders'] } },
64
+ options: [
65
+ {
66
+ name: 'Confirm pre-order',
67
+ value: 'confirm_preorder',
68
+ description: 'Confirm pre-order with customer',
69
+ },
70
+ {
71
+ name: 'Accept order',
72
+ value: 'accept_order',
73
+ description: 'Accept order with date',
74
+ },
75
+ {
76
+ name: 'Mark Order as Ready',
77
+ value: 'mark_order_as_ready',
78
+ description: 'Mark order as ready for pickup',
79
+ },
80
+ {
81
+ name: 'Mark Order as Pickup Completed',
82
+ value: 'mark_order_pickup_completed',
83
+ description: 'Mark order as pickup completed',
84
+ },
85
+ {
86
+ name: 'Mark Order as Delivered',
87
+ value: 'mark_order_delivered',
88
+ description: 'Mark order as delivered to customer',
89
+ },
90
+ {
91
+ name: 'Get Order',
92
+ value: 'get_order',
93
+ description: 'Retrieve detailed order information',
94
+ },
95
+ {
96
+ name: 'Mark Order Sent to POS',
97
+ value: 'mark_order_sent_to_pos',
98
+ description: 'Mark order as sent to POS system',
99
+ },
100
+ {
101
+ name: 'Replace Order Items',
102
+ value: 'replace_order_items',
103
+ description: 'Replace items in order during picking',
104
+ },
105
+ {
106
+ name: 'Refund Order Items',
107
+ value: 'refund_order_items',
108
+ description: 'Refund specific items (requires endpoint enablement)',
109
+ },
110
+ {
111
+ name: 'Refund Order Basket',
112
+ value: 'refund_order_basket',
113
+ description: 'Refund at basket level (requires endpoint enablement)',
114
+ },
115
+ {
116
+ name: 'Update Courier Location',
117
+ value: 'update_courier_location',
118
+ description: 'Send courier location (Self Delivery only)',
119
+ },
120
+ {
121
+ name: 'Update Delivery ETA',
122
+ value: 'update_delivery_eta',
123
+ description: 'Send estimated time of arrival (Self Delivery only)',
124
+ },
125
+ {
126
+ name: 'Get Document Upload Link',
127
+ value: 'get_document_upload_link',
128
+ description: 'Get pre-signed URL for uploading order documents',
129
+ },
130
+ {
131
+ name: 'Cancel Order',
132
+ value: 'cancel_order',
133
+ description: 'Cancel order before courier accepts delivery task',
134
+ },
135
+ ],
136
+ default: 'get_order',
137
+ },
138
+ {
139
+ displayName: 'Operation',
140
+ name: 'operation',
141
+ type: 'options',
142
+ noDataExpression: true,
143
+ displayOptions: { show: { resource: ['venue'] } },
144
+ options: [
145
+ {
146
+ name: 'Get Venue Status',
147
+ value: 'get_venue_status',
148
+ description: 'Get venue status information',
149
+ },
150
+ {
151
+ name: 'Get Delivery Provider',
152
+ value: 'get_delivery_provider',
153
+ description: 'Get delivery provider configuration',
154
+ },
155
+ {
156
+ name: 'Update Delivery Provider',
157
+ value: 'update_delivery_provider',
158
+ description: 'Update delivery provider configuration',
159
+ },
160
+ {
161
+ name: 'Update Venue Online Status',
162
+ value: 'update_venue_online_status',
163
+ description: 'Update venue online/offline status',
164
+ },
165
+ {
166
+ name: 'Update Venue Opening Time',
167
+ value: 'update_venue_opening_time',
168
+ description: 'Update venue opening hours',
169
+ },
170
+ {
171
+ name: 'Set Special Opening Time',
172
+ value: 'set_special_opening_time',
173
+ description: 'Set special opening time (e.g., holidays)',
174
+ },
175
+ ],
176
+ default: 'get_venue_status',
177
+ },
178
+ {
179
+ displayName: 'Operation',
180
+ name: 'operation',
181
+ type: 'options',
182
+ noDataExpression: true,
183
+ displayOptions: { show: { resource: ['menu'] } },
184
+ options: [
185
+ {
186
+ name: 'Get Menu',
187
+ value: 'get_menu',
188
+ description: 'Retrieve venue menu',
189
+ },
190
+ {
191
+ name: 'Create or Update Menu',
192
+ value: 'create_or_update_menu',
193
+ description: 'Create or update entire menu',
194
+ },
195
+ {
196
+ name: 'Update Item Inventory',
197
+ value: 'update_item_inventory',
198
+ description: 'Update item inventory/availability',
199
+ },
200
+ {
201
+ name: 'Update Item',
202
+ value: 'update_item',
203
+ description: 'Update item details (price, name, etc.)',
204
+ },
205
+ {
206
+ name: 'Update Option Value',
207
+ value: 'update_option_value',
208
+ description: 'Update option value (e.g., modifier price)',
209
+ },
210
+ ],
211
+ default: 'get_menu',
212
+ },
213
+ {
214
+ displayName: 'Operation',
215
+ name: 'operation',
216
+ type: 'options',
217
+ noDataExpression: true,
218
+ displayOptions: { show: { resource: ['timeslots'] } },
219
+ options: [
220
+ {
221
+ name: 'Get Timeslots',
222
+ value: 'get_timeslots',
223
+ description: 'Retrieve timeslot configurations for next 7 days',
224
+ },
225
+ {
226
+ name: 'Update Timeslots',
227
+ value: 'update_timeslots',
228
+ description: 'Update timeslot configurations',
229
+ },
230
+ ],
231
+ default: 'get_timeslots',
232
+ },
233
+ {
234
+ displayName: 'Order ID',
235
+ name: 'order_id',
236
+ type: 'string',
237
+ required: true,
238
+ default: '',
239
+ displayOptions: {
240
+ show: {
241
+ resource: ['orders'],
242
+ operation: [
243
+ 'get_order',
244
+ 'confirm_preorder',
245
+ 'accept_order',
246
+ 'mark_order_as_ready',
247
+ 'mark_order_pickup_completed',
248
+ 'mark_order_delivered',
249
+ 'mark_order_sent_to_pos',
250
+ 'replace_order_items',
251
+ 'refund_order_items',
252
+ 'refund_order_basket',
253
+ 'update_courier_location',
254
+ 'update_delivery_eta',
255
+ 'get_document_upload_link',
256
+ ],
257
+ },
258
+ },
259
+ description: 'The unique identifier of the order',
260
+ },
261
+ {
262
+ displayName: 'Order Reference ID',
263
+ name: 'order_reference_id',
264
+ type: 'string',
265
+ required: true,
266
+ default: '',
267
+ displayOptions: {
268
+ show: {
269
+ resource: ['orders'],
270
+ operation: ['cancel_order'],
271
+ },
272
+ },
273
+ description: 'The order reference ID for cancellation',
274
+ },
275
+ {
276
+ displayName: 'Success',
277
+ name: 'success',
278
+ type: 'boolean',
279
+ required: true,
280
+ default: true,
281
+ displayOptions: {
282
+ show: {
283
+ resource: ['orders'],
284
+ operation: ['mark_order_sent_to_pos'],
285
+ },
286
+ },
287
+ description: 'Whether the order was successfully sent to POS',
288
+ },
289
+ {
290
+ displayName: 'Adjusted Pickup Time',
291
+ name: 'adjusted_pickup_time',
292
+ type: 'dateTime',
293
+ required: true,
294
+ default: '',
295
+ displayOptions: {
296
+ show: {
297
+ resource: ['orders'],
298
+ operation: ['accept_order'],
299
+ },
300
+ },
301
+ description: 'ISO 8601 timestamp when order was sent to POS',
302
+ },
303
+ {
304
+ displayName: 'Time Sent to POS',
305
+ name: 'time_sent_to_pos',
306
+ type: 'dateTime',
307
+ required: true,
308
+ default: '',
309
+ displayOptions: {
310
+ show: {
311
+ resource: ['orders'],
312
+ operation: ['mark_order_sent_to_pos'],
313
+ },
314
+ },
315
+ description: 'ISO 8601 timestamp when order was sent to POS',
316
+ },
317
+ {
318
+ displayName: 'Item Changes',
319
+ name: 'item_changes',
320
+ type: 'json',
321
+ required: true,
322
+ default: '[]',
323
+ displayOptions: {
324
+ show: {
325
+ resource: ['orders'],
326
+ operation: ['replace_order_items'],
327
+ },
328
+ },
329
+ description: 'JSON array of item changes',
330
+ placeholder: '[{"item_id": "item-1", "quantity": 2}]',
331
+ },
332
+ {
333
+ displayName: 'Reason',
334
+ name: 'reason',
335
+ type: 'options',
336
+ required: true,
337
+ options: [
338
+ { name: 'Price Difference', value: 'PRICE_DIFFERENCE' },
339
+ { name: 'Quality Issues', value: 'QUALITY_ISSUES' },
340
+ ],
341
+ default: 'PRICE_DIFFERENCE',
342
+ displayOptions: {
343
+ show: {
344
+ resource: ['orders'],
345
+ operation: ['refund_order_items'],
346
+ },
347
+ },
348
+ description: 'Reason for refund',
349
+ },
350
+ {
351
+ displayName: 'Item Refunds',
352
+ name: 'item_refunds',
353
+ type: 'json',
354
+ required: true,
355
+ default: '[]',
356
+ displayOptions: {
357
+ show: {
358
+ resource: ['orders'],
359
+ operation: ['refund_order_items'],
360
+ },
361
+ },
362
+ description: 'JSON array of item refund data',
363
+ placeholder: '[{"item_id": "item-1", "quantity": 1, "amount": 10.50}]',
364
+ },
365
+ {
366
+ displayName: 'Basket Refunds',
367
+ name: 'basket_refunds',
368
+ type: 'json',
369
+ required: true,
370
+ default: '[]',
371
+ displayOptions: {
372
+ show: {
373
+ resource: ['orders'],
374
+ operation: ['refund_order_basket'],
375
+ },
376
+ },
377
+ description: 'JSON array of basket refund data',
378
+ placeholder: '[{"amount": 10.50, "reason": "Customer request"}]',
379
+ },
380
+ {
381
+ displayName: 'Location (Longitude)',
382
+ name: 'location_lon',
383
+ type: 'number',
384
+ required: true,
385
+ default: 0,
386
+ displayOptions: {
387
+ show: {
388
+ resource: ['orders'],
389
+ operation: ['update_courier_location'],
390
+ },
391
+ },
392
+ description: 'Longitude coordinate',
393
+ },
394
+ {
395
+ displayName: 'Location (Latitude)',
396
+ name: 'location_lat',
397
+ type: 'number',
398
+ required: true,
399
+ default: 0,
400
+ displayOptions: {
401
+ show: {
402
+ resource: ['orders'],
403
+ operation: ['update_courier_location'],
404
+ },
405
+ },
406
+ description: 'Latitude coordinate',
407
+ },
408
+ {
409
+ displayName: 'Heading',
410
+ name: 'heading',
411
+ type: 'number',
412
+ default: 0,
413
+ displayOptions: {
414
+ show: {
415
+ resource: ['orders'],
416
+ operation: ['update_courier_location'],
417
+ },
418
+ },
419
+ description: 'Direction in degrees (0-360)',
420
+ },
421
+ {
422
+ displayName: 'Is Delivering This Order',
423
+ name: 'is_delivering_this_order',
424
+ type: 'boolean',
425
+ default: true,
426
+ displayOptions: {
427
+ show: {
428
+ resource: ['orders'],
429
+ operation: ['update_courier_location'],
430
+ },
431
+ },
432
+ description: 'Whether courier is currently delivering this order',
433
+ },
434
+ {
435
+ displayName: 'ETA Minutes',
436
+ name: 'eta_minutes',
437
+ type: 'number',
438
+ required: true,
439
+ default: 30,
440
+ typeOptions: {
441
+ minValue: 0,
442
+ },
443
+ displayOptions: {
444
+ show: {
445
+ resource: ['orders'],
446
+ operation: ['update_delivery_eta'],
447
+ },
448
+ },
449
+ description: 'Estimated time of arrival in minutes',
450
+ },
451
+ {
452
+ displayName: 'Document Type',
453
+ name: 'document_type',
454
+ type: 'options',
455
+ required: true,
456
+ options: [
457
+ { name: 'Invoice', value: 'INVOICE' },
458
+ { name: 'Receipt', value: 'RECEIPT' },
459
+ { name: 'Refund', value: 'REFUND' },
460
+ { name: 'Return', value: 'RETURN' },
461
+ { name: 'Alcohol Sale', value: 'ALCOHOL_SALE' },
462
+ { name: 'Invoice Correction', value: 'INVOICE_CORRECTION' },
463
+ { name: 'Alcohol Sale Correction', value: 'ALCOHOL_SALE_CORRECTION' },
464
+ ],
465
+ default: 'INVOICE',
466
+ displayOptions: {
467
+ show: {
468
+ resource: ['orders'],
469
+ operation: ['get_document_upload_link'],
470
+ },
471
+ },
472
+ description: 'Type of document to upload',
473
+ },
474
+ {
475
+ displayName: 'Cancel Reason',
476
+ name: 'cancel_reason',
477
+ type: 'string',
478
+ required: true,
479
+ default: '',
480
+ displayOptions: {
481
+ show: {
482
+ resource: ['orders'],
483
+ operation: ['cancel_order'],
484
+ },
485
+ },
486
+ description: 'Reason for cancelling the order',
487
+ },
488
+ {
489
+ displayName: 'Delivery Provider',
490
+ name: 'delivery_provider',
491
+ type: 'json',
492
+ required: true,
493
+ default: '{}',
494
+ displayOptions: {
495
+ show: {
496
+ resource: ['venue'],
497
+ operation: ['update_delivery_provider'],
498
+ },
499
+ },
500
+ description: 'JSON object with delivery provider configuration',
501
+ placeholder: '{"provider": "WOLT", "enabled": true}',
502
+ },
503
+ {
504
+ displayName: 'Online',
505
+ name: 'online',
506
+ type: 'boolean',
507
+ required: true,
508
+ default: true,
509
+ displayOptions: {
510
+ show: {
511
+ resource: ['venue'],
512
+ operation: ['update_venue_online_status'],
513
+ },
514
+ },
515
+ description: 'Whether the venue is online (accepting orders)',
516
+ },
517
+ {
518
+ displayName: 'Opening Time',
519
+ name: 'opening_time',
520
+ type: 'json',
521
+ required: true,
522
+ default: '{}',
523
+ displayOptions: {
524
+ show: {
525
+ resource: ['venue'],
526
+ operation: ['update_venue_opening_time'],
527
+ },
528
+ },
529
+ description: 'JSON object with opening time configuration',
530
+ placeholder: '{"monday": {"open": "09:00", "close": "22:00"}}',
531
+ },
532
+ {
533
+ displayName: 'Special Opening Time',
534
+ name: 'special_opening_time',
535
+ type: 'json',
536
+ required: true,
537
+ default: '{}',
538
+ displayOptions: {
539
+ show: {
540
+ resource: ['venue'],
541
+ operation: ['set_special_opening_time'],
542
+ },
543
+ },
544
+ description: 'JSON object with special opening time (e.g., holidays)',
545
+ placeholder: '{"date": "2024-12-25", "open": "10:00", "close": "18:00"}',
546
+ },
547
+ {
548
+ displayName: 'Menu',
549
+ name: 'menu',
550
+ type: 'json',
551
+ required: true,
552
+ default: '{}',
553
+ displayOptions: {
554
+ show: {
555
+ resource: ['menu'],
556
+ operation: ['create_or_update_menu'],
557
+ },
558
+ },
559
+ description: 'JSON object with complete menu structure',
560
+ placeholder: '{"sections": [{"name": "Main", "items": [...]}]}',
561
+ },
562
+ {
563
+ displayName: 'Item ID',
564
+ name: 'item_id',
565
+ type: 'string',
566
+ required: true,
567
+ default: '',
568
+ displayOptions: {
569
+ show: {
570
+ resource: ['menu'],
571
+ operation: ['update_item_inventory', 'update_item', 'update_option_value'],
572
+ },
573
+ },
574
+ description: 'The unique identifier of the menu item',
575
+ },
576
+ {
577
+ displayName: 'Inventory',
578
+ name: 'inventory',
579
+ type: 'json',
580
+ required: true,
581
+ default: '{}',
582
+ displayOptions: {
583
+ show: {
584
+ resource: ['menu'],
585
+ operation: ['update_item_inventory'],
586
+ },
587
+ },
588
+ description: 'JSON object with inventory/availability data',
589
+ placeholder: '{"available": true, "quantity": 10}',
590
+ },
591
+ {
592
+ displayName: 'Item',
593
+ name: 'item',
594
+ type: 'json',
595
+ required: true,
596
+ default: '{}',
597
+ displayOptions: {
598
+ show: {
599
+ resource: ['menu'],
600
+ operation: ['update_item'],
601
+ },
602
+ },
603
+ description: 'JSON object with item details to update',
604
+ placeholder: '{"name": "Pizza", "price": 12.99}',
605
+ },
606
+ {
607
+ displayName: 'Option ID',
608
+ name: 'option_id',
609
+ type: 'string',
610
+ required: true,
611
+ default: '',
612
+ displayOptions: {
613
+ show: {
614
+ resource: ['menu'],
615
+ operation: ['update_option_value'],
616
+ },
617
+ },
618
+ description: 'The unique identifier of the option',
619
+ },
620
+ {
621
+ displayName: 'Option Value',
622
+ name: 'option_value',
623
+ type: 'json',
624
+ required: true,
625
+ default: '{}',
626
+ displayOptions: {
627
+ show: {
628
+ resource: ['menu'],
629
+ operation: ['update_option_value'],
630
+ },
631
+ },
632
+ description: 'JSON object with option value to update',
633
+ placeholder: '{"price": 2.50, "available": true}',
634
+ },
635
+ {
636
+ displayName: 'Schedule',
637
+ name: 'schedule',
638
+ type: 'json',
639
+ default: '{}',
640
+ displayOptions: {
641
+ show: {
642
+ resource: ['timeslots'],
643
+ operation: ['update_timeslots'],
644
+ },
645
+ },
646
+ description: 'JSON object with schedule configuration',
647
+ placeholder: '{"monday": {"slots": [{"start": "10:00", "end": "14:00"}]}}',
648
+ },
649
+ {
650
+ displayName: 'Delivery Lead Time',
651
+ name: 'delivery_lead_time',
652
+ type: 'number',
653
+ default: 0,
654
+ typeOptions: {
655
+ minValue: 0,
656
+ },
657
+ displayOptions: {
658
+ show: {
659
+ resource: ['timeslots'],
660
+ operation: ['update_timeslots'],
661
+ },
662
+ },
663
+ description: 'Delivery lead time in minutes (at least one of schedule or delivery_lead_time must be provided)',
664
+ },
665
+ ],
666
+ };
667
+ this.methods = {
668
+ loadOptions: {
669
+ async getCredentials() {
670
+ try {
671
+ const { apiToken, baseUrl } = await this.getCredentials('customSyncaApiCredentials');
672
+ const res = await this.helpers.httpRequest({
673
+ method: 'GET',
674
+ url: `${baseUrl}/v1/invoke/get-credentials`,
675
+ headers: { 'x-api-token': apiToken },
676
+ });
677
+ return Array.isArray(res)
678
+ ? res.map((c) => ({ name: c.name || c.id, value: c.id }))
679
+ : [];
680
+ }
681
+ catch {
682
+ return [{ name: 'Default', value: 'default' }];
683
+ }
684
+ },
685
+ },
686
+ };
687
+ }
688
+ async execute() {
689
+ const items = this.getInputData();
690
+ const out = [];
691
+ const { apiToken, baseUrl } = await this.getCredentials('customSyncaApiCredentials');
692
+ for (let i = 0; i < items.length; i++) {
693
+ try {
694
+ const credentialId = this.getNodeParameter('credentials', i);
695
+ const operation = this.getNodeParameter('operation', i);
696
+ let params = {};
697
+ try {
698
+ const orderId = this.getNodeParameter('order_id', i, undefined);
699
+ if (orderId !== undefined && orderId !== '') {
700
+ params.order_id = orderId;
701
+ }
702
+ }
703
+ catch {
704
+ }
705
+ try {
706
+ const orderRefId = this.getNodeParameter('order_reference_id', i, undefined);
707
+ if (orderRefId !== undefined && orderRefId !== '') {
708
+ params.order_reference_id = orderRefId;
709
+ }
710
+ }
711
+ catch {
712
+ }
713
+ try {
714
+ const success = this.getNodeParameter('success', i, undefined);
715
+ if (success !== undefined) {
716
+ params.success = success;
717
+ }
718
+ }
719
+ catch {
720
+ }
721
+ try {
722
+ const timeSentToPos = this.getNodeParameter('time_sent_to_pos', i, undefined);
723
+ if (timeSentToPos !== undefined && timeSentToPos !== '') {
724
+ params.time_sent_to_pos = timeSentToPos;
725
+ }
726
+ }
727
+ catch {
728
+ }
729
+ try {
730
+ const itemChanges = this.getNodeParameter('item_changes', i, undefined);
731
+ if (itemChanges !== undefined && itemChanges !== '' && itemChanges !== '[]') {
732
+ try {
733
+ params.item_changes = JSON.parse(itemChanges);
734
+ }
735
+ catch {
736
+ params.item_changes = itemChanges;
737
+ }
738
+ }
739
+ }
740
+ catch {
741
+ }
742
+ try {
743
+ const reason = this.getNodeParameter('reason', i, undefined);
744
+ if (reason !== undefined && reason !== '') {
745
+ params.reason = reason;
746
+ }
747
+ }
748
+ catch {
749
+ }
750
+ try {
751
+ const itemRefunds = this.getNodeParameter('item_refunds', i, undefined);
752
+ if (itemRefunds !== undefined && itemRefunds !== '' && itemRefunds !== '[]') {
753
+ try {
754
+ params.item_refunds = JSON.parse(itemRefunds);
755
+ }
756
+ catch {
757
+ params.item_refunds = itemRefunds;
758
+ }
759
+ }
760
+ }
761
+ catch {
762
+ }
763
+ try {
764
+ const basketRefunds = this.getNodeParameter('basket_refunds', i, undefined);
765
+ if (basketRefunds !== undefined && basketRefunds !== '' && basketRefunds !== '[]') {
766
+ try {
767
+ params.basket_refunds = JSON.parse(basketRefunds);
768
+ }
769
+ catch {
770
+ params.basket_refunds = basketRefunds;
771
+ }
772
+ }
773
+ }
774
+ catch {
775
+ }
776
+ try {
777
+ const locationLon = this.getNodeParameter('location_lon', i, undefined);
778
+ const locationLat = this.getNodeParameter('location_lat', i, undefined);
779
+ if (locationLon !== undefined && locationLat !== undefined) {
780
+ params.location = {
781
+ lon: locationLon,
782
+ lat: locationLat,
783
+ };
784
+ }
785
+ }
786
+ catch {
787
+ }
788
+ try {
789
+ const heading = this.getNodeParameter('heading', i, undefined);
790
+ if (heading !== undefined) {
791
+ params.heading = heading;
792
+ }
793
+ }
794
+ catch {
795
+ }
796
+ try {
797
+ const isDelivering = this.getNodeParameter('is_delivering_this_order', i, undefined);
798
+ if (isDelivering !== undefined) {
799
+ params.is_delivering_this_order = isDelivering;
800
+ }
801
+ }
802
+ catch {
803
+ }
804
+ try {
805
+ const etaMinutes = this.getNodeParameter('eta_minutes', i, undefined);
806
+ if (etaMinutes !== undefined) {
807
+ params.eta_minutes = etaMinutes;
808
+ }
809
+ }
810
+ catch {
811
+ }
812
+ try {
813
+ const documentType = this.getNodeParameter('document_type', i, undefined);
814
+ if (documentType !== undefined && documentType !== '') {
815
+ params.document_type = documentType;
816
+ }
817
+ }
818
+ catch {
819
+ }
820
+ try {
821
+ const cancelReason = this.getNodeParameter('cancel_reason', i, undefined);
822
+ if (cancelReason !== undefined && cancelReason !== '') {
823
+ params.reason = cancelReason;
824
+ }
825
+ }
826
+ catch {
827
+ }
828
+ try {
829
+ const deliveryProvider = this.getNodeParameter('delivery_provider', i, undefined);
830
+ if (deliveryProvider !== undefined && deliveryProvider !== '' && deliveryProvider !== '{}') {
831
+ try {
832
+ params.delivery_provider = JSON.parse(deliveryProvider);
833
+ }
834
+ catch {
835
+ params.delivery_provider = deliveryProvider;
836
+ }
837
+ }
838
+ }
839
+ catch {
840
+ }
841
+ try {
842
+ const online = this.getNodeParameter('online', i, undefined);
843
+ if (online !== undefined) {
844
+ params.online = online;
845
+ }
846
+ }
847
+ catch {
848
+ }
849
+ try {
850
+ const openingTime = this.getNodeParameter('opening_time', i, undefined);
851
+ if (openingTime !== undefined && openingTime !== '' && openingTime !== '{}') {
852
+ try {
853
+ params.opening_time = JSON.parse(openingTime);
854
+ }
855
+ catch {
856
+ params.opening_time = openingTime;
857
+ }
858
+ }
859
+ }
860
+ catch {
861
+ }
862
+ try {
863
+ const specialOpeningTime = this.getNodeParameter('special_opening_time', i, undefined);
864
+ if (specialOpeningTime !== undefined && specialOpeningTime !== '' && specialOpeningTime !== '{}') {
865
+ try {
866
+ params.special_opening_time = JSON.parse(specialOpeningTime);
867
+ }
868
+ catch {
869
+ params.special_opening_time = specialOpeningTime;
870
+ }
871
+ }
872
+ }
873
+ catch {
874
+ }
875
+ try {
876
+ const menu = this.getNodeParameter('menu', i, undefined);
877
+ if (menu !== undefined && menu !== '' && menu !== '{}') {
878
+ try {
879
+ params.menu = JSON.parse(menu);
880
+ }
881
+ catch {
882
+ params.menu = menu;
883
+ }
884
+ }
885
+ }
886
+ catch {
887
+ }
888
+ try {
889
+ const itemId = this.getNodeParameter('item_id', i, undefined);
890
+ if (itemId !== undefined && itemId !== '') {
891
+ params.item_id = itemId;
892
+ }
893
+ }
894
+ catch {
895
+ }
896
+ try {
897
+ const inventory = this.getNodeParameter('inventory', i, undefined);
898
+ if (inventory !== undefined && inventory !== '' && inventory !== '{}') {
899
+ try {
900
+ params.inventory = JSON.parse(inventory);
901
+ }
902
+ catch {
903
+ params.inventory = inventory;
904
+ }
905
+ }
906
+ }
907
+ catch {
908
+ }
909
+ try {
910
+ const item = this.getNodeParameter('item', i, undefined);
911
+ if (item !== undefined && item !== '' && item !== '{}') {
912
+ try {
913
+ params.item = JSON.parse(item);
914
+ }
915
+ catch {
916
+ params.item = item;
917
+ }
918
+ }
919
+ }
920
+ catch {
921
+ }
922
+ try {
923
+ const optionId = this.getNodeParameter('option_id', i, undefined);
924
+ if (optionId !== undefined && optionId !== '') {
925
+ params.option_id = optionId;
926
+ }
927
+ }
928
+ catch {
929
+ }
930
+ try {
931
+ const optionValue = this.getNodeParameter('option_value', i, undefined);
932
+ if (optionValue !== undefined && optionValue !== '' && optionValue !== '{}') {
933
+ try {
934
+ params.value = JSON.parse(optionValue);
935
+ }
936
+ catch {
937
+ params.value = optionValue;
938
+ }
939
+ }
940
+ }
941
+ catch {
942
+ }
943
+ try {
944
+ const schedule = this.getNodeParameter('schedule', i, undefined);
945
+ if (schedule !== undefined && schedule !== '' && schedule !== '{}') {
946
+ try {
947
+ params.schedule = JSON.parse(schedule);
948
+ }
949
+ catch {
950
+ params.schedule = schedule;
951
+ }
952
+ }
953
+ }
954
+ catch {
955
+ }
956
+ try {
957
+ const deliveryLeadTime = this.getNodeParameter('delivery_lead_time', i, undefined);
958
+ if (deliveryLeadTime !== undefined) {
959
+ params.delivery_lead_time = deliveryLeadTime;
960
+ }
961
+ }
962
+ catch {
963
+ }
964
+ const req = {
965
+ method: 'POST',
966
+ url: `${baseUrl}/v1/invoke/${credentialId}/${operation}`,
967
+ headers: { 'x-api-token': apiToken, 'Content-Type': 'application/json' },
968
+ body: params,
969
+ json: true,
970
+ };
971
+ const response = await this.helpers.httpRequest(req);
972
+ out.push({ json: response, pairedItem: { item: i } });
973
+ }
974
+ catch (err) {
975
+ if (this.continueOnFail()) {
976
+ out.push({ json: { error: err.message }, pairedItem: { item: i } });
977
+ continue;
978
+ }
979
+ throw err;
980
+ }
981
+ }
982
+ return [out];
983
+ }
984
+ }
985
+ exports.SyncaWolt = SyncaWolt;
986
+ //# sourceMappingURL=SyncaWolt.node.js.map