n8n-nodes-whaapy 0.3.0 → 0.3.1

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.
@@ -44,10 +44,10 @@ function buildInteractivePayload(params) {
44
44
  };
45
45
  }
46
46
  }
47
- // Add footer if specified
48
- if (params.footerText) {
47
+ // Add footer if specified and not empty
48
+ if (params.footerText && params.footerText.trim()) {
49
49
  interactive.footer = {
50
- text: params.footerText,
50
+ text: params.footerText.trim(),
51
51
  };
52
52
  }
53
53
  // Build action based on type
@@ -142,24 +142,12 @@ class Whaapy {
142
142
  value: 'send',
143
143
  action: 'Send a message',
144
144
  description: 'Send a WhatsApp message',
145
- routing: {
146
- request: {
147
- method: 'POST',
148
- url: '/messages/v1',
149
- },
150
- },
151
145
  },
152
146
  {
153
147
  name: 'Retry',
154
148
  value: 'retry',
155
149
  action: 'Retry a failed message',
156
150
  description: 'Retry sending a failed message',
157
- routing: {
158
- request: {
159
- method: 'POST',
160
- url: '=/messages/v1/{{$parameter.messageId}}/retry',
161
- },
162
- },
163
151
  },
164
152
  ],
165
153
  default: 'send',
@@ -176,9 +164,6 @@ class Whaapy {
176
164
  displayOptions: {
177
165
  show: { resource: ['message'], operation: ['send'] },
178
166
  },
179
- routing: {
180
- send: { type: 'body', property: 'to' },
181
- },
182
167
  },
183
168
  // Message: Send - Type
184
169
  {
@@ -203,9 +188,6 @@ class Whaapy {
203
188
  displayOptions: {
204
189
  show: { resource: ['message'], operation: ['send'] },
205
190
  },
206
- routing: {
207
- send: { type: 'body', property: 'type' },
208
- },
209
191
  },
210
192
  // Message: Send - Text content
211
193
  {
@@ -218,10 +200,7 @@ class Whaapy {
218
200
  description: 'The text content of the message',
219
201
  displayOptions: {
220
202
  show: { resource: ['message'], operation: ['send'], messageType: ['text'] },
221
- },
222
- routing: {
223
- send: { type: 'body', property: 'content' },
224
- },
203
+ }
225
204
  },
226
205
  // Message: Send - Media URL (for image, video, audio, document, sticker)
227
206
  {
@@ -239,9 +218,6 @@ class Whaapy {
239
218
  messageType: ['image', 'video', 'audio', 'document', 'sticker'],
240
219
  },
241
220
  },
242
- routing: {
243
- send: { type: 'body', property: '={{$parameter.messageType}}.link' },
244
- },
245
221
  },
246
222
  // Message: Send - Caption (for media)
247
223
  {
@@ -257,9 +233,6 @@ class Whaapy {
257
233
  messageType: ['image', 'video', 'document'],
258
234
  },
259
235
  },
260
- routing: {
261
- send: { type: 'body', property: '={{$parameter.messageType}}.caption' },
262
- },
263
236
  },
264
237
  // Message: Send - Template name
265
238
  {
@@ -272,10 +245,7 @@ class Whaapy {
272
245
  description: 'Exact name of the WhatsApp template as it appears in Meta Business Manager',
273
246
  displayOptions: {
274
247
  show: { resource: ['message'], operation: ['send'], messageType: ['template'] },
275
- },
276
- routing: {
277
- send: { type: 'body', property: 'templateName' },
278
- },
248
+ }
279
249
  },
280
250
  // Message: Send - Template Language
281
251
  {
@@ -297,10 +267,7 @@ class Whaapy {
297
267
  { name: 'French', value: 'fr' },
298
268
  { name: 'German', value: 'de' },
299
269
  { name: 'Italian', value: 'it' },
300
- ],
301
- routing: {
302
- send: { type: 'body', property: 'language' },
303
- },
270
+ ]
304
271
  },
305
272
  // Message: Send - Template Additional Options
306
273
  {
@@ -320,13 +287,6 @@ class Whaapy {
320
287
  default: '',
321
288
  placeholder: 'Juan Pérez, #ORD-12345, $1500',
322
289
  description: 'Comma-separated values for {{1}}, {{2}}, etc. placeholders in the template body',
323
- routing: {
324
- send: {
325
- type: 'body',
326
- property: 'template_parameters',
327
- value: '={{ $value ? $value.split(",").map(v => v.trim()) : undefined }}',
328
- },
329
- },
330
290
  },
331
291
  {
332
292
  displayName: 'Header Media Type',
@@ -337,10 +297,7 @@ class Whaapy {
337
297
  { name: 'Image', value: 'image' },
338
298
  { name: 'Video', value: 'video' },
339
299
  { name: 'Document', value: 'document' },
340
- ],
341
- routing: {
342
- send: { type: 'body', property: 'header_media.type' },
343
- },
300
+ ]
344
301
  },
345
302
  {
346
303
  displayName: 'Header Media URL',
@@ -348,10 +305,7 @@ class Whaapy {
348
305
  type: 'string',
349
306
  default: '',
350
307
  placeholder: 'https://example.com/image.jpg',
351
- description: 'Public URL of the media file for header',
352
- routing: {
353
- send: { type: 'body', property: 'header_media.url' },
354
- },
308
+ description: 'Public URL of the media file for header'
355
309
  },
356
310
  ],
357
311
  },
@@ -371,7 +325,7 @@ class Whaapy {
371
325
  default: 'button',
372
326
  description: 'Type of interactive message. Buttons show up to 3 options, Lists show a menu with sections.',
373
327
  displayOptions: {
374
- show: { resource: ['message'], operation: ['send'], messageType: ['interactive'] },
328
+ show: { resource: ['message'], operation: ['send'], messageType: ['interactive'], interactiveUseRawJson: [false] },
375
329
  },
376
330
  },
377
331
  // Interactive: Body text (required)
