n8n-nodes-sendit 1.3.0 → 1.3.2

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.
@@ -18,21 +18,14 @@ class SendIt {
18
18
  defaults: {
19
19
  name: 'SendIt',
20
20
  },
21
- inputs: ['main'],
22
- outputs: ['main'],
21
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
22
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
23
23
  credentials: [
24
24
  {
25
25
  name: 'sendItApi',
26
26
  required: true,
27
27
  },
28
28
  ],
29
- requestDefaults: {
30
- baseURL: constants_1.SENDIT_API_BASE_URL,
31
- headers: {
32
- Accept: 'application/json',
33
- 'Content-Type': 'application/json',
34
- },
35
- },
36
29
  properties: [
37
30
  {
38
31
  displayName: 'Resource',
@@ -40,29 +33,29 @@ class SendIt {
40
33
  type: 'options',
41
34
  noDataExpression: true,
42
35
  options: [
43
- { name: '📝 Post', value: 'post' },
44
- { name: '📅 Scheduled Post', value: 'scheduledPost' },
45
- { name: '📎 Media', value: 'media' },
46
- { name: '🤖 AI', value: 'ai' },
47
- { name: '🎨 AI Media', value: 'aiMedia' },
48
- { name: 'đŸ’¯ Content Score', value: 'contentScore' },
49
- { name: 'đŸ“Ŧ Inbox', value: 'inbox' },
50
- { name: '👂 Listening', value: 'listening' },
51
- { name: '👤 Account', value: 'account' },
52
- { name: '📚 Library', value: 'library' },
53
- { name: 'đŸŽ™ī¸ Brand Voice', value: 'brandVoice' },
54
- { name: 'đŸ“Ŗ Campaign', value: 'campaign' },
55
- { name: '✅ Approvals', value: 'approvals' },
56
- { name: '📊 Analytics', value: 'analytics' },
57
- { name: '🔍 Validation', value: 'validation' },
58
- { name: '📈 Conversions', value: 'conversions' },
59
- { name: '🔗 Webhooks', value: 'webhooks' },
60
- { name: '💀 Dead Letter', value: 'deadLetter' },
61
- { name: '📋 Audit Log', value: 'auditLog' },
62
- { name: 'đŸ“Ļ Bulk Schedule', value: 'bulkSchedule' },
63
- { name: '🔌 Connect', value: 'connect' },
64
- { name: 'â„šī¸ Meta', value: 'meta' },
65
- { name: 'âš™ī¸ Advanced', value: 'advanced' },
36
+ { name: 'Account', value: 'account' },
37
+ { name: 'Advanced', value: 'advanced' },
38
+ { name: 'AI', value: 'ai' },
39
+ { name: 'AI Media', value: 'aiMedia' },
40
+ { name: 'Analytics', value: 'analytics' },
41
+ { name: 'Approval', value: 'approvals' },
42
+ { name: 'Audit Log', value: 'auditLog' },
43
+ { name: 'Brand Voice', value: 'brandVoice' },
44
+ { name: 'Bulk Schedule', value: 'bulkSchedule' },
45
+ { name: 'Campaign', value: 'campaign' },
46
+ { name: 'Connect', value: 'connect' },
47
+ { name: 'Content Score', value: 'contentScore' },
48
+ { name: 'Conversion', value: 'conversions' },
49
+ { name: 'Dead Letter', value: 'deadLetter' },
50
+ { name: 'Inbox', value: 'inbox' },
51
+ { name: 'Library', value: 'library' },
52
+ { name: 'Listening', value: 'listening' },
53
+ { name: 'Media', value: 'media' },
54
+ { name: 'Meta', value: 'meta' },
55
+ { name: 'Post', value: 'post' },
56
+ { name: 'Scheduled Post', value: 'scheduledPost' },
57
+ { name: 'Validation', value: 'validation' },
58
+ { name: 'Webhook', value: 'webhooks' },
66
59
  ],
67
60
  default: 'post',
68
61
  },
@@ -71,14 +64,14 @@ class SendIt {
71
64
  name: 'teamId',
72
65
  type: 'string',
73
66
  default: '',
74
- description: 'Optional team scope. Sent as X-Team-ID header when provided',
67
+ description: 'Optional team scope. Sent as X-Team-ID header when provided.',
75
68
  },
76
69
  {
77
70
  displayName: 'Idempotency Key',
78
71
  name: 'idempotencyKey',
79
72
  type: 'string',
80
73
  default: '',
81
- description: 'Optional idempotency key. Sent as Idempotency-Key header when provided',
74
+ description: 'Optional idempotency key. Sent as Idempotency-Key header when provided.',
82
75
  },
83
76
  {
84
77
  displayName: 'Publishing operations are rate-limited to 50 requests per minute per API key.',
@@ -133,7 +126,7 @@ class SendIt {
133
126
  name: 'Publish with AI',
134
127
  value: 'publishAi',
135
128
  description: 'Generate content with AI and publish to platforms',
136
- action: 'Publish with AI-generated content',
129
+ action: 'Publish with ai generated content',
137
130
  },
138
131
  ],
139
132
  default: 'publish',
@@ -145,18 +138,18 @@ class SendIt {
145
138
  noDataExpression: true,
146
139
  displayOptions: { show: { resource: ['ai'] } },
147
140
  options: [
141
+ {
142
+ name: 'Feedback',
143
+ value: 'feedback',
144
+ description: 'Rate AI-generated content quality',
145
+ action: 'Submit AI feedback',
146
+ },
148
147
  {
149
148
  name: 'Generate Content',
150
149
  value: 'generate',
151
150
  description: 'Generate platform-specific content from media or prompt',
152
151
  action: 'Generate AI content',
153
152
  },
154
- {
155
- name: 'Reply Suggestions',
156
- value: 'replySuggestions',
157
- description: 'Get AI-drafted reply suggestions for a mention',
158
- action: 'Get AI reply suggestions',
159
- },
160
153
  {
161
154
  name: 'Mention Summary',
162
155
  value: 'mentionSummary',
@@ -164,10 +157,10 @@ class SendIt {
164
157
  action: 'Summarize mentions with AI',
165
158
  },
166
159
  {
167
- name: 'Feedback',
168
- value: 'feedback',
169
- description: 'Rate AI-generated content quality',
170
- action: 'Submit AI feedback',
160
+ name: 'Reply Suggestions',
161
+ value: 'replySuggestions',
162
+ description: 'Get AI-drafted reply suggestions for a mention',
163
+ action: 'Get AI reply suggestions',
171
164
  },
172
165
  ],
173
166
  default: 'generate',
@@ -201,18 +194,18 @@ class SendIt {
201
194
  description: 'Schedule a post for future publishing',
202
195
  action: 'Schedule a post',
203
196
  },
204
- {
205
- name: 'Get All',
206
- value: 'getAll',
207
- description: 'Get all scheduled posts',
208
- action: 'Get all scheduled posts',
209
- },
210
197
  {
211
198
  name: 'Delete',
212
199
  value: 'delete',
213
200
  description: 'Cancel a scheduled post',
214
201
  action: 'Cancel a scheduled post',
215
202
  },
203
+ {
204
+ name: 'Get Many',
205
+ value: 'getAll',
206
+ description: 'Get many scheduled posts',
207
+ action: 'Get many scheduled posts',
208
+ },
216
209
  {
217
210
  name: 'Trigger Now',
218
211
  value: 'trigger',
@@ -230,10 +223,10 @@ class SendIt {
230
223
  displayOptions: { show: { resource: ['account'] } },
231
224
  options: [
232
225
  {
233
- name: 'Get All',
226
+ name: 'Get Many',
234
227
  value: 'getAll',
235
- description: 'Get all connected accounts',
236
- action: 'Get all accounts',
228
+ description: 'Get many connected accounts',
229
+ action: 'Get many accounts',
237
230
  },
238
231
  ],
239
232
  default: 'getAll',
@@ -284,10 +277,10 @@ class SendIt {
284
277
  action: 'Create a brand voice',
285
278
  },
286
279
  {
287
- name: 'List',
288
- value: 'list',
289
- description: 'List all brand voice profiles',
290
- action: 'List brand voices',
280
+ name: 'Delete',
281
+ value: 'delete',
282
+ description: 'Delete a brand voice profile',
283
+ action: 'Delete a brand voice',
291
284
  },
292
285
  {
293
286
  name: 'Get',
@@ -295,18 +288,18 @@ class SendIt {
295
288
  description: 'Get a single brand voice profile',
296
289
  action: 'Get a brand voice',
297
290
  },
291
+ {
292
+ name: 'List',
293
+ value: 'list',
294
+ description: 'List all brand voice profiles',
295
+ action: 'List brand voices',
296
+ },
298
297
  {
299
298
  name: 'Update',
300
299
  value: 'update',
301
300
  description: 'Update a brand voice profile',
302
301
  action: 'Update a brand voice',
303
302
  },
304
- {
305
- name: 'Delete',
306
- value: 'delete',
307
- description: 'Delete a brand voice profile',
308
- action: 'Delete a brand voice',
309
- },
310
303
  ],
311
304
  default: 'create',
312
305
  },
@@ -317,18 +310,18 @@ class SendIt {
317
310
  noDataExpression: true,
318
311
  displayOptions: { show: { resource: ['campaign'] } },
319
312
  options: [
320
- {
321
- name: 'Plan',
322
- value: 'plan',
323
- description: 'Create a new campaign with AI-planned posts',
324
- action: 'Plan a campaign',
325
- },
326
313
  {
327
314
  name: 'List',
328
315
  value: 'list',
329
316
  description: 'List all campaigns',
330
317
  action: 'List campaigns',
331
318
  },
319
+ {
320
+ name: 'Plan',
321
+ value: 'plan',
322
+ description: 'Create a new campaign with AI-planned posts',
323
+ action: 'Plan a campaign',
324
+ },
332
325
  {
333
326
  name: 'Schedule',
334
327
  value: 'schedule',
@@ -345,6 +338,12 @@ class SendIt {
345
338
  noDataExpression: true,
346
339
  displayOptions: { show: { resource: ['inbox'] } },
347
340
  options: [
341
+ {
342
+ name: 'Get Thread',
343
+ value: 'getThread',
344
+ description: 'Get a single inbox thread with messages',
345
+ action: 'Get an inbox thread',
346
+ },
348
347
  {
349
348
  name: 'List',
350
349
  value: 'list',
@@ -357,12 +356,6 @@ class SendIt {
357
356
  description: 'Reply to an inbox thread',
358
357
  action: 'Reply to a thread',
359
358
  },
360
- {
361
- name: 'Get Thread',
362
- value: 'getThread',
363
- description: 'Get a single inbox thread with messages',
364
- action: 'Get an inbox thread',
365
- },
366
359
  {
367
360
  name: 'Update Status',
368
361
  value: 'updateStatus',
@@ -380,16 +373,9 @@ class SendIt {
380
373
  displayOptions: { show: { resource: ['listening'] } },
381
374
  options: [
382
375
  {
383
- name: 'Refresh',
384
- value: 'refresh',
385
- description: 'Trigger a refresh of social listening data for tracked keywords',
386
- action: 'Refresh social listening data',
387
- },
388
- {
389
- name: 'List Keywords',
390
- value: 'listKeywords',
391
- description: 'List tracked listening keywords',
392
- action: 'List listening keywords',
376
+ name: 'Archive Mentions',
377
+ value: 'archiveMentions',
378
+ action: 'Archive listening mentions',
393
379
  },
394
380
  {
395
381
  name: 'Create Keyword',
@@ -397,18 +383,6 @@ class SendIt {
397
383
  description: 'Create a listening keyword',
398
384
  action: 'Create listening keyword',
399
385
  },
400
- {
401
- name: 'Get Keyword',
402
- value: 'getKeyword',
403
- description: 'Get listening keyword by ID',
404
- action: 'Get listening keyword',
405
- },
406
- {
407
- name: 'Update Keyword',
408
- value: 'updateKeyword',
409
- description: 'Update listening keyword',
410
- action: 'Update listening keyword',
411
- },
412
386
  {
413
387
  name: 'Delete Keyword',
414
388
  value: 'deleteKeyword',
@@ -416,10 +390,15 @@ class SendIt {
416
390
  action: 'Delete listening keyword',
417
391
  },
418
392
  {
419
- name: 'List Mentions',
420
- value: 'listMentions',
421
- description: 'List mentions',
422
- action: 'List listening mentions',
393
+ name: 'Dismiss Alerts',
394
+ value: 'dismissAlerts',
395
+ action: 'Dismiss listening alerts',
396
+ },
397
+ {
398
+ name: 'Get Keyword',
399
+ value: 'getKeyword',
400
+ description: 'Get listening keyword by ID',
401
+ action: 'Get listening keyword',
423
402
  },
424
403
  {
425
404
  name: 'Get Mention',
@@ -428,16 +407,10 @@ class SendIt {
428
407
  action: 'Get listening mention',
429
408
  },
430
409
  {
431
- name: 'Mark Mentions Read',
432
- value: 'markMentionsRead',
433
- description: 'Mark mentions as read',
434
- action: 'Mark listening mentions as read',
435
- },
436
- {
437
- name: 'Archive Mentions',
438
- value: 'archiveMentions',
439
- description: 'Archive mentions',
440
- action: 'Archive listening mentions',
410
+ name: 'Get Summary',
411
+ value: 'getSummary',
412
+ description: 'Get listening summary',
413
+ action: 'Get listening summary',
441
414
  },
442
415
  {
443
416
  name: 'List Alerts',
@@ -445,6 +418,17 @@ class SendIt {
445
418
  description: 'List listening alerts',
446
419
  action: 'List listening alerts',
447
420
  },
421
+ {
422
+ name: 'List Keywords',
423
+ value: 'listKeywords',
424
+ description: 'List tracked listening keywords',
425
+ action: 'List listening keywords',
426
+ },
427
+ {
428
+ name: 'List Mentions',
429
+ value: 'listMentions',
430
+ action: 'List listening mentions',
431
+ },
448
432
  {
449
433
  name: 'Mark Alerts Read',
450
434
  value: 'markAlertsRead',
@@ -452,16 +436,22 @@ class SendIt {
452
436
  action: 'Mark listening alerts as read',
453
437
  },
454
438
  {
455
- name: 'Dismiss Alerts',
456
- value: 'dismissAlerts',
457
- description: 'Dismiss alerts',
458
- action: 'Dismiss listening alerts',
439
+ name: 'Mark Mentions Read',
440
+ value: 'markMentionsRead',
441
+ description: 'Mark mentions as read',
442
+ action: 'Mark listening mentions as read',
459
443
  },
460
444
  {
461
- name: 'Get Summary',
462
- value: 'getSummary',
463
- description: 'Get listening summary',
464
- action: 'Get listening summary',
445
+ name: 'Refresh',
446
+ value: 'refresh',
447
+ description: 'Trigger a refresh of social listening data for tracked keywords',
448
+ action: 'Refresh social listening data',
449
+ },
450
+ {
451
+ name: 'Update Keyword',
452
+ value: 'updateKeyword',
453
+ description: 'Update listening keyword',
454
+ action: 'Update listening keyword',
465
455
  },
466
456
  ],
467
457
  default: 'refresh',
@@ -495,18 +485,18 @@ class SendIt {
495
485
  noDataExpression: true,
496
486
  displayOptions: { show: { resource: ['meta'] } },
497
487
  options: [
488
+ {
489
+ name: 'Get Best Times',
490
+ value: 'getBestTimes',
491
+ description: 'Get optimal posting times for a platform',
492
+ action: 'Get best times to post',
493
+ },
498
494
  {
499
495
  name: 'Get Capabilities',
500
496
  value: 'getCapabilities',
501
497
  description: 'Get supported platform capabilities',
502
498
  action: 'Get capabilities',
503
499
  },
504
- {
505
- name: 'Get Requirements',
506
- value: 'getRequirements',
507
- description: 'Get content requirements for a platform',
508
- action: 'Get platform requirements',
509
- },
510
500
  {
511
501
  name: 'Get Platform Settings Schema',
512
502
  value: 'getPlatformSettingsSchema',
@@ -514,10 +504,10 @@ class SendIt {
514
504
  action: 'Get platform settings schema',
515
505
  },
516
506
  {
517
- name: 'Get Best Times',
518
- value: 'getBestTimes',
519
- description: 'Get optimal posting times for a platform',
520
- action: 'Get best times to post',
507
+ name: 'Get Requirements',
508
+ value: 'getRequirements',
509
+ description: 'Get content requirements for a platform',
510
+ action: 'Get platform requirements',
521
511
  },
522
512
  {
523
513
  name: 'Get Webhook Events Catalog',
@@ -557,13 +547,13 @@ class SendIt {
557
547
  noDataExpression: true,
558
548
  displayOptions: { show: { resource: ['library'] } },
559
549
  options: [
560
- { name: 'List', value: 'list', action: 'List library items' },
561
550
  { name: 'Create', value: 'create', action: 'Create library item' },
562
- { name: 'Get', value: 'get', action: 'Get library item' },
563
- { name: 'Update', value: 'update', action: 'Update library item' },
564
551
  { name: 'Delete', value: 'delete', action: 'Delete library item' },
552
+ { name: 'Get', value: 'get', action: 'Get library item' },
553
+ { name: 'List', value: 'list', action: 'List library items' },
565
554
  { name: 'List Categories', value: 'listCategories', action: 'List library categories' },
566
555
  { name: 'List Tags', value: 'listTags', action: 'List library tags' },
556
+ { name: 'Update', value: 'update', action: 'Update library item' },
567
557
  ],
568
558
  default: 'list',
569
559
  },
@@ -574,8 +564,8 @@ class SendIt {
574
564
  noDataExpression: true,
575
565
  displayOptions: { show: { resource: ['approvals'] } },
576
566
  options: [
577
- { name: 'List', value: 'list', action: 'List approvals' },
578
567
  { name: 'Approve', value: 'approve', action: 'Approve post' },
568
+ { name: 'List', value: 'list', action: 'List approvals' },
579
569
  { name: 'Reject', value: 'reject', action: 'Reject post' },
580
570
  ],
581
571
  default: 'list',
@@ -587,15 +577,15 @@ class SendIt {
587
577
  noDataExpression: true,
588
578
  displayOptions: { show: { resource: ['bulkSchedule'] } },
589
579
  options: [
590
- { name: 'List Imports', value: 'listImports', action: 'List bulk imports' },
591
- { name: 'Get Import', value: 'getImport', action: 'Get bulk import' },
592
- { name: 'Validate CSV', value: 'validateCsv', action: 'Validate CSV payload' },
593
- { name: 'Import CSV', value: 'importCsv', action: 'Import CSV payload' },
594
580
  {
595
581
  name: 'Download Template',
596
582
  value: 'downloadTemplate',
597
583
  action: 'Download bulk schedule template',
598
584
  },
585
+ { name: 'Get Import', value: 'getImport', action: 'Get bulk import' },
586
+ { name: 'Import CSV', value: 'importCsv', action: 'Import CSV payload' },
587
+ { name: 'List Imports', value: 'listImports', action: 'List bulk imports' },
588
+ { name: 'Validate CSV', value: 'validateCsv', action: 'Validate CSV payload' },
599
589
  ],
600
590
  default: 'listImports',
601
591
  },
@@ -606,11 +596,6 @@ class SendIt {
606
596
  noDataExpression: true,
607
597
  displayOptions: { show: { resource: ['connect'] } },
608
598
  options: [
609
- {
610
- name: 'Get Connect Action',
611
- value: 'getConnectAction',
612
- action: 'Get connect action for platform',
613
- },
614
599
  {
615
600
  name: 'Connect Token',
616
601
  value: 'connectToken',
@@ -621,6 +606,11 @@ class SendIt {
621
606
  value: 'connectWebhook',
622
607
  action: 'Connect with webhook credentials',
623
608
  },
609
+ {
610
+ name: 'Get Connect Action',
611
+ value: 'getConnectAction',
612
+ action: 'Get connect action for platform',
613
+ },
624
614
  ],
625
615
  default: 'getConnectAction',
626
616
  },
@@ -631,25 +621,25 @@ class SendIt {
631
621
  noDataExpression: true,
632
622
  displayOptions: { show: { resource: ['webhooks'] } },
633
623
  options: [
624
+ { name: 'Get', value: 'get', description: 'Get a webhook by ID', action: 'Get webhook' },
634
625
  {
635
626
  name: 'List',
636
627
  value: 'list',
637
628
  description: 'List all registered webhooks',
638
629
  action: 'List webhooks',
639
630
  },
640
- { name: 'Get', value: 'get', description: 'Get a webhook by ID', action: 'Get webhook' },
641
- {
642
- name: 'Update',
643
- value: 'update',
644
- description: 'Update a webhook subscription',
645
- action: 'Update webhook',
646
- },
647
631
  {
648
632
  name: 'Test Webhook',
649
633
  value: 'testWebhook',
650
634
  description: 'Send a test delivery to a webhook',
651
635
  action: 'Send a test webhook delivery',
652
636
  },
637
+ {
638
+ name: 'Update',
639
+ value: 'update',
640
+ description: 'Update a webhook subscription',
641
+ action: 'Update webhook',
642
+ },
653
643
  ],
654
644
  default: 'list',
655
645
  },
@@ -660,6 +650,12 @@ class SendIt {
660
650
  noDataExpression: true,
661
651
  displayOptions: { show: { resource: ['deadLetter'] } },
662
652
  options: [
653
+ {
654
+ name: 'Discard',
655
+ value: 'discard',
656
+ description: 'Permanently discard a dead letter post',
657
+ action: 'Discard dead letter post',
658
+ },
663
659
  {
664
660
  name: 'List',
665
661
  value: 'list',
@@ -672,12 +668,6 @@ class SendIt {
672
668
  description: 'Retry a failed post from the dead letter queue',
673
669
  action: 'Requeue dead letter post',
674
670
  },
675
- {
676
- name: 'Discard',
677
- value: 'discard',
678
- description: 'Permanently discard a dead letter post',
679
- action: 'Discard dead letter post',
680
- },
681
671
  ],
682
672
  default: 'list',
683
673
  },
@@ -773,18 +763,6 @@ class SendIt {
773
763
  },
774
764
  description: 'URL to an image or video. Required for Instagram, TikTok, and Pinterest. Optional for LinkedIn, X, Threads, and others.',
775
765
  },
776
- {
777
- displayName: 'Input Mode',
778
- name: 'mediaInputMode',
779
- type: 'options',
780
- options: [
781
- { name: 'Binary Data', value: 'binary' },
782
- { name: 'File Path', value: 'filePath' },
783
- ],
784
- default: 'binary',
785
- displayOptions: { show: { resource: ['media'], operation: ['upload'] } },
786
- description: 'How to provide the media file',
787
- },
788
766
  {
789
767
  displayName: 'Binary Property',
790
768
  name: 'binaryPropertyName',
@@ -794,25 +772,10 @@ class SendIt {
794
772
  show: {
795
773
  resource: ['media'],
796
774
  operation: ['upload'],
797
- mediaInputMode: ['binary'],
798
775
  },
799
776
  },
800
777
  description: 'Name of the binary property containing the file',
801
778
  },
802
- {
803
- displayName: 'File Path',
804
- name: 'filePath',
805
- type: 'string',
806
- default: '',
807
- displayOptions: {
808
- show: {
809
- resource: ['media'],
810
- operation: ['upload'],
811
- mediaInputMode: ['filePath'],
812
- },
813
- },
814
- description: 'Absolute path to the media file',
815
- },
816
779
  {
817
780
  displayName: 'AI Prompt',
818
781
  name: 'aiPrompt',
@@ -834,14 +797,14 @@ class SendIt {
834
797
  description: 'When to publish the post',
835
798
  },
836
799
  {
837
- displayName: 'Scheduled Post',
800
+ displayName: 'Scheduled Post Name or ID',
838
801
  name: 'scheduleId',
839
802
  type: 'options',
840
803
  typeOptions: { loadOptionsMethod: 'getScheduledPosts' },
841
804
  default: '',
842
805
  required: true,
843
806
  displayOptions: { show: { resource: ['scheduledPost'], operation: ['delete', 'trigger'] } },
844
- description: 'Choose from the list, or specify an ID using an expression.',
807
+ description: 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
845
808
  },
846
809
  {
847
810
  displayName: 'Platform Filter',
@@ -853,14 +816,14 @@ class SendIt {
853
816
  description: 'Filter scheduled posts by platform',
854
817
  },
855
818
  {
856
- displayName: 'Platform',
819
+ displayName: 'Platform Name or ID',
857
820
  name: 'analyticsPlatform',
858
821
  type: 'options',
859
822
  typeOptions: { loadOptionsMethod: 'getConnectedPlatforms' },
860
823
  default: '',
861
824
  required: true,
862
825
  displayOptions: { show: { resource: ['analytics'], operation: ['getAnalytics'] } },
863
- description: 'Choose from the list, or specify an ID using an expression.',
826
+ description: 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
864
827
  },
865
828
  {
866
829
  displayName: 'Additional Options',
@@ -873,18 +836,23 @@ class SendIt {
873
836
  },
874
837
  options: [
875
838
  {
876
- displayName: 'Media URLs (for carousel)',
877
- name: 'mediaUrls',
878
- type: 'string',
879
- default: '',
880
- description: 'Comma-separated URLs for carousel posts',
839
+ displayName: 'Facebook Mode',
840
+ name: 'facebookMode',
841
+ type: 'options',
842
+ options: [
843
+ { name: 'Auto (Try Reels First)', value: 'auto' },
844
+ { name: 'Reel', value: 'reel' },
845
+ { name: 'Feed Video', value: 'feed' },
846
+ ],
847
+ default: 'auto',
848
+ description: 'How to publish videos to Facebook',
881
849
  },
882
850
  {
883
851
  displayName: 'Media Type',
884
852
  name: 'mediaType',
885
853
  type: 'options',
886
854
  options: [
887
- { name: 'Auto-detect', value: 'auto' },
855
+ { name: 'Auto-Detect', value: 'auto' },
888
856
  { name: 'Image', value: 'image' },
889
857
  { name: 'Video', value: 'video' },
890
858
  ],
@@ -892,16 +860,18 @@ class SendIt {
892
860
  description: 'Specify the media type',
893
861
  },
894
862
  {
895
- displayName: 'Facebook Mode',
896
- name: 'facebookMode',
897
- type: 'options',
898
- options: [
899
- { name: 'Auto (try Reels first)', value: 'auto' },
900
- { name: 'Reel', value: 'reel' },
901
- { name: 'Feed Video', value: 'feed' },
902
- ],
903
- default: 'auto',
904
- description: 'How to publish videos to Facebook',
863
+ displayName: 'Media URLs (for Carousel)',
864
+ name: 'mediaUrls',
865
+ type: 'string',
866
+ default: '',
867
+ description: 'Comma-separated URLs for carousel posts',
868
+ },
869
+ {
870
+ displayName: 'Pinterest Board ID',
871
+ name: 'pinterestBoardId',
872
+ type: 'string',
873
+ default: '',
874
+ description: 'Pinterest board ID to pin to',
905
875
  },
906
876
  {
907
877
  displayName: 'YouTube Mode',
@@ -915,13 +885,6 @@ class SendIt {
915
885
  default: 'auto',
916
886
  description: 'How to publish videos to YouTube',
917
887
  },
918
- {
919
- displayName: 'Pinterest Board ID',
920
- name: 'pinterestBoardId',
921
- type: 'string',
922
- default: '',
923
- description: 'Pinterest board ID to pin to',
924
- },
925
888
  ],
926
889
  },
927
890
  {
@@ -934,30 +897,43 @@ class SendIt {
934
897
  show: { resource: ['post', 'ai'], operation: ['publishAi', 'generate'] },
935
898
  },
936
899
  options: [
900
+ {
901
+ displayName: 'Call To Action',
902
+ name: 'callToAction',
903
+ type: 'string',
904
+ default: '',
905
+ description: 'Call-to-action to include in content',
906
+ },
907
+ {
908
+ displayName: 'Facebook Mode',
909
+ name: 'facebookMode',
910
+ type: 'options',
911
+ options: [
912
+ { name: 'Auto (Try Reels First)', value: 'auto' },
913
+ { name: 'Reel', value: 'reel' },
914
+ { name: 'Feed Video', value: 'feed' },
915
+ ],
916
+ default: 'auto',
917
+ description: 'How to publish videos to Facebook',
918
+ },
937
919
  {
938
920
  displayName: 'Hashtags',
939
921
  name: 'hashtags',
940
922
  type: 'options',
941
923
  options: [
942
924
  { name: 'Platform Default', value: 'platform_auto' },
943
- { name: 'On (include hashtags)', value: 'on' },
944
- { name: 'Off (no hashtags)', value: 'off' },
925
+ { name: 'On (Include Hashtags)', value: 'on' },
926
+ { name: 'Off (No Hashtags)', value: 'off' },
945
927
  ],
946
928
  default: 'platform_auto',
947
929
  description: 'Hashtag generation mode',
948
930
  },
949
931
  {
950
- displayName: 'Tone',
951
- name: 'tone',
952
- type: 'options',
953
- options: [
954
- { name: 'Professional', value: 'professional' },
955
- { name: 'Casual', value: 'casual' },
956
- { name: 'Energetic', value: 'energetic' },
957
- { name: 'Informative', value: 'informative' },
958
- ],
959
- default: 'professional',
960
- description: 'Content tone',
932
+ displayName: 'Strict AI',
933
+ name: 'strictAi',
934
+ type: 'boolean',
935
+ default: false,
936
+ description: 'Whether to fail if AI generation fails (otherwise use fallback templates)',
961
937
  },
962
938
  {
963
939
  displayName: 'Style',
@@ -973,30 +949,17 @@ class SendIt {
973
949
  description: 'Content style',
974
950
  },
975
951
  {
976
- displayName: 'Call To Action',
977
- name: 'callToAction',
978
- type: 'string',
979
- default: '',
980
- description: 'Call-to-action to include in content',
981
- },
982
- {
983
- displayName: 'Strict AI',
984
- name: 'strictAi',
985
- type: 'boolean',
986
- default: false,
987
- description: 'Fail if AI generation fails (otherwise use fallback templates)',
988
- },
989
- {
990
- displayName: 'Facebook Mode',
991
- name: 'facebookMode',
952
+ displayName: 'Tone',
953
+ name: 'tone',
992
954
  type: 'options',
993
955
  options: [
994
- { name: 'Auto (try Reels first)', value: 'auto' },
995
- { name: 'Reel', value: 'reel' },
996
- { name: 'Feed Video', value: 'feed' },
956
+ { name: 'Professional', value: 'professional' },
957
+ { name: 'Casual', value: 'casual' },
958
+ { name: 'Energetic', value: 'energetic' },
959
+ { name: 'Informative', value: 'informative' },
997
960
  ],
998
- default: 'auto',
999
- description: 'How to publish videos to Facebook',
961
+ default: 'professional',
962
+ description: 'Content tone',
1000
963
  },
1001
964
  {
1002
965
  displayName: 'YouTube Mode',
@@ -1067,7 +1030,7 @@ class SendIt {
1067
1030
  },
1068
1031
  // ===== Brand voice fields =====
1069
1032
  {
1070
- displayName: 'Brand Voice',
1033
+ displayName: 'Brand Voice Name or ID',
1071
1034
  name: 'brandVoiceId',
1072
1035
  type: 'options',
1073
1036
  typeOptions: { loadOptionsMethod: 'getBrandVoices' },
@@ -1076,7 +1039,7 @@ class SendIt {
1076
1039
  displayOptions: {
1077
1040
  show: { resource: ['brandVoice'], operation: ['get', 'update', 'delete'] },
1078
1041
  },
1079
- description: 'Choose from the list, or specify an ID using an expression.',
1042
+ description: 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
1080
1043
  },
1081
1044
  {
1082
1045
  displayName: 'Voice Name',
@@ -1183,14 +1146,14 @@ class SendIt {
1183
1146
  description: 'Optional campaign end date/time (ISO 8601)',
1184
1147
  },
1185
1148
  {
1186
- displayName: 'Campaign',
1149
+ displayName: 'Campaign Name or ID',
1187
1150
  name: 'campaignId',
1188
1151
  type: 'options',
1189
1152
  typeOptions: { loadOptionsMethod: 'getCampaigns' },
1190
1153
  default: '',
1191
1154
  required: true,
1192
1155
  displayOptions: { show: { resource: ['campaign'], operation: ['schedule'] } },
1193
- description: 'Choose from the list, or specify an ID using an expression.',
1156
+ description: 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
1194
1157
  },
1195
1158
  // ===== Inbox fields =====
1196
1159
  {
@@ -1208,10 +1171,10 @@ class SendIt {
1208
1171
  type: 'options',
1209
1172
  options: [
1210
1173
  { name: 'All Statuses', value: '' },
1174
+ { name: 'Archived', value: 'archived' },
1175
+ { name: 'Closed', value: 'closed' },
1211
1176
  { name: 'Open', value: 'open' },
1212
1177
  { name: 'Replied', value: 'replied' },
1213
- { name: 'Closed', value: 'closed' },
1214
- { name: 'Archived', value: 'archived' },
1215
1178
  ],
1216
1179
  default: '',
1217
1180
  displayOptions: { show: { resource: ['inbox'], operation: ['list'] } },
@@ -1227,7 +1190,7 @@ class SendIt {
1227
1190
  description: 'Maximum number of threads to return (1-50)',
1228
1191
  },
1229
1192
  {
1230
- displayName: 'Inbox Thread',
1193
+ displayName: 'Inbox Thread Name or ID',
1231
1194
  name: 'inboxThreadId',
1232
1195
  type: 'options',
1233
1196
  typeOptions: { loadOptionsMethod: 'getInboxThreads' },
@@ -1239,7 +1202,7 @@ class SendIt {
1239
1202
  operation: ['reply', 'getThread', 'updateStatus'],
1240
1203
  },
1241
1204
  },
1242
- description: 'Choose from the list, or specify an ID using an expression.',
1205
+ description: 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
1243
1206
  },
1244
1207
  {
1245
1208
  displayName: 'Reply Message',
@@ -1256,10 +1219,10 @@ class SendIt {
1256
1219
  name: 'inboxThreadStatus',
1257
1220
  type: 'options',
1258
1221
  options: [
1222
+ { name: 'Archived', value: 'archived' },
1223
+ { name: 'Closed', value: 'closed' },
1259
1224
  { name: 'Open', value: 'open' },
1260
1225
  { name: 'Replied', value: 'replied' },
1261
- { name: 'Closed', value: 'closed' },
1262
- { name: 'Archived', value: 'archived' },
1263
1226
  ],
1264
1227
  default: 'open',
1265
1228
  required: true,
@@ -1290,7 +1253,7 @@ class SendIt {
1290
1253
  description: 'Comma-separated keyword IDs to refresh',
1291
1254
  },
1292
1255
  {
1293
- displayName: 'Listening Keyword',
1256
+ displayName: 'Listening Keyword Name or ID',
1294
1257
  name: 'listeningKeywordId',
1295
1258
  type: 'options',
1296
1259
  typeOptions: { loadOptionsMethod: 'getListeningKeywords' },
@@ -1302,7 +1265,7 @@ class SendIt {
1302
1265
  operation: ['getKeyword', 'updateKeyword', 'deleteKeyword'],
1303
1266
  },
1304
1267
  },
1305
- description: 'Choose from the list, or specify an ID using an expression.',
1268
+ description: 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
1306
1269
  },
1307
1270
  {
1308
1271
  displayName: 'Keyword',
@@ -1320,9 +1283,9 @@ class SendIt {
1320
1283
  options: [
1321
1284
  { name: 'Brand', value: 'brand' },
1322
1285
  { name: 'Competitor', value: 'competitor' },
1323
- { name: 'Product', value: 'product' },
1324
- { name: 'Hashtag', value: 'hashtag' },
1325
1286
  { name: 'Custom', value: 'custom' },
1287
+ { name: 'Hashtag', value: 'hashtag' },
1288
+ { name: 'Product', value: 'product' },
1326
1289
  ],
1327
1290
  default: 'brand',
1328
1291
  displayOptions: {
@@ -1339,7 +1302,7 @@ class SendIt {
1339
1302
  type: 'boolean',
1340
1303
  default: true,
1341
1304
  displayOptions: { show: { resource: ['listening'], operation: ['listKeywords'] } },
1342
- description: 'Only include active keywords',
1305
+ description: 'Whether to only include active keywords',
1343
1306
  },
1344
1307
  {
1345
1308
  displayName: 'Notify Email',
@@ -1349,7 +1312,7 @@ class SendIt {
1349
1312
  displayOptions: {
1350
1313
  show: { resource: ['listening'], operation: ['createKeyword', 'updateKeyword'] },
1351
1314
  },
1352
- description: 'Enable email notifications',
1315
+ description: 'Whether to enable email notifications',
1353
1316
  },
1354
1317
  {
1355
1318
  displayName: 'Notify Webhook',
@@ -1359,7 +1322,7 @@ class SendIt {
1359
1322
  displayOptions: {
1360
1323
  show: { resource: ['listening'], operation: ['createKeyword', 'updateKeyword'] },
1361
1324
  },
1362
- description: 'Enable webhook notifications',
1325
+ description: 'Whether to enable webhook notifications',
1363
1326
  },
1364
1327
  {
1365
1328
  displayName: 'Webhook URL',
@@ -1377,9 +1340,9 @@ class SendIt {
1377
1340
  type: 'options',
1378
1341
  options: [
1379
1342
  { name: 'Any', value: '' },
1380
- { name: 'Positive', value: 'positive' },
1381
- { name: 'Neutral', value: 'neutral' },
1382
1343
  { name: 'Negative', value: 'negative' },
1344
+ { name: 'Neutral', value: 'neutral' },
1345
+ { name: 'Positive', value: 'positive' },
1383
1346
  ],
1384
1347
  default: '',
1385
1348
  displayOptions: {
@@ -1388,7 +1351,6 @@ class SendIt {
1388
1351
  operation: ['createKeyword', 'updateKeyword', 'listMentions'],
1389
1352
  },
1390
1353
  },
1391
- description: 'Sentiment filter',
1392
1354
  },
1393
1355
  {
1394
1356
  displayName: 'Mention ID',
@@ -1397,7 +1359,6 @@ class SendIt {
1397
1359
  default: '',
1398
1360
  required: true,
1399
1361
  displayOptions: { show: { resource: ['listening'], operation: ['getMention'] } },
1400
- description: 'Mention ID',
1401
1362
  },
1402
1363
  {
1403
1364
  displayName: 'Mention IDs',
@@ -1416,7 +1377,7 @@ class SendIt {
1416
1377
  type: 'boolean',
1417
1378
  default: false,
1418
1379
  displayOptions: { show: { resource: ['listening'], operation: ['listAlerts'] } },
1419
- description: 'Only include unread alerts',
1380
+ description: 'Whether to only include unread alerts',
1420
1381
  },
1421
1382
  {
1422
1383
  displayName: 'Alert Priority',
@@ -1424,10 +1385,10 @@ class SendIt {
1424
1385
  type: 'options',
1425
1386
  options: [
1426
1387
  { name: 'Any', value: '' },
1388
+ { name: 'Critical', value: 'critical' },
1389
+ { name: 'High', value: 'high' },
1427
1390
  { name: 'Low', value: 'low' },
1428
1391
  { name: 'Medium', value: 'medium' },
1429
- { name: 'High', value: 'high' },
1430
- { name: 'Critical', value: 'critical' },
1431
1392
  ],
1432
1393
  default: '',
1433
1394
  displayOptions: { show: { resource: ['listening'], operation: ['listAlerts'] } },
@@ -1486,9 +1447,9 @@ class SendIt {
1486
1447
  name: 'listeningIsArchived',
1487
1448
  type: 'options',
1488
1449
  options: [
1450
+ { name: 'Active', value: 'false' },
1489
1451
  { name: 'Any', value: '' },
1490
1452
  { name: 'Archived', value: 'true' },
1491
- { name: 'Active', value: 'false' },
1492
1453
  ],
1493
1454
  default: '',
1494
1455
  displayOptions: { show: { resource: ['listening'], operation: ['listMentions'] } },
@@ -1519,10 +1480,10 @@ class SendIt {
1519
1480
  name: 'aiMediaProvider',
1520
1481
  type: 'options',
1521
1482
  options: [
1522
- { name: 'Sora', value: 'sora' },
1523
- { name: 'Runway', value: 'runway' },
1524
- { name: 'Pika', value: 'pika' },
1525
1483
  { name: 'Adobe Express', value: 'adobe-express' },
1484
+ { name: 'Pika', value: 'pika' },
1485
+ { name: 'Runway', value: 'runway' },
1486
+ { name: 'Sora', value: 'sora' },
1526
1487
  ],
1527
1488
  default: 'sora',
1528
1489
  required: true,
@@ -1611,14 +1572,14 @@ class SendIt {
1611
1572
  },
1612
1573
  // ===== Library fields =====
1613
1574
  {
1614
- displayName: 'Library Item',
1575
+ displayName: 'Library Item Name or ID',
1615
1576
  name: 'libraryItemId',
1616
1577
  type: 'options',
1617
1578
  typeOptions: { loadOptionsMethod: 'getLibraryItems' },
1618
1579
  default: '',
1619
1580
  required: true,
1620
1581
  displayOptions: { show: { resource: ['library'], operation: ['get', 'update', 'delete'] } },
1621
- description: 'Choose from the list, or specify an ID using an expression.',
1582
+ description: 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
1622
1583
  },
1623
1584
  {
1624
1585
  displayName: 'Title',
@@ -1645,8 +1606,8 @@ class SendIt {
1645
1606
  type: 'options',
1646
1607
  options: [
1647
1608
  { name: 'Draft', value: 'draft' },
1648
- { name: 'Template', value: 'template' },
1649
1609
  { name: 'Evergreen', value: 'evergreen' },
1610
+ { name: 'Template', value: 'template' },
1650
1611
  ],
1651
1612
  default: 'draft',
1652
1613
  displayOptions: {
@@ -1715,7 +1676,7 @@ class SendIt {
1715
1676
  type: 'boolean',
1716
1677
  default: false,
1717
1678
  displayOptions: { show: { resource: ['library'], operation: ['create', 'update'] } },
1718
- description: 'Enable evergreen republishing',
1679
+ description: 'Whether to enable evergreen republishing',
1719
1680
  },
1720
1681
  {
1721
1682
  displayName: 'Evergreen Interval Days',
@@ -1798,7 +1759,7 @@ class SendIt {
1798
1759
  type: 'boolean',
1799
1760
  default: false,
1800
1761
  displayOptions: { show: { resource: ['bulkSchedule'], operation: ['importCsv'] } },
1801
- description: 'Continue import even if some rows fail validation',
1762
+ description: 'Whether to continue import even if some rows fail validation',
1802
1763
  },
1803
1764
  // ===== Connect fields =====
1804
1765
  {
@@ -1846,7 +1807,7 @@ class SendIt {
1846
1807
  },
1847
1808
  // ===== Webhook fields =====
1848
1809
  {
1849
- displayName: 'Webhook',
1810
+ displayName: 'Webhook Name or ID',
1850
1811
  name: 'webhookId',
1851
1812
  type: 'options',
1852
1813
  typeOptions: { loadOptionsMethod: 'getWebhooks' },
@@ -1855,7 +1816,7 @@ class SendIt {
1855
1816
  displayOptions: {
1856
1817
  show: { resource: ['webhooks'], operation: ['get', 'update', 'testWebhook'] },
1857
1818
  },
1858
- description: 'Choose from the list, or specify an ID using an expression.',
1819
+ description: 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
1859
1820
  },
1860
1821
  {
1861
1822
  displayName: 'Webhook URL',
@@ -1889,8 +1850,8 @@ class SendIt {
1889
1850
  options: [
1890
1851
  { name: 'All Statuses', value: '' },
1891
1852
  { name: 'Dead', value: 'dead' },
1892
- { name: 'Requeued', value: 'requeued' },
1893
1853
  { name: 'Discarded', value: 'discarded' },
1854
+ { name: 'Requeued', value: 'requeued' },
1894
1855
  ],
1895
1856
  default: '',
1896
1857
  displayOptions: { show: { resource: ['deadLetter'], operation: ['list'] } },
@@ -1906,14 +1867,14 @@ class SendIt {
1906
1867
  description: 'Maximum number of dead letter posts to return',
1907
1868
  },
1908
1869
  {
1909
- displayName: 'Dead Letter Post',
1870
+ displayName: 'Dead Letter Post Name or ID',
1910
1871
  name: 'deadLetterId',
1911
1872
  type: 'options',
1912
1873
  typeOptions: { loadOptionsMethod: 'getDeadLetterPosts' },
1913
1874
  default: '',
1914
1875
  required: true,
1915
1876
  displayOptions: { show: { resource: ['deadLetter'], operation: ['requeue', 'discard'] } },
1916
- description: 'Choose from the list, or specify an ID using an expression.',
1877
+ description: 'Choose from the list, or specify an ID using an expression. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
1917
1878
  },
1918
1879
  // ===== Audit log fields =====
1919
1880
  {
@@ -2098,11 +2059,11 @@ class SendIt {
2098
2059
  name: 'advancedMethod',
2099
2060
  type: 'options',
2100
2061
  options: [
2062
+ { name: 'DELETE', value: 'DELETE' },
2101
2063
  { name: 'GET', value: 'GET' },
2102
- { name: 'POST', value: 'POST' },
2103
2064
  { name: 'PATCH', value: 'PATCH' },
2065
+ { name: 'POST', value: 'POST' },
2104
2066
  { name: 'PUT', value: 'PUT' },
2105
- { name: 'DELETE', value: 'DELETE' },
2106
2067
  ],
2107
2068
  default: 'GET',
2108
2069
  required: true,
@@ -2141,16 +2102,16 @@ class SendIt {
2141
2102
  name: 'advancedResponseMode',
2142
2103
  type: 'options',
2143
2104
  options: [
2105
+ { name: 'Binary', value: 'binary' },
2144
2106
  { name: 'JSON', value: 'json' },
2145
2107
  { name: 'Text', value: 'text' },
2146
- { name: 'Binary', value: 'binary' },
2147
2108
  ],
2148
2109
  default: 'json',
2149
2110
  displayOptions: { show: { resource: ['advanced'], operation: ['apiRequest'] } },
2150
2111
  description: 'How to decode the response payload',
2151
2112
  },
2152
2113
  {
2153
- displayName: 'Request Timeout (ms)',
2114
+ displayName: 'Request Timeout (Ms)',
2154
2115
  name: 'requestTimeoutMs',
2155
2116
  type: 'number',
2156
2117
  default: 30000,
@@ -2158,6 +2119,7 @@ class SendIt {
2158
2119
  description: 'Request timeout in milliseconds',
2159
2120
  },
2160
2121
  ],
2122
+ usableAsTool: true,
2161
2123
  };
2162
2124
  this.methods = {
2163
2125
  loadOptions: {
@@ -2323,7 +2285,8 @@ class SendIt {
2323
2285
  });
2324
2286
  continue;
2325
2287
  }
2326
- throw error;
2288
+ const message = error instanceof Error ? error.message : 'SendIt operation failed';
2289
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), message);
2327
2290
  }
2328
2291
  }
2329
2292
  return [returnData];