@revobus/n8n-nodes-kajabi 1.0.0

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 (73) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +161 -0
  3. package/dist/credentials/KajabiApi.credentials.d.ts +11 -0
  4. package/dist/credentials/KajabiApi.credentials.d.ts.map +1 -0
  5. package/dist/credentials/KajabiApi.credentials.js +50 -0
  6. package/dist/credentials/KajabiApi.credentials.js.map +1 -0
  7. package/dist/credentials/KajabiOAuth2Api.credentials.d.ts +12 -0
  8. package/dist/credentials/KajabiOAuth2Api.credentials.d.ts.map +1 -0
  9. package/dist/credentials/KajabiOAuth2Api.credentials.js +88 -0
  10. package/dist/credentials/KajabiOAuth2Api.credentials.js.map +1 -0
  11. package/dist/nodes/Kajabi/GenericFunctions.d.ts +30 -0
  12. package/dist/nodes/Kajabi/GenericFunctions.d.ts.map +1 -0
  13. package/dist/nodes/Kajabi/GenericFunctions.js +161 -0
  14. package/dist/nodes/Kajabi/GenericFunctions.js.map +1 -0
  15. package/dist/nodes/Kajabi/Kajabi.node.d.ts +5 -0
  16. package/dist/nodes/Kajabi/Kajabi.node.d.ts.map +1 -0
  17. package/dist/nodes/Kajabi/Kajabi.node.js +176 -0
  18. package/dist/nodes/Kajabi/Kajabi.node.js.map +1 -0
  19. package/dist/nodes/Kajabi/descriptions/BlogPostDescription.d.ts +4 -0
  20. package/dist/nodes/Kajabi/descriptions/BlogPostDescription.d.ts.map +1 -0
  21. package/dist/nodes/Kajabi/descriptions/BlogPostDescription.js +205 -0
  22. package/dist/nodes/Kajabi/descriptions/BlogPostDescription.js.map +1 -0
  23. package/dist/nodes/Kajabi/descriptions/ContactDescription.d.ts +4 -0
  24. package/dist/nodes/Kajabi/descriptions/ContactDescription.d.ts.map +1 -0
  25. package/dist/nodes/Kajabi/descriptions/ContactDescription.js +759 -0
  26. package/dist/nodes/Kajabi/descriptions/ContactDescription.js.map +1 -0
  27. package/dist/nodes/Kajabi/descriptions/ContactNoteDescription.d.ts +4 -0
  28. package/dist/nodes/Kajabi/descriptions/ContactNoteDescription.d.ts.map +1 -0
  29. package/dist/nodes/Kajabi/descriptions/ContactNoteDescription.js +127 -0
  30. package/dist/nodes/Kajabi/descriptions/ContactNoteDescription.js.map +1 -0
  31. package/dist/nodes/Kajabi/descriptions/ContactTagDescription.d.ts +4 -0
  32. package/dist/nodes/Kajabi/descriptions/ContactTagDescription.d.ts.map +1 -0
  33. package/dist/nodes/Kajabi/descriptions/ContactTagDescription.js +114 -0
  34. package/dist/nodes/Kajabi/descriptions/ContactTagDescription.js.map +1 -0
  35. package/dist/nodes/Kajabi/descriptions/CourseDescription.d.ts +4 -0
  36. package/dist/nodes/Kajabi/descriptions/CourseDescription.d.ts.map +1 -0
  37. package/dist/nodes/Kajabi/descriptions/CourseDescription.js +197 -0
  38. package/dist/nodes/Kajabi/descriptions/CourseDescription.js.map +1 -0
  39. package/dist/nodes/Kajabi/descriptions/CustomerDescription.d.ts +4 -0
  40. package/dist/nodes/Kajabi/descriptions/CustomerDescription.d.ts.map +1 -0
  41. package/dist/nodes/Kajabi/descriptions/CustomerDescription.js +358 -0
  42. package/dist/nodes/Kajabi/descriptions/CustomerDescription.js.map +1 -0
  43. package/dist/nodes/Kajabi/descriptions/FormDescription.d.ts +4 -0
  44. package/dist/nodes/Kajabi/descriptions/FormDescription.d.ts.map +1 -0
  45. package/dist/nodes/Kajabi/descriptions/FormDescription.js +381 -0
  46. package/dist/nodes/Kajabi/descriptions/FormDescription.js.map +1 -0
  47. package/dist/nodes/Kajabi/descriptions/FormSubmissionDescription.d.ts +4 -0
  48. package/dist/nodes/Kajabi/descriptions/FormSubmissionDescription.d.ts.map +1 -0
  49. package/dist/nodes/Kajabi/descriptions/FormSubmissionDescription.js +166 -0
  50. package/dist/nodes/Kajabi/descriptions/FormSubmissionDescription.js.map +1 -0
  51. package/dist/nodes/Kajabi/descriptions/LandingPageDescription.d.ts +4 -0
  52. package/dist/nodes/Kajabi/descriptions/LandingPageDescription.d.ts.map +1 -0
  53. package/dist/nodes/Kajabi/descriptions/LandingPageDescription.js +210 -0
  54. package/dist/nodes/Kajabi/descriptions/LandingPageDescription.js.map +1 -0
  55. package/dist/nodes/Kajabi/descriptions/OfferDescription.d.ts +4 -0
  56. package/dist/nodes/Kajabi/descriptions/OfferDescription.d.ts.map +1 -0
  57. package/dist/nodes/Kajabi/descriptions/OfferDescription.js +201 -0
  58. package/dist/nodes/Kajabi/descriptions/OfferDescription.js.map +1 -0
  59. package/dist/nodes/Kajabi/descriptions/PayoutDescription.d.ts +4 -0
  60. package/dist/nodes/Kajabi/descriptions/PayoutDescription.d.ts.map +1 -0
  61. package/dist/nodes/Kajabi/descriptions/PayoutDescription.js +200 -0
  62. package/dist/nodes/Kajabi/descriptions/PayoutDescription.js.map +1 -0
  63. package/dist/nodes/Kajabi/descriptions/UserDescription.d.ts +4 -0
  64. package/dist/nodes/Kajabi/descriptions/UserDescription.d.ts.map +1 -0
  65. package/dist/nodes/Kajabi/descriptions/UserDescription.js +46 -0
  66. package/dist/nodes/Kajabi/descriptions/UserDescription.js.map +1 -0
  67. package/dist/nodes/Kajabi/kajabi.svg +5 -0
  68. package/dist/nodes/KajabiTrigger/KajabiTrigger.node.d.ts +13 -0
  69. package/dist/nodes/KajabiTrigger/KajabiTrigger.node.d.ts.map +1 -0
  70. package/dist/nodes/KajabiTrigger/KajabiTrigger.node.js +152 -0
  71. package/dist/nodes/KajabiTrigger/KajabiTrigger.node.js.map +1 -0
  72. package/dist/nodes/KajabiTrigger/kajabi.svg +5 -0
  73. package/package.json +67 -0