@@ -385,7 +339,7 @@ class Whaapy {
385
339
  placeholder: '¿Cómo podemos ayudarte hoy?',
386
340
  description: 'Main text of the message. Max 1024 characters.',
387
341
  displayOptions: {
388
- show: { resource: ['message'], operation: ['send'], messageType: ['interactive'] },
342
+ show: { resource: ['message'], operation: ['send'], messageType: ['interactive'], interactiveUseRawJson: [false] },
389
343
  },
390
344
  },
391
345
  // Interactive: Header type (optional)
@@ -403,7 +357,7 @@ class Whaapy {
403
357
  ],
404
358
  description: 'Optional header for the message',
405
359
  displayOptions: {
406
- show: { resource: ['message'], operation: ['send'], messageType: ['interactive'] },
360
+ show: { resource: ['message'], operation: ['send'], messageType: ['interactive'], interactiveUseRawJson: [false] },
407
361
  },
408
362
  },
409
363
  // Interactive: Header text (if type=text)
@@ -420,6 +374,7 @@ class Whaapy {
420
374
  operation: ['send'],
421
375
  messageType: ['interactive'],
422
376
  interactiveHeaderType: ['text'],
377
+ interactiveUseRawJson: [false],
423
378
  },
424
379
  },
425
380
  },
@@ -437,6 +392,7 @@ class Whaapy {
437
392
  operation: ['send'],
438
393
  messageType: ['interactive'],
439
394
  interactiveHeaderType: ['image', 'video', 'document'],
395
+ interactiveUseRawJson: [false],
440
396
  },
441
397
  },
442
398
  },
@@ -447,9 +403,9 @@ class Whaapy {
447
403
  type: 'string',
448
404
  default: '',
449
405
  placeholder: 'Responde con una opción',
450
- description: 'Optional footer text in gray. Max 60 characters.',
406
+ description: 'Optional footer text in gray. Max 60 characters. Leave empty to omit.',
451
407
  displayOptions: {
452
- show: { resource: ['message'], operation: ['send'], messageType: ['interactive'] },
408
+ show: { resource: ['message'], operation: ['send'], messageType: ['interactive'], interactiveUseRawJson: [false] },
453
409
  },
454
410
  },
455
411
  // Interactive: Buttons (if type=button)
@@ -469,6 +425,7 @@ class Whaapy {
469
425
  operation: ['send'],
470
426
  messageType: ['interactive'],
471
427
  interactiveType: ['button'],
428
+ interactiveUseRawJson: [false],
472
429
  },
473
430
  },
474
431
  options: [
@@ -512,6 +469,7 @@ class Whaapy {
512
469
  operation: ['send'],
513
470
  messageType: ['interactive'],
514
471
  interactiveType: ['list'],
472
+ interactiveUseRawJson: [false],
515
473
  },
516
474
  },
517
475
  },
@@ -532,6 +490,7 @@ class Whaapy {
532
490
  operation: ['send'],
533
491
  messageType: ['interactive'],
534
492
  interactiveType: ['list'],
493
+ interactiveUseRawJson: [false],
535
494
  },
536
495
  },
537
496
  options: [
@@ -630,10 +589,7 @@ class Whaapy {
630
589
  default: 0,
631
590
  displayOptions: {
632
591
  show: { resource: ['message'], operation: ['send'], messageType: ['location'] },
633
- },
634
- routing: {
635
- send: { type: 'body', property: 'location.latitude' },
636
- },
592
+ }
637
593
  },
638
594
  {
639
595
  displayName: 'Longitude',
@@ -643,10 +599,7 @@ class Whaapy {
643
599
  default: 0,
644
600
  displayOptions: {
645
601
  show: { resource: ['message'], operation: ['send'], messageType: ['location'] },
646
- },
647
- routing: {
648
- send: { type: 'body', property: 'location.longitude' },
649
- },
602
+ }
650
603
  },
651
604
  {
652
605
  displayName: 'Location Name',
@@ -655,10 +608,7 @@ class Whaapy {
655
608
  default: '',
656
609
  displayOptions: {
657
610
  show: { resource: ['message'], operation: ['send'], messageType: ['location'] },
658
- },
659
- routing: {
660
- send: { type: 'body', property: 'location.name' },
661
- },
611
+ }
662
612
  },
663
613
  // Message: Send - Contacts
664
614
  {
@@ -688,10 +638,7 @@ class Whaapy {
688
638
  description: 'Array of contact cards to send. Each contact needs: name.formatted_name (required), phones[].phone (required). Optional: emails, org, addresses.',
689
639
  displayOptions: {
690
640
  show: { resource: ['message'], operation: ['send'], messageType: ['contacts'] },
691
- },
692
- routing: {
693
- send: { type: 'body', property: 'contacts' },
694
- },
641
+ }
695
642
  },
696
643
  // Message: Send - Reaction
697
644
  {
@@ -702,10 +649,7 @@ class Whaapy {
702
649
  default: '',
703
650
  displayOptions: {
704
651
  show: { resource: ['message'], operation: ['send'], messageType: ['reaction'] },
705
- },
706
- routing: {
707
- send: { type: 'body', property: 'reaction.message_id' },
708
- },
652
+ }
709
653
  },
710
654
  {
711
655
  displayName: 'Emoji',
@@ -715,10 +659,7 @@ class Whaapy {
715
659
  default: '👍',
716
660
  displayOptions: {
717
661
  show: { resource: ['message'], operation: ['send'], messageType: ['reaction'] },
718
- },
719
- routing: {
720
- send: { type: 'body', property: 'reaction.emoji' },
721
- },
662
+ }
722
663
  },
723
664
  // Message: Send - Additional Fields
724
665
  {
@@ -736,60 +677,42 @@ class Whaapy {
736
677
  name: 'pauseAi',
737
678
  type: 'boolean',
738
679
  default: false,
739
- description: 'Pause AI after sending this message',
740
- routing: {
741
- send: { type: 'body', property: 'ai.pause' },
742
- },
680
+ description: 'Pause AI after sending this message'
743
681
  },
744
682
  {
745
683
  displayName: 'Pause Duration (Minutes)',
746
684
  name: 'pauseDuration',
747
685
  type: 'number',
748
686
  default: 5,
749
- description: 'How long to pause AI (1-1440 minutes)',
750
- routing: {
751
- send: { type: 'body', property: 'ai.pauseDuration' },
752
- },
687
+ description: 'How long to pause AI (1-1440 minutes)'
753
688
  },
754
689
  {
755
690
  displayName: 'Disable AI',
756
691
  name: 'disableAi',
757
692
  type: 'boolean',
758
693
  default: false,
759
- description: 'Permanently disable AI for this conversation',
760
- routing: {
761
- send: { type: 'body', property: 'ai.disable' },
762
- },
694
+ description: 'Permanently disable AI for this conversation'
763
695
  },
764
696
  {
765
697
  displayName: 'Reply To Message ID',
766
698
  name: 'replyTo',
767
699
  type: 'string',
768
700
  default: '',
769
- description: 'Message ID to reply to',
770
- routing: {
771
- send: { type: 'body', property: 'context.message_id' },
772
- },
701
+ description: 'Message ID to reply to'
773
702
  },
774
703
  {
775
704
  displayName: 'Create Conversation',
776
705
  name: 'createConversation',
777
706
  type: 'boolean',
778
707
  default: true,
779
- description: 'Create a conversation if it doesn\'t exist',
780
- routing: {
781
- send: { type: 'body', property: 'createConversation' },
782
- },
708
+ description: 'Create a conversation if it doesn\'t exist'
783
709
  },
784
710
  {
785
711
  displayName: 'Metadata',
786
712
  name: 'metadata',
787
713
  type: 'json',
788
714
  default: '{}',
789
- description: 'Custom metadata to attach to the message',
790
- routing: {
791
- send: { type: 'body', property: 'metadata' },
792
- },
715
+ description: 'Custom metadata to attach to the message'
793
716
  },
794
717
  ],
795
718
  },
@@ -821,13 +744,7 @@ class Whaapy {
821
744
  name: 'Upload',
822
745
  value: 'upload',
823
746
  action: 'Upload media',
824
- description: 'Upload media to WhatsApp CDN',
825
- routing: {
826
- request: {
827
- method: 'POST',
828
- url: '/media/v1',
829
- },
830
- },
747
+ description: 'Upload media to WhatsApp CDN'
831
748
  },
832
749
  ],
833
750
  default: 'upload',
@@ -848,10 +765,7 @@ class Whaapy {
848
765
  default: 'image',
849
766
  displayOptions: {
850
767
  show: { resource: ['media'], operation: ['upload'] },
851
- },
852
- routing: {
853
- send: { type: 'body', property: 'type' },
854
- },
768
+ }
855
769
  },
856
770
  // Media: Upload - Binary property
857
771
  {
@@ -881,121 +795,61 @@ class Whaapy {
881
795
  name: 'List',
882
796
  value: 'list',
883
797
  action: 'List conversations',
884
- description: 'Get all conversations',
885
- routing: {
886
- request: {
887
- method: 'GET',
888
- url: '/conversations/v1',
889
- },
890
- },
798
+ description: 'Get all conversations'
891
799
  },
892
800
  {
893
801
  name: 'Get',
894
802
  value: 'get',
895
803
  action: 'Get a conversation',
896
804
  description: 'Get a specific conversation',
897
- routing: {
898
- request: {
899
- method: 'GET',
900
- url: '=/conversations/v1/{{$parameter.conversationId}}',
901
- },
902
- },
903
805
  },
904
806
  {
905
807
  name: 'Get by Phone',
906
808
  value: 'getByPhone',
907
809
  action: 'Get conversation by phone',
908
810
  description: 'Find conversation by phone number',
909
- routing: {
910
- request: {
911
- method: 'GET',
912
- url: '=/conversations/v1/by-phone/{{$parameter.phoneNumber}}',
913
- },
914
- },
915
811
  },
916
812
  {
917
813
  name: 'Get Messages',
918
814
  value: 'getMessages',
919
815
  action: 'Get conversation messages',
920
816
  description: 'Get message history of a conversation',
921
- routing: {
922
- request: {
923
- method: 'GET',
924
- url: '=/conversations/v1/{{$parameter.conversationId}}/messages',
925
- },
926
- },
927
817
  },
928
818
  {
929
819
  name: 'Close',
930
820
  value: 'close',
931
821
  action: 'Close a conversation',
932
822
  description: 'Close a conversation',
933
- routing: {
934
- request: {
935
- method: 'POST',
936
- url: '=/conversations/v1/{{$parameter.conversationId}}/close',
937
- },
938
- },
939
823
  },
940
824
  {
941
825
  name: 'Archive',
942
826
  value: 'archive',
943
827
  action: 'Archive a conversation',
944
828
  description: 'Archive a conversation',
945
- routing: {
946
- request: {
947
- method: 'POST',
948
- url: '=/conversations/v1/{{$parameter.conversationId}}/archive',
949
- },
950
- },
951
829
  },
952
830
  {
953
831
  name: 'Mark Read',
954
832
  value: 'markRead',
955
833
  action: 'Mark conversation as read',
956
834
  description: 'Mark a conversation as read',
957
- routing: {
958
- request: {
959
- method: 'PATCH',
960
- url: '=/conversations/v1/{{$parameter.conversationId}}/mark-read',
961
- },
962
- },
963
835
  },
964
836
  {
965
837
  name: 'Set AI',
966
838
  value: 'setAi',
967
839
  action: 'Enable/disable AI',
968
840
  description: 'Enable or disable AI for a conversation',
969
- routing: {
970
- request: {
971
- method: 'PATCH',
972
- url: '=/conversations/v1/{{$parameter.conversationId}}/ai',
973
- },
974
- },
975
841
  },
976
842
  {
977
843
  name: 'Pause AI',
978
844
  value: 'pauseAi',
979
845
  action: 'Pause AI temporarily',
980
846
  description: 'Pause AI for a conversation',
981
- routing: {
982
- request: {
983
- method: 'POST',
984
- url: '=/conversations/v1/{{$parameter.conversationId}}/ai/pause',
985
- },
986
- },
987
847
  },
988
848
  {
989
849
  name: 'AI Suggest',
990
850
  value: 'aiSuggest',
991
851
  action: 'Get AI suggestion',
992
852
  description: 'Get an AI suggestion without sending',
993
- routing: {
994
- request: {
995
- method: 'POST',
996
- url: '=/conversations/v1/{{$parameter.conversationId}}/ai-suggest',
997
- },
998
- },
999
853
  },
1000
854
  ],