@@ -0,0 +1,759 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.contactFields = exports.contactOperations = void 0;
4
+ exports.contactOperations = [
5
+ {
6
+ displayName: 'Operation',
7
+ name: 'operation',
8
+ type: 'options',
9
+ noDataExpression: true,
10
+ displayOptions: {
11
+ show: {
12
+ resource: ['contact'],
13
+ },
14
+ },
15
+ options: [
16
+ {
17
+ name: 'Add Tags',
18
+ value: 'addTags',
19
+ description: 'Add tags to a contact',
20
+ action: 'Add tags to a contact',
21
+ routing: {
22
+ request: {
23
+ method: 'POST',
24
+ url: '=/v1/contacts/{{$parameter["contactId"]}}/relationships/tags',
25
+ },
26
+ },
27
+ },
28
+ {
29
+ name: 'Create',
30
+ value: 'create',
31
+ description: 'Create a new contact',
32
+ action: 'Create a contact',
33
+ routing: {
34
+ request: {
35
+ method: 'POST',
36
+ url: '/v1/contacts',
37
+ },
38
+ output: {
39
+ postReceive: [
40
+ {
41
+ type: 'rootProperty',
42
+ properties: {
43
+ property: 'data',
44
+ },
45
+ },
46
+ ],
47
+ },
48
+ },
49
+ },
50
+ {
51
+ name: 'Delete',
52
+ value: 'delete',
53
+ description: 'Delete a contact',
54
+ action: 'Delete a contact',
55
+ routing: {
56
+ request: {
57
+ method: 'DELETE',
58
+ url: '=/v1/contacts/{{$parameter["contactId"]}}',
59
+ },
60
+ },
61
+ },
62
+ {
63
+ name: 'Get',
64
+ value: 'get',
65
+ description: 'Get a contact by ID',
66
+ action: 'Get a contact',
67
+ routing: {
68
+ request: {
69
+ method: 'GET',
70
+ url: '=/v1/contacts/{{$parameter["contactId"]}}',
71
+ },
72
+ output: {
73
+ postReceive: [
74
+ {
75
+ type: 'rootProperty',
76
+ properties: {
77
+ property: 'data',
78
+ },
79
+ },
80
+ ],
81
+ },
82
+ },
83
+ },
84
+ {
85
+ name: 'Get Many',
86
+ value: 'getAll',
87
+ description: 'Get many contacts',
88
+ action: 'Get many contacts',
89
+ routing: {
90
+ request: {
91
+ method: 'GET',
92
+ url: '/v1/contacts',
93
+ },
94
+ output: {
95
+ postReceive: [
96
+ {
97
+ type: 'rootProperty',
98
+ properties: {
99
+ property: 'data',
100
+ },
101
+ },
102
+ ],
103
+ },
104
+ },
105
+ },
106
+ {
107
+ name: 'Grant Offers',
108
+ value: 'grantOffers',
109
+ description: 'Grant offers to a contact',
110
+ action: 'Grant offers to a contact',
111
+ routing: {
112
+ request: {
113
+ method: 'POST',
114
+ url: '=/v1/contacts/{{$parameter["contactId"]}}/relationships/offers',
115
+ },
116
+ },
117
+ },
118
+ {
119
+ name: 'List Offers',
120
+ value: 'listOffers',
121
+ description: 'List all offers for a contact',
122
+ action: 'List offers for a contact',
123
+ routing: {
124
+ request: {
125
+ method: 'GET',
126
+ url: '=/v1/contacts/{{$parameter["contactId"]}}/relationships/offers',
127
+ },
128
+ output: {
129
+ postReceive: [
130
+ {
131
+ type: 'rootProperty',
132
+ properties: {
133
+ property: 'data',
134
+ },
135
+ },
136
+ ],
137
+ },
138
+ },
139
+ },
140
+ {
141
+ name: 'Remove Tags',
142
+ value: 'removeTags',
143
+ description: 'Remove tags from a contact',
144
+ action: 'Remove tags from a contact',
145
+ routing: {
146
+ request: {
147
+ method: 'DELETE',
148
+ url: '=/v1/contacts/{{$parameter["contactId"]}}/relationships/tags',
149
+ },
150
+ },
151
+ },
152
+ {
153
+ name: 'Revoke Offers',
154
+ value: 'revokeOffers',
155
+ description: 'Revoke offers from a contact',
156
+ action: 'Revoke offers from a contact',
157
+ routing: {
158
+ request: {
159
+ method: 'DELETE',
160
+ url: '=/v1/contacts/{{$parameter["contactId"]}}/relationships/offers',
161
+ },
162
+ },
163
+ },
164
+ {
165
+ name: 'Update',
166
+ value: 'update',
167
+ description: 'Update a contact',
168
+ action: 'Update a contact',
169
+ routing: {
170
+ request: {
171
+ method: 'PATCH',
172
+ url: '=/v1/contacts/{{$parameter["contactId"]}}',
173
+ },
174
+ output: {
175
+ postReceive: [
176
+ {
177
+ type: 'rootProperty',
178
+ properties: {
179
+ property: 'data',
180
+ },
181
+ },
182
+ ],
183
+ },
184
+ },
185
+ },
186
+ ],
187
+ default: 'getAll',
188
+ },
189
+ ];
190
+ exports.contactFields = [
191
+ // ----------------------------------
192
+ // Contact ID
193
+ // ----------------------------------
194
+ {
195
+ displayName: 'Contact ID',
196
+ name: 'contactId',
197
+ type: 'string',
198
+ default: '',
199
+ required: true,
200
+ displayOptions: {
201
+ show: {
202
+ resource: ['contact'],
203
+ operation: ['get', 'update', 'delete', 'addTags', 'removeTags', 'grantOffers', 'listOffers', 'revokeOffers'],
204
+ },
205
+ },
206
+ description: 'The unique identifier of the contact',
207
+ },
208
+ // ----------------------------------
209
+ // Create: Required Fields
210
+ // ----------------------------------
211
+ {
212
+ displayName: 'Email',
213
+ name: 'email',
214
+ type: 'string',
215
+ placeholder: 'name@email.com',
216
+ default: '',
217
+ required: true,
218
+ displayOptions: {
219
+ show: {
220
+ resource: ['contact'],
221
+ operation: ['create'],
222
+ },
223
+ },
224
+ description: 'Email address of the contact',
225
+ routing: {
226
+ send: {
227
+ type: 'body',
228
+ property: 'data.attributes.email',
229
+ },
230
+ },
231
+ },
232
+ {
233
+ displayName: 'Site ID',
234
+ name: 'siteId',
235
+ type: 'string',
236
+ default: '',
237
+ required: true,
238
+ displayOptions: {
239
+ show: {
240
+ resource: ['contact'],
241
+ operation: ['create'],
242
+ },
243
+ },
244
+ description: 'The Kajabi Site ID to create the contact in',
245
+ routing: {
246
+ send: {
247
+ type: 'body',
248
+ property: 'data.relationships.site.data.id',
249
+ },
250
+ },
251
+ },
252
+ // Hidden field to set the relationship type
253
+ {
254
+ displayName: 'Site Type',
255
+ name: 'siteType',
256
+ type: 'hidden',
257
+ default: 'sites',
258
+ displayOptions: {
259
+ show: {
260
+ resource: ['contact'],
261
+ operation: ['create'],
262
+ },
263
+ },
264
+ routing: {
265
+ send: {
266
+ type: 'body',
267
+ property: 'data.relationships.site.data.type',
268
+ },
269
+ },
270
+ },
271
+ // Hidden field to set the data type
272
+ {
273
+ displayName: 'Data Type',
274
+ name: 'dataType',
275
+ type: 'hidden',
276
+ default: 'contacts',
277
+ displayOptions: {
278
+ show: {
279
+ resource: ['contact'],
280
+ operation: ['create', 'update'],
281
+ },
282
+ },
283
+ routing: {
284
+ send: {
285
+ type: 'body',
286
+ property: 'data.type',
287
+ },
288
+ },
289
+ },
290
+ // ----------------------------------
291
+ // Create/Update: Additional Fields
292
+ // ----------------------------------
293
+ {
294
+ displayName: 'Additional Fields',
295
+ name: 'additionalFields',
296
+ type: 'collection',
297
+ placeholder: 'Add Field',
298
+ default: {},
299
+ displayOptions: {
300
+ show: {
301
+ resource: ['contact'],
302
+ operation: ['create', 'update'],
303
+ },
304
+ },
305
+ options: [
306
+ {
307
+ displayName: 'Address Line 1',
308
+ name: 'addressLine1',
309
+ type: 'string',
310
+ default: '',
311
+ routing: {
312
+ send: {
313
+ type: 'body',
314
+ property: 'data.attributes.address_line_1',
315
+ },
316
+ },
317
+ },
318
+ {
319
+ displayName: 'Address Line 2',
320
+ name: 'addressLine2',
321
+ type: 'string',
322
+ default: '',
323
+ routing: {
324
+ send: {
325
+ type: 'body',
326
+ property: 'data.attributes.address_line_2',
327
+ },
328
+ },
329
+ },
330
+ {
331
+ displayName: 'City',
332
+ name: 'addressCity',
333
+ type: 'string',
334
+ default: '',
335
+ routing: {
336
+ send: {
337
+ type: 'body',
338
+ property: 'data.attributes.address_city',
339
+ },
340
+ },
341
+ },
342
+ {
343
+ displayName: 'Country',
344
+ name: 'addressCountry',
345
+ type: 'string',
346
+ default: '',
347
+ routing: {
348
+ send: {
349
+ type: 'body',
350
+ property: 'data.attributes.address_country',
351
+ },
352
+ },
353
+ },
354
+ {
355
+ displayName: 'Custom Field 1',
356
+ name: 'custom1',
357
+ type: 'string',
358
+ default: '',
359
+ routing: {
360
+ send: {
361
+ type: 'body',
362
+ property: 'data.attributes.custom_1',
363
+ },
364
+ },
365
+ },
366
+ {
367
+ displayName: 'Custom Field 2',
368
+ name: 'custom2',
369
+ type: 'string',
370
+ default: '',
371
+ routing: {
372
+ send: {
373
+ type: 'body',
374
+ property: 'data.attributes.custom_2',
375
+ },
376
+ },
377
+ },
378
+ {
379
+ displayName: 'Custom Field 3',
380
+ name: 'custom3',
381
+ type: 'string',
382
+ default: '',
383
+ routing: {
384
+ send: {
385
+ type: 'body',
386
+ property: 'data.attributes.custom_3',
387
+ },
388
+ },
389
+ },
390
+ {
391
+ displayName: 'External User ID',
392
+ name: 'externalUserId',
393
+ type: 'string',
394
+ default: '',
395
+ description: 'External identifier for integration purposes',
396
+ routing: {
397
+ send: {
398
+ type: 'body',
399
+ property: 'data.attributes.external_user_id',
400
+ },
401
+ },
402
+ },
403
+ {
404
+ displayName: 'Name',
405
+ name: 'name',
406
+ type: 'string',
407
+ default: '',
408
+ description: 'Full name of the contact',
409
+ routing: {
410
+ send: {
411
+ type: 'body',
412
+ property: 'data.attributes.name',
413
+ },
414
+ },
415
+ },
416
+ {
417
+ displayName: 'Phone Number',
418
+ name: 'phoneNumber',
419
+ type: 'string',
420
+ default: '',
421
+ description: 'Phone number of the contact',
422
+ routing: {
423
+ send: {
424
+ type: 'body',
425
+ property: 'data.attributes.phone_number',
426
+ },
427
+ },
428
+ },
429
+ {
430
+ displayName: 'State',
431
+ name: 'addressState',
432
+ type: 'string',
433
+ default: '',
434
+ description: 'State or province',
435
+ routing: {
436
+ send: {
437
+ type: 'body',
438
+ property: 'data.attributes.address_state',
439
+ },
440
+ },
441
+ },
442
+ {
443
+ displayName: 'Subscribed',
444
+ name: 'subscribed',
445
+ type: 'boolean',
446
+ default: true,
447
+ description: 'Whether the contact is subscribed to emails',
448
+ routing: {
449
+ send: {
450
+ type: 'body',
451
+ property: 'data.attributes.subscribed',
452
+ },
453
+ },
454
+ },
455
+ {
456
+ displayName: 'ZIP Code',
457
+ name: 'addressZip',
458
+ type: 'string',
459
+ default: '',
460
+ description: 'Postal or ZIP code',
461
+ routing: {
462
+ send: {
463
+ type: 'body',
464
+ property: 'data.attributes.address_zip',
465
+ },
466
+ },
467
+ },
468
+ ],
469
+ },
470
+ // ----------------------------------
471
+ // Update: Contact ID in body
472
+ // ----------------------------------
473
+ {
474
+ displayName: 'Contact ID for Body',
475
+ name: 'contactIdBody',
476
+ type: 'hidden',
477
+ default: '={{$parameter["contactId"]}}',
478
+ displayOptions: {
479
+ show: {
480
+ resource: ['contact'],
481
+ operation: ['update'],
482
+ },
483
+ },
484
+ routing: {
485
+ send: {
486
+ type: 'body',
487
+ property: 'data.id',
488
+ },
489
+ },
490
+ },
491
+ // ----------------------------------
492
+ // Get All: Pagination
493
+ // ----------------------------------
494
+ {
495
+ displayName: 'Return All',
496
+ name: 'returnAll',
497
+ type: 'boolean',
498
+ default: false,
499
+ displayOptions: {
500
+ show: {
501
+ resource: ['contact'],
502
+ operation: ['getAll'],
503
+ },
504
+ },
505
+ description: 'Whether to return all results or only up to a given limit',
506
+ },
507
+ {
508
+ displayName: 'Limit',
509
+ name: 'limit',
510
+ type: 'number',
511
+ default: 50,
512
+ displayOptions: {
513
+ show: {
514
+ resource: ['contact'],
515
+ operation: ['getAll'],
516
+ returnAll: [false],
517
+ },
518
+ },
519
+ typeOptions: {
520
+ minValue: 1,
521
+ },
522
+ description: 'Max number of results to return',
523
+ routing: {
524
+ send: {
525
+ type: 'query',
526
+ property: 'page[size]',
527
+ },
528
+ },
529
+ },
530
+ // ----------------------------------
531
+ // Get All: Filters
532
+ // ----------------------------------
533
+ {
534
+ displayName: 'Filters',
535
+ name: 'filters',
536
+ type: 'collection',
537
+ placeholder: 'Add Filter',
538
+ default: {},
539
+ displayOptions: {
540
+ show: {
541
+ resource: ['contact'],
542
+ operation: ['getAll'],
543
+ },
544
+ },
545
+ options: [
546
+ {
547
+ displayName: 'Created In Last (Days)',
548
+ name: 'createdInLast',
549
+ type: 'number',
550
+ default: '',
551
+ description: 'Filter contacts created within the last N days',
552
+ routing: {
553
+ send: {
554
+ type: 'query',
555
+ property: 'filter[created_in_last]',
556
+ },
557
+ },
558
+ },
559
+ {
560
+ displayName: 'Email Contains',
561
+ name: 'emailContains',
562
+ type: 'string',
563
+ default: '',
564
+ description: 'Filter contacts whose email contains this string',
565
+ routing: {
566
+ send: {
567
+ type: 'query',
568
+ property: 'filter[email_contains]',
569
+ },
570
+ },
571
+ },
572
+ {
573
+ displayName: 'Has Offer ID',
574
+ name: 'hasOfferId',
575
+ type: 'string',
576
+ default: '',
577
+ description: 'Filter contacts that have this offer',
578
+ routing: {
579
+ send: {
580
+ type: 'query',
581
+ property: 'filter[has_offer_id]',
582
+ },
583
+ },
584
+ },
585
+ {
586
+ displayName: 'Has Tag ID',
587
+ name: 'hasTagId',
588
+ type: 'string',
589
+ default: '',
590
+ description: 'Filter contacts that have this tag',
591
+ routing: {
592
+ send: {
593
+ type: 'query',
594
+ property: 'filter[has_tag_id]',
595
+ },
596
+ },
597
+ },
598
+ {
599
+ displayName: 'Joined In Last (Days)',
600
+ name: 'joinedInLast',
601
+ type: 'number',
602
+ default: '',
603
+ description: 'Filter contacts that joined within the last N days',
604
+ routing: {
605
+ send: {
606
+ type: 'query',
607
+ property: 'filter[joined_in_last]',
608
+ },
609
+ },
610
+ },
611
+ {
612
+ displayName: 'Name Contains',
613
+ name: 'nameContains',
614
+ type: 'string',
615
+ default: '',
616
+ description: 'Filter contacts whose name contains this string',
617
+ routing: {
618
+ send: {
619
+ type: 'query',
620
+ property: 'filter[name_contains]',
621
+ },
622
+ },
623
+ },
624
+ {
625
+ displayName: 'Net Revenue Greater Than',
626
+ name: 'netRevenueGreaterThan',
627
+ type: 'number',
628
+ default: '',
629
+ description: 'Filter contacts with revenue above this amount (in cents)',
630
+ routing: {
631
+ send: {
632
+ type: 'query',
633
+ property: 'filter[net_revenue_greater_than]',
634
+ },
635
+ },
636
+ },
637
+ {
638
+ displayName: 'Net Revenue Less Than',
639
+ name: 'netRevenueLessThan',
640
+ type: 'number',
641
+ default: '',
642
+ description: 'Filter contacts with revenue below this amount (in cents)',
643
+ routing: {
644
+ send: {
645
+ type: 'query',
646
+ property: 'filter[net_revenue_less_than]',
647
+ },
648
+ },
649
+ },
650
+ {
651
+ displayName: 'Search',
652
+ name: 'search',
653
+ type: 'string',
654
+ default: '',
655
+ description: 'Fuzzy search on name and email',
656
+ routing: {
657
+ send: {
658
+ type: 'query',
659
+ property: 'filter[search]',
660
+ },
661
+ },
662
+ },
663
+ {
664
+ displayName: 'Site ID',
665
+ name: 'siteId',
666
+ type: 'string',
667
+ default: '',
668
+ description: 'Filter by Site ID (required for multi-site accounts)',
669
+ routing: {
670
+ send: {
671
+ type: 'query',
672
+ property: 'filter[site_id]',
673
+ },
674
+ },
675
+ },
676
+ {
677
+ displayName: 'Subscribed',
678
+ name: 'subscribed',
679
+ type: 'options',
680
+ options: [
681
+ { name: 'Any', value: '' },
682
+ { name: 'Yes', value: 'true' },
683
+ { name: 'No', value: 'false' },
684
+ ],
685
+ default: '',
686
+ description: 'Filter by subscription status',
687
+ routing: {
688
+ send: {
689
+ type: 'query',
690
+ property: 'filter[subscribed]',
691
+ },
692
+ },
693
+ },
694
+ ],
695
+ },
696
+ // ----------------------------------
697
+ // Add/Remove Tags
698
+ // ----------------------------------
699
+ {
700
+ displayName: 'Tag IDs',
701
+ name: 'tagIds',
702
+ type: 'string',
703
+ default: '',
704
+ required: true,
705
+ displayOptions: {
706
+ show: {
707
+ resource: ['contact'],
708
+ operation: ['addTags', 'removeTags'],
709
+ },
710
+ },
711
+ description: 'Comma-separated list of tag IDs to add or remove',
712
+ },
713
+ // ----------------------------------
714
+ // Grant/Revoke Offers
715
+ // ----------------------------------
716
+ {
717
+ displayName: 'Offer IDs',
718
+ name: 'offerIds',
719
+ type: 'string',
720
+ default: '',
721
+ required: true,
722
+ displayOptions: {
723
+ show: {
724
+ resource: ['contact'],
725
+ operation: ['grantOffers', 'revokeOffers'],
726
+ },
727
+ },
728
+ description: 'Comma-separated list of offer IDs to grant or revoke',
729
+ },
730
+ {
731
+ displayName: 'Options',
732
+ name: 'grantOptions',
733
+ type: 'collection',
734
+ placeholder: 'Add Option',
735
+ default: {},
736
+ displayOptions: {
737
+ show: {
738
+ resource: ['contact'],
739
+ operation: ['grantOffers'],
740
+ },
741
+ },
742
+ options: [
743
+ {
744
+ displayName: 'Suppress Welcome Email',
745
+ name: 'suppressWelcomeEmail',
746
+ type: 'boolean',
747
+ default: false,
748
+ description: 'Whether to suppress the welcome email when granting the offer',
749
+ routing: {
750
+ send: {
751
+ type: 'body',
752
+ property: 'meta.suppress_welcome_email',
753
+ },
754
+ },
755
+ },
756
+ ],
757
+ },
758
+ ];
759
+ //# sourceMappingURL=ContactDescription.js.map