1001
855
  default: 'list',
@@ -1035,10 +889,7 @@ class Whaapy {
1035
889
  default: true,
1036
890
  displayOptions: {
1037
891
  show: { resource: ['conversation'], operation: ['setAi'] },
1038
- },
1039
- routing: {
1040
- send: { type: 'body', property: 'aiEnabled' },
1041
- },
892
+ }
1042
893
  },
1043
894
  // Conversation: Pause AI - Duration
1044
895
  {
@@ -1050,10 +901,7 @@ class Whaapy {
1050
901
  description: 'How long to pause AI (1-1440 minutes)',
1051
902
  displayOptions: {
1052
903
  show: { resource: ['conversation'], operation: ['pauseAi'] },
1053
- },
1054
- routing: {
1055
- send: { type: 'body', property: 'duration' },
1056
- },
904
+ }
1057
905
  },
1058
906
  // Conversation: List - Filters
1059
907
  {
@@ -1071,10 +919,7 @@ class Whaapy {
1071
919
  name: 'search',
1072
920
  type: 'string',
1073
921
  default: '',
1074
- description: 'Search by name or phone',
1075
- routing: {
1076
- send: { type: 'query', property: 'search' },
1077
- },
922
+ description: 'Search by name or phone'
1078
923
  },
1079
924
  {
1080
925
  displayName: 'Status',
@@ -1086,29 +931,20 @@ class Whaapy {
1086
931
  { name: 'Closed', value: 'closed' },
1087
932
  { name: 'Archived', value: 'archived' },
1088
933
  ],
1089
- default: 'all',
1090
- routing: {
1091
- send: { type: 'query', property: 'status' },
1092
- },
934
+ default: 'all'
1093
935
  },
1094
936
  {
1095
937
  displayName: 'Limit',
1096
938
  name: 'limit',
1097
939
  type: 'number',
1098
940
  default: 20,
1099
- description: 'Max results (1-100)',
1100
- routing: {
1101
- send: { type: 'query', property: 'limit' },
1102
- },
941
+ description: 'Max results (1-100)'
1103
942
  },
1104
943
  {
1105
944
  displayName: 'Offset',
1106
945
  name: 'offset',
1107
946
  type: 'number',
1108
- default: 0,
1109
- routing: {
1110
- send: { type: 'query', property: 'offset' },
1111
- },
947
+ default: 0
1112
948
  },
1113
949
  ],
1114
950
  },
@@ -1127,20 +963,14 @@ class Whaapy {
1127
963
  displayName: 'Limit',
1128
964
  name: 'limit',
1129
965
  type: 'number',
1130
- default: 50,
1131
- routing: {
1132
- send: { type: 'query', property: 'limit' },
1133
- },
966
+ default: 50
1134
967
  },
1135
968
  {
1136
969
  displayName: 'Cursor',
1137
970
  name: 'cursor',
1138
971
  type: 'string',
1139
972
  default: '',
1140
- description: 'Pagination cursor',
1141
- routing: {
1142
- send: { type: 'query', property: 'cursor' },
1143
- },
973
+ description: 'Pagination cursor'
1144
974
  },
1145
975
  ],
1146
976
  },
@@ -1160,25 +990,13 @@ class Whaapy {
1160
990
  name: 'Toggle',
1161
991
  value: 'toggle',
1162
992
  action: 'Toggle AI globally',
1163
- description: 'Enable or disable AI globally',
1164
- routing: {
1165
- request: {
1166
- method: 'POST',
1167
- url: '/agent/v1/toggle',
1168
- },
1169
- },
993
+ description: 'Enable or disable AI globally'
1170
994
  },
1171
995
  {
1172
996
  name: 'Pause',
1173
997
  value: 'pause',
1174
998
  action: 'Pause AI globally',
1175
- description: 'Pause AI globally for X minutes',
1176
- routing: {
1177
- request: {
1178
- method: 'POST',
1179
- url: '/agent/v1/pause',
1180
- },
1181
- },
999
+ description: 'Pause AI globally for X minutes'
1182
1000
  },
1183
1001
  ],
1184
1002
  default: 'toggle',
@@ -1192,10 +1010,7 @@ class Whaapy {
1192
1010
  default: true,
1193
1011
  displayOptions: {
1194
1012
  show: { resource: ['agent'], operation: ['toggle'] },
1195
- },
1196
- routing: {
1197
- send: { type: 'body', property: 'enabled' },
1198
- },
1013
+ }
1199
1014
  },
1200
1015
  // Agent: Pause - Duration
1201
1016
  {
@@ -1207,10 +1022,7 @@ class Whaapy {
1207
1022
  description: 'How long to pause AI globally',
1208
1023
  displayOptions: {
1209
1024
  show: { resource: ['agent'], operation: ['pause'] },
1210
- },
1211
- routing: {
1212
- send: { type: 'body', property: 'duration' },
1213
- },
1025
+ }
1214
1026
  },
1215
1027
  // ===========================================
1216
1028
  // TEMPLATE OPERATIONS
@@ -1228,49 +1040,25 @@ class Whaapy {
1228
1040
  name: 'List',
1229
1041
  value: 'list',
1230
1042
  action: 'List templates',
1231
- description: 'Get all WhatsApp templates',
1232
- routing: {
1233
- request: {
1234
- method: 'GET',
1235
- url: '/templates/v1',
1236
- },
1237
- },
1043
+ description: 'Get all WhatsApp templates'
1238
1044
  },
1239
1045
  {
1240
1046
  name: 'Get',
1241
1047
  value: 'get',
1242
1048
  action: 'Get a template',
1243
1049
  description: 'Get a specific template',
1244
- routing: {
1245
- request: {
1246
- method: 'GET',
1247
- url: '=/templates/v1/{{$parameter.templateId}}',
1248
- },
1249
- },
1250
1050
  },
1251
1051
  {
1252
1052
  name: 'Get Variables',
1253
1053
  value: 'getVariables',
1254
1054
  action: 'Get template variables',
1255
- description: 'Get available template variables',
1256
- routing: {
1257
- request: {
1258
- method: 'GET',
1259
- url: '/templates/v1/variables',
1260
- },
1261
- },
1055
+ description: 'Get available template variables'
1262
1056
  },
1263
1057
  {
1264
1058
  name: 'Sync',
1265
1059
  value: 'sync',
1266
1060
  action: 'Sync templates',
1267
- description: 'Sync templates from Meta',
1268
- routing: {
1269
- request: {
1270
- method: 'POST',
1271
- url: '/templates/v1/sync',
1272
- },
1273
- },
1061
+ description: 'Sync templates from Meta'
1274
1062
  },
1275
1063
  ],
1276
1064
  default: 'list',
@@ -1302,28 +1090,19 @@ class Whaapy {
1302
1090
  name: 'status',
1303
1091
  type: 'string',
1304
1092
  default: '',
1305
- description: 'Filter by template status',
1306
- routing: {
1307
- send: { type: 'query', property: 'status' },
1308
- },
1093
+ description: 'Filter by template status'
1309
1094
  },
1310
1095
  {
1311
1096
  displayName: 'Limit',
1312
1097
  name: 'limit',
1313
1098
  type: 'number',
1314
- default: 20,
1315
- routing: {
1316
- send: { type: 'query', property: 'limit' },
1317
- },
1099
+ default: 20
1318
1100
  },
1319
1101
  {
1320
1102
  displayName: 'Offset',
1321
1103
  name: 'offset',
1322
1104
  type: 'number',
1323
- default: 0,
1324
- routing: {
1325
- send: { type: 'query', property: 'offset' },
1326
- },
1105
+ default: 0
1327
1106
  },
1328
1107
  ],
1329
1108
  },
@@ -1343,121 +1122,61 @@ class Whaapy {
1343
1122
  name: 'List',
1344
1123
  value: 'list',
1345
1124
  action: 'List contacts',
1346
- description: 'Get all contacts',
1347
- routing: {
1348
- request: {
1349
- method: 'GET',
1350
- url: '/contacts/v1',
1351
- },
1352
- },
1125
+ description: 'Get all contacts'
1353
1126
  },
1354
1127
  {
1355
1128
  name: 'Get',
1356
1129
  value: 'get',
1357
1130
  action: 'Get a contact',
1358
1131
  description: 'Get a specific contact',
1359
- routing: {
1360
- request: {
1361
- method: 'GET',
1362
- url: '=/contacts/v1/{{$parameter.contactId}}',
1363
- },
1364
- },
1365
1132
  },
1366
1133
  {
1367
1134
  name: 'Create',
1368
1135
  value: 'create',
1369
1136
  action: 'Create a contact',
1370
- description: 'Create a new contact',
1371
- routing: {
1372
- request: {
1373
- method: 'POST',
1374
- url: '/contacts/v1',
1375
- },
1376
- },
1137
+ description: 'Create a new contact'
1377
1138
  },
1378
1139
  {
1379
1140
  name: 'Update',
1380
1141
  value: 'update',
1381
1142
  action: 'Update a contact',
1382
1143
  description: 'Update an existing contact',
1383
- routing: {
1384
- request: {
1385
- method: 'PATCH',
1386
- url: '=/contacts/v1/{{$parameter.contactId}}',
1387
- },
1388
- },
1389
1144
  },
1390
1145
  {
1391
1146
  name: 'Delete',
1392
1147
  value: 'delete',
1393
1148
  action: 'Delete a contact',
1394
1149
  description: 'Delete a contact',
1395
- routing: {
1396
- request: {
1397
- method: 'DELETE',
1398
- url: '=/contacts/v1/{{$parameter.contactId}}',
1399
- },
1400
- },
1401
1150
  },
1402
1151
  {
1403
1152
  name: 'Search',
1404
1153
  value: 'search',
1405
1154
  action: 'Search contacts',
1406
- description: 'Advanced search for contacts',
1407
- routing: {
1408
- request: {
1409
- method: 'POST',
1410
- url: '/contacts/v1/search',
1411
- },
1412
- },
1155
+ description: 'Advanced search for contacts'
1413
1156
  },
1414
1157
  {
1415
1158
  name: 'Bulk',
1416
1159
  value: 'bulk',
1417
1160
  action: 'Bulk operations',
1418
- description: 'Perform bulk operations on contacts',
1419
- routing: {
1420
- request: {
1421
- method: 'POST',
1422
- url: '/contacts/v1/bulk',
1423
- },
1424
- },
1161
+ description: 'Perform bulk operations on contacts'
1425
1162
  },
1426
1163
  {
1427
1164
  name: 'Merge',
1428
1165
  value: 'merge',
1429
1166
  action: 'Merge contacts',
1430
1167
  description: 'Merge two contacts',
1431
- routing: {
1432
- request: {
1433
- method: 'POST',
1434
- url: '=/contacts/v1/{{$parameter.contactId}}/merge',
1435
- },
1436
- },
1437
1168
  },
1438
1169
  {
1439
1170
  name: 'Get Tags',
1440
1171
  value: 'getTags',
1441
1172
  action: 'Get all tags',
1442
- description: 'Get all available tags',
1443
- routing: {
1444
- request: {
1445
- method: 'GET',
1446
- url: '/contacts/v1/tags',
1447
- },
1448
- },
1173
+ description: 'Get all available tags'
1449
1174
  },
1450
1175
  {
1451
1176
  name: 'Get Fields',
1452
1177
  value: 'getFields',
1453
1178
  action: 'Get custom fields',
1454
- description: 'Get available custom fields',
1455
- routing: {
1456
- request: {
1457
- method: 'GET',
1458
- url: '/contacts/v1/fields',
1459
- },
1460
- },
1179
+ description: 'Get available custom fields'
1461
1180
  },
1462
1181
  ],
1463
1182
  default: 'list',
@@ -1485,10 +1204,7 @@ class Whaapy {
1485
1204
  default: '',
1486
1205
  displayOptions: {
1487
1206
  show: { resource: ['contact'], operation: ['create'] },
1488
- },
1489
- routing: {
1490
- send: { type: 'body', property: 'name' },
1491
- },
1207
+ }
1492
1208
  },
1493
1209
  {
1494
1210
  displayName: 'Phone Number',
@@ -1499,10 +1215,7 @@ class Whaapy {
1499
1215
  placeholder: '+5215512345678',
1500
1216
  displayOptions: {
1501
1217
  show: { resource: ['contact'], operation: ['create'] },
1502
- },
1503
- routing: {
1504
- send: { type: 'body', property: 'phoneNumber' },
1505
- },
1218
+ }
1506
1219
  },
1507
1220
  {
1508
1221
  displayName: 'Additional Fields',
@@ -1518,38 +1231,26 @@ class Whaapy {
1518
1231
  displayName: 'Email',
1519
1232
  name: 'email',
1520
1233
  type: 'string',
1521
- default: '',
1522
- routing: {
1523
- send: { type: 'body', property: 'email' },
1524
- },
1234
+ default: ''
1525
1235
  },
1526
1236
  {
1527
1237
  displayName: 'Tags',
1528
1238
  name: 'tags',
1529
1239
  type: 'string',
1530
1240
  default: '',
1531
- description: 'Comma-separated list of tags',
1532
- routing: {
1533
- send: { type: 'body', property: 'tags' },
1534
- },
1241
+ description: 'Comma-separated list of tags'
1535
1242
  },
1536
1243
  {
1537
1244
  displayName: 'Custom Fields',
1538
1245
  name: 'customFields',
1539
1246
  type: 'json',
1540
- default: '{}',
1541
- routing: {
1542
- send: { type: 'body', property: 'customFields' },
1543
- },
1247
+ default: '{}'
1544
1248
  },
1545
1249
  {
1546
1250
  displayName: 'Metadata',
1547
1251
  name: 'metadata',
1548
1252
  type: 'json',
1549
- default: '{}',
1550
- routing: {
1551
- send: { type: 'body', property: 'metadata' },
1552
- },
1253
+ default: '{}'
1553
1254
  },
1554
1255
  ],
1555
1256
  },
@@ -1568,47 +1269,32 @@ class Whaapy {
1568
1269
  displayName: 'Name',
1569
1270
  name: 'name',
1570
1271
  type: 'string',
1571
- default: '',
1572
- routing: {
1573
- send: { type: 'body', property: 'name' },
1574
- },
1272
+ default: ''
1575
1273
  },
1576
1274
  {
1577
1275
  displayName: 'Phone Number',
1578
1276
  name: 'phoneNumber',
1579
1277
  type: 'string',
1580
- default: '',
1581
- routing: {
1582
- send: { type: 'body', property: 'phoneNumber' },
1583
- },
1278
+ default: ''
1584
1279
  },
1585
1280
  {
1586
1281
  displayName: 'Email',
1587
1282
  name: 'email',
1588
1283
  type: 'string',
1589
- default: '',
1590
- routing: {
1591
- send: { type: 'body', property: 'email' },
1592
- },
1284
+ default: ''
1593
1285
  },
1594
1286
  {
1595
1287
  displayName: 'Tags',
1596
1288
  name: 'tags',
1597
1289
  type: 'string',
1598
1290
  default: '',
1599
- description: 'Comma-separated list of tags',
1600
- routing: {
1601
- send: { type: 'body', property: 'tags' },
1602
- },
1291
+ description: 'Comma-separated list of tags'
1603
1292
  },
1604
1293
  {
1605
1294
  displayName: 'Custom Fields',
1606
1295
  name: 'customFields',
1607
1296
  type: 'json',
1608
- default: '{}',
1609
- routing: {
1610
- send: { type: 'body', property: 'customFields' },
1611
- },
1297
+ default: '{}'
1612
1298
  },
1613
1299
  ],
1614
1300
  },
@@ -1621,10 +1307,7 @@ class Whaapy {
1621
1307
  default: '',
1622
1308
  displayOptions: {
1623
1309
  show: { resource: ['contact'], operation: ['search'] },
1624
- },
1625
- routing: {
1626
- send: { type: 'body', property: 'query' },
1627
- },
1310
+ }
1628
1311
  },
1629
1312
  {
1630
1313
  displayName: 'Search Options',
@@ -1640,28 +1323,19 @@ class Whaapy {
1640
1323
  displayName: 'Filters',
1641
1324
  name: 'filters',
1642
1325
  type: 'json',
1643
- default: '{}',
1644
- routing: {
1645
- send: { type: 'body', property: 'filters' },
1646
- },
1326
+ default: '{}'
1647
1327
  },
1648
1328
  {
1649
1329
  displayName: 'Limit',
1650
1330
  name: 'limit',
1651
1331
  type: 'number',
1652
- default: 20,
1653
- routing: {
1654
- send: { type: 'body', property: 'limit' },
1655
- },
1332
+ default: 20
1656
1333
  },
1657
1334
  {
1658
1335
  displayName: 'Cursor',
1659
1336
  name: 'cursor',
1660
1337
  type: 'string',
1661
- default: '',
1662
- routing: {
1663
- send: { type: 'body', property: 'cursor' },
1664
- },
1338
+ default: ''
1665
1339
  },
1666
1340
  ],
1667
1341
  },
@@ -1681,10 +1355,7 @@ class Whaapy {
1681
1355
  default: 'create',
1682
1356
  displayOptions: {
1683
1357
  show: { resource: ['contact'], operation: ['bulk'] },
1684
- },
1685
- routing: {
1686
- send: { type: 'body', property: 'operation' },
1687
- },
1358
+ }
1688
1359
  },
1689
1360
  {
1690
1361
  displayName: 'Contacts Data',
@@ -1695,10 +1366,7 @@ class Whaapy {
1695
1366
  description: 'Array of contacts or contact IDs',
1696
1367
  displayOptions: {
1697
1368
  show: { resource: ['contact'], operation: ['bulk'] },
1698
- },
1699
- routing: {
1700
- send: { type: 'body', property: 'contacts' },
1701
- },
1369
+ }
1702
1370
  },
1703
1371
  {
1704
1372
  displayName: 'Operation Data',
@@ -1708,10 +1376,7 @@ class Whaapy {
1708
1376
  description: 'Additional data for the operation',
1709
1377
  displayOptions: {
1710
1378
  show: { resource: ['contact'], operation: ['bulk'] },
1711
- },
1712
- routing: {
1713
- send: { type: 'body', property: 'data' },
1714
- },
1379
+ }
1715
1380
  },
1716
1381
  // Contact: Merge - Merge With ID
1717
1382
  {
@@ -1723,10 +1388,7 @@ class Whaapy {
1723
1388
  description: 'ID of the contact to merge into the primary contact',
1724
1389
  displayOptions: {
1725
1390
  show: { resource: ['contact'], operation: ['merge'] },
1726
- },
1727
- routing: {
1728
- send: { type: 'body', property: 'mergeWith' },
1729
- },
1391
+ }
1730
1392
  },
1731
1393
  // Contact: List - Filters
1732
1394
  {
@@ -1743,38 +1405,26 @@ class Whaapy {
1743
1405
  displayName: 'Search',
1744
1406
  name: 'search',
1745
1407
  type: 'string',
1746
- default: '',
1747
- routing: {
1748
- send: { type: 'query', property: 'search' },
1749
- },
1408
+ default: ''
1750
1409
  },
1751
1410
  {
1752
1411
  displayName: 'Tags',
1753
1412
  name: 'tags',
1754
1413
  type: 'string',
1755
1414
  default: '',
1756
- description: 'Comma-separated list of tags',
1757
- routing: {
1758
- send: { type: 'query', property: 'tags' },
1759
- },
1415
+ description: 'Comma-separated list of tags'
1760
1416
  },
1761
1417
  {
1762
1418
  displayName: 'Funnel Stage ID',
1763
1419
  name: 'funnelStageId',
1764
1420
  type: 'string',
1765
- default: '',
1766
- routing: {
1767
- send: { type: 'query', property: 'funnel_stage_id' },
1768
- },
1421
+ default: ''
1769
1422
  },
1770
1423
  {
1771
1424
  displayName: 'Source',
1772
1425
  name: 'source',
1773
1426
  type: 'string',
1774
- default: '',
1775
- routing: {
1776
- send: { type: 'query', property: 'source' },
1777
- },
1427
+ default: ''
1778
1428
  },
1779
1429
  {
1780
1430
  displayName: 'Sort By',
@@ -1785,10 +1435,7 @@ class Whaapy {
1785
1435
  { name: 'Updated At', value: 'updated_at' },
1786
1436
  { name: 'Name', value: 'name' },
1787
1437
  ],
1788
- default: 'created_at',
1789
- routing: {
1790
- send: { type: 'query', property: 'sort_by' },
1791
- },
1438
+ default: 'created_at'
1792
1439
  },
1793
1440
  {
1794
1441
  displayName: 'Sort Order',
@@ -1798,28 +1445,19 @@ class Whaapy {
1798
1445
  { name: 'Ascending', value: 'asc' },
1799
1446
  { name: 'Descending', value: 'desc' },
1800
1447
  ],
1801
- default: 'desc',
1802
- routing: {
1803
- send: { type: 'query', property: 'sort_order' },
1804
- },
1448
+ default: 'desc'
1805
1449
  },
1806
1450
  {
1807
1451
  displayName: 'Limit',
1808
1452
  name: 'limit',
1809
1453
  type: 'number',
1810
- default: 20,
1811
- routing: {
1812
- send: { type: 'query', property: 'limit' },
1813
- },
1454
+ default: 20
1814
1455
  },
1815
1456
  {
1816
1457
  displayName: 'Cursor',
1817
1458
  name: 'cursor',
1818
1459
  type: 'string',
1819
- default: '',
1820
- routing: {
1821
- send: { type: 'query', property: 'cursor' },
1822
- },
1460
+ default: ''
1823
1461
  },
1824
1462
  ],
1825
1463
  },
@@ -1839,85 +1477,43 @@ class Whaapy {
1839
1477
  name: 'List Stages',
1840
1478
  value: 'listStages',
1841
1479
  action: 'List funnel stages',
1842
- description: 'Get all funnel stages',
1843
- routing: {
1844
- request: {
1845
- method: 'GET',
1846
- url: '/funnel/v1/stages',
1847
- },
1848
- },
1480
+ description: 'Get all funnel stages'
1849
1481
  },
1850
1482
  {
1851
1483
  name: 'Get Stage',
1852
1484
  value: 'getStage',
1853
1485
  action: 'Get a funnel stage',
1854
1486
  description: 'Get a specific funnel stage',
1855
- routing: {
1856
- request: {
1857
- method: 'GET',
1858
- url: '=/funnel/v1/stages/{{$parameter.stageId}}',
1859
- },
1860
- },
1861
1487
  },
1862
1488
  {
1863
1489
  name: 'Create Stage',
1864
1490
  value: 'createStage',
1865
1491
  action: 'Create a funnel stage',
1866
- description: 'Create a new funnel stage',
1867
- routing: {
1868
- request: {
1869
- method: 'POST',
1870
- url: '/funnel/v1/stages',
1871
- },
1872
- },
1492
+ description: 'Create a new funnel stage'
1873
1493
  },
1874
1494
  {
1875
1495
  name: 'Update Stage',
1876
1496
  value: 'updateStage',
1877
1497
  action: 'Update a funnel stage',
1878
1498
  description: 'Update an existing funnel stage',
1879
- routing: {
1880
- request: {
1881
- method: 'PATCH',
1882
- url: '=/funnel/v1/stages/{{$parameter.stageId}}',
1883
- },
1884
- },
1885
1499
  },
1886
1500
  {
1887
1501
  name: 'Delete Stage',
1888
1502
  value: 'deleteStage',
1889
1503
  action: 'Delete a funnel stage',
1890
1504
  description: 'Delete a funnel stage',
1891
- routing: {
1892
- request: {
1893
- method: 'DELETE',
1894
- url: '=/funnel/v1/stages/{{$parameter.stageId}}',
1895
- },
1896
- },
1897
1505
  },
1898
1506
  {
1899
1507
  name: 'Reorder Stages',
1900
1508
  value: 'reorderStages',
1901
1509
  action: 'Reorder funnel stages',
1902
- description: 'Reorder the funnel stages',
1903
- routing: {
1904
- request: {
1905
- method: 'PATCH',
1906
- url: '/funnel/v1/stages/reorder',
1907
- },
1908
- },
1510
+ description: 'Reorder the funnel stages'
1909
1511
  },
1910
1512
  {
1911
1513
  name: 'Move Contact',
1912
1514
  value: 'moveContact',
1913
1515
  action: 'Move contact to stage',
1914
1516
  description: 'Move a contact to a funnel stage',
1915
- routing: {
1916
- request: {
1917
- method: 'POST',
1918
- url: '=/funnel/v1/contacts/{{$parameter.contactIdFunnel}}/move',
1919
- },
1920
- },
1921
1517
  },
1922
1518
  ],
1923
1519
  default: 'listStages',
@@ -1945,10 +1541,7 @@ class Whaapy {
1945
1541
  default: '',
1946
1542
  displayOptions: {
1947
1543
  show: { resource: ['funnel'], operation: ['createStage'] },
1948
- },
1949
- routing: {
1950
- send: { type: 'body', property: 'name' },
1951
- },
1544
+ }
1952
1545
  },
1953
1546
  {
1954
1547
  displayName: 'Stage Options',
@@ -1964,29 +1557,20 @@ class Whaapy {
1964
1557
  displayName: 'Position',
1965
1558
  name: 'position',
1966
1559
  type: 'number',
1967
- default: 0,
1968
- routing: {
1969
- send: { type: 'body', property: 'position' },
1970
- },
1560
+ default: 0
1971
1561
  },
1972
1562
  {
1973
1563
  displayName: 'Color',
1974
1564
  name: 'color',
1975
1565
  type: 'string',
1976
1566
  default: '#3B82F6',
1977
- description: 'Hex color code',
1978
- routing: {
1979
- send: { type: 'body', property: 'color' },
1980
- },
1567
+ description: 'Hex color code'
1981
1568
  },
1982
1569
  {
1983
1570
  displayName: 'Description',
1984
1571
  name: 'description',
1985
1572
  type: 'string',
1986
- default: '',
1987
- routing: {
1988
- send: { type: 'body', property: 'description' },
1989
- },
1573
+ default: ''
1990
1574
  },
1991
1575
  ],
1992
1576
  },
@@ -2005,37 +1589,25 @@ class Whaapy {
2005
1589
  displayName: 'Name',
2006
1590
  name: 'name',
2007
1591
  type: 'string',
2008
- default: '',
2009
- routing: {
2010
- send: { type: 'body', property: 'name' },
2011
- },
1592
+ default: ''
2012
1593
  },
2013
1594
  {
2014
1595
  displayName: 'Position',
2015
1596
  name: 'position',
2016
1597
  type: 'number',
2017
- default: 0,
2018
- routing: {
2019
- send: { type: 'body', property: 'position' },
2020
- },
1598
+ default: 0
2021
1599
  },
2022
1600
  {
2023
1601
  displayName: 'Color',
2024
1602
  name: 'color',
2025
1603
  type: 'string',
2026
- default: '',
2027
- routing: {
2028
- send: { type: 'body', property: 'color' },
2029
- },
1604
+ default: ''
2030
1605
  },
2031
1606
  {
2032
1607
  displayName: 'Description',
2033
1608
  name: 'description',
2034
1609
  type: 'string',
2035
- default: '',
2036
- routing: {
2037
- send: { type: 'body', property: 'description' },
2038
- },
1610
+ default: ''
2039
1611
  },
2040
1612
  ],
2041
1613
  },
@@ -2049,10 +1621,7 @@ class Whaapy {
2049
1621
  description: 'Array of objects with id and position',
2050
1622
  displayOptions: {
2051
1623
  show: { resource: ['funnel'], operation: ['reorderStages'] },
2052
- },
2053
- routing: {
2054
- send: { type: 'body', property: 'stages' },
2055
- },
1624
+ }
2056
1625
  },
2057
1626
  // Funnel: Move Contact - Fields
2058
1627
  {
@@ -2073,10 +1642,7 @@ class Whaapy {
2073
1642
  default: '',
2074
1643
  displayOptions: {
2075
1644
  show: { resource: ['funnel'], operation: ['moveContact'] },
2076
- },
2077
- routing: {
2078
- send: { type: 'body', property: 'stageId' },
2079
- },
1645
+ }
2080
1646
  },
2081
1647
  // Funnel: List Stages - Filters
2082
1648
  {
@@ -2093,19 +1659,13 @@ class Whaapy {
2093
1659
  displayName: 'Limit',
2094
1660
  name: 'limit',
2095
1661
  type: 'number',
2096
- default: 20,
2097
- routing: {
2098
- send: { type: 'query', property: 'limit' },
2099
- },
1662
+ default: 20
2100
1663
  },
2101
1664
  {
2102
1665
  displayName: 'Offset',
2103
1666
  name: 'offset',
2104
1667
  type: 'number',
2105
- default: 0,
2106
- routing: {
2107
- send: { type: 'query', property: 'offset' },
2108
- },
1668
+ default: 0
2109
1669
  },
2110
1670
  ],
2111
1671
  },