n8n-nodes-sendit 1.3.1 → 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.
- package/README.md +4 -3
- package/dist/credentials/SendItApi.credentials.d.ts +2 -1
- package/dist/credentials/SendItApi.credentials.js +1 -0
- package/dist/credentials/sendit.svg +41 -0
- package/dist/nodes/SendIt/SendIt.node.js +243 -253
- package/dist/nodes/SendIt/SendItTrigger.node.js +2 -1
- package/dist/nodes/SendIt/handlers/advanced.js +1 -1
- package/dist/nodes/SendIt/handlers/connect.js +2 -2
- package/dist/nodes/SendIt/helpers.d.ts +1 -1
- package/dist/nodes/SendIt/helpers.js +3 -3
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -4,11 +4,12 @@ This is an n8n community node for [SendIt](https://sendit.infiniteappsai.com), a
|
|
|
4
4
|
|
|
5
5
|
[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
|
|
6
6
|
|
|
7
|
-
## Release Notes (v1.3.
|
|
7
|
+
## Release Notes (v1.3.2)
|
|
8
8
|
|
|
9
|
-
`1.3.
|
|
9
|
+
`1.3.2` is an n8n verification follow-up release:
|
|
10
10
|
|
|
11
11
|
- **n8n verification readiness**: Added GitHub Actions provenance publishing support for npm releases
|
|
12
|
+
- **n8n review fixes**: Uses `NodeConnectionTypes.Main`, removes unused request defaults, adds a credential icon, and returns `NodeOperationError` for JSON object validation
|
|
12
13
|
- **Cloud-safe media upload**: Removed host file path reads; media uploads now use n8n binary data only
|
|
13
14
|
- **Standalone package fix**: Removed package imports from the SendIt server codebase
|
|
14
15
|
- **Refactored architecture**: Monolithic 2,842-line node split into handler-per-resource dispatch map (23 handler modules)
|
|
@@ -52,7 +53,7 @@ Add a **SendIt Trigger** node as the first node in a new workflow. Select events
|
|
|
52
53
|
|
|
53
54
|
Read content ideas from a spreadsheet, generate AI copy, publish to multiple platforms, and get notified on success.
|
|
54
55
|
|
|
55
|
-
## Node Coverage (v1.3.
|
|
56
|
+
## Node Coverage (v1.3.2)
|
|
56
57
|
|
|
57
58
|
### Trigger
|
|
58
59
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
1
|
+
import { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, Icon, INodeProperties } from 'n8n-workflow';
|
|
2
2
|
export declare class SendItApi implements ICredentialType {
|
|
3
3
|
name: string;
|
|
4
4
|
displayName: string;
|
|
5
5
|
documentationUrl: string;
|
|
6
|
+
icon: Icon;
|
|
6
7
|
properties: INodeProperties[];
|
|
7
8
|
authenticate: IAuthenticateGeneric;
|
|
8
9
|
test: ICredentialTestRequest;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="60" height="60" viewBox="0 0 60 60">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bolt" x1="0%" y1="100%" x2="100%" y2="0%">
|
|
4
|
+
<stop offset="0%" stop-color="#00B4D8"/>
|
|
5
|
+
<stop offset="50%" stop-color="#00D68F"/>
|
|
6
|
+
<stop offset="100%" stop-color="#80F09A"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
<linearGradient id="glow" x1="0%" y1="100%" x2="100%" y2="0%">
|
|
9
|
+
<stop offset="0%" stop-color="#00B4D8" stop-opacity="0.3"/>
|
|
10
|
+
<stop offset="100%" stop-color="#80F09A" stop-opacity="0.3"/>
|
|
11
|
+
</linearGradient>
|
|
12
|
+
</defs>
|
|
13
|
+
<rect width="60" height="60" rx="12" fill="#1A1F2E"/>
|
|
14
|
+
<!-- Lightning bolt S-shape (main stroke) -->
|
|
15
|
+
<path d="M36 5 L22 26 L32 26 L20 55 L44 28 L33 28 L44 10 Z"
|
|
16
|
+
fill="none" stroke="url(#bolt)" stroke-width="2.8"
|
|
17
|
+
stroke-linejoin="round" stroke-linecap="round"/>
|
|
18
|
+
<!-- Arrow tip at top-right -->
|
|
19
|
+
<path d="M38 8 L44 10 L40 15"
|
|
20
|
+
fill="none" stroke="url(#bolt)" stroke-width="2.2"
|
|
21
|
+
stroke-linejoin="round" stroke-linecap="round"/>
|
|
22
|
+
<!-- Inner circuit traces -->
|
|
23
|
+
<path d="M30 16 L30 22 L34 22"
|
|
24
|
+
fill="none" stroke="url(#bolt)" stroke-width="1.2"
|
|
25
|
+
stroke-linecap="round" opacity="0.7"/>
|
|
26
|
+
<path d="M28 36 L28 42 L32 42"
|
|
27
|
+
fill="none" stroke="url(#bolt)" stroke-width="1.2"
|
|
28
|
+
stroke-linecap="round" opacity="0.7"/>
|
|
29
|
+
<path d="M26 29 L30 33"
|
|
30
|
+
fill="none" stroke="url(#bolt)" stroke-width="1.2"
|
|
31
|
+
stroke-linecap="round" opacity="0.6"/>
|
|
32
|
+
<!-- Circuit nodes -->
|
|
33
|
+
<circle cx="34" cy="22" r="1.8" fill="#00D68F"/>
|
|
34
|
+
<circle cx="30" cy="16" r="1.4" fill="#00C4E0" opacity="0.8"/>
|
|
35
|
+
<circle cx="32" cy="42" r="1.8" fill="#80F09A"/>
|
|
36
|
+
<circle cx="28" cy="36" r="1.4" fill="#00D68F" opacity="0.8"/>
|
|
37
|
+
<circle cx="30" cy="33" r="1.2" fill="#00C4E0" opacity="0.6"/>
|
|
38
|
+
<!-- Subtle glow fill -->
|
|
39
|
+
<path d="M36 5 L22 26 L32 26 L20 55 L44 28 L33 28 L44 10 Z"
|
|
40
|
+
fill="url(#glow)" opacity="0.4"/>
|
|
41
|
+
</svg>
|
|
@@ -18,21 +18,14 @@ class SendIt {
|
|
|
18
18
|
defaults: {
|
|
19
19
|
name: 'SendIt',
|
|
20
20
|
},
|
|
21
|
-
inputs: [
|
|
22
|
-
outputs: [
|
|
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: '
|
|
44
|
-
{ name: '
|
|
45
|
-
{ name: 'Media', value: 'media' },
|
|
36
|
+
{ name: 'Account', value: 'account' },
|
|
37
|
+
{ name: 'Advanced', value: 'advanced' },
|
|
46
38
|
{ name: 'AI', value: 'ai' },
|
|
47
39
|
{ 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
40
|
{ name: 'Analytics', value: 'analytics' },
|
|
57
|
-
{ name: '
|
|
58
|
-
{ name: 'Conversions', value: 'conversions' },
|
|
59
|
-
{ name: 'Webhooks', value: 'webhooks' },
|
|
60
|
-
{ name: 'Dead Letter', value: 'deadLetter' },
|
|
41
|
+
{ name: 'Approval', value: 'approvals' },
|
|
61
42
|
{ name: 'Audit Log', value: 'auditLog' },
|
|
43
|
+
{ name: 'Brand Voice', value: 'brandVoice' },
|
|
62
44
|
{ name: 'Bulk Schedule', value: 'bulkSchedule' },
|
|
45
|
+
{ name: 'Campaign', value: 'campaign' },
|
|
63
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' },
|
|
64
54
|
{ name: 'Meta', value: 'meta' },
|
|
65
|
-
{ name: '
|
|
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
|
|
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: '
|
|
168
|
-
value: '
|
|
169
|
-
description: '
|
|
170
|
-
action: '
|
|
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
|
|
226
|
+
name: 'Get Many',
|
|
234
227
|
value: 'getAll',
|
|
235
|
-
description: 'Get
|
|
236
|
-
action: 'Get
|
|
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: '
|
|
288
|
-
value: '
|
|
289
|
-
description: '
|
|
290
|
-
action: '
|
|
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: '
|
|
384
|
-
value: '
|
|
385
|
-
|
|
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: '
|
|
420
|
-
value: '
|
|
421
|
-
|
|
422
|
-
|
|
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: '
|
|
432
|
-
value: '
|
|
433
|
-
description: '
|
|
434
|
-
action: '
|
|
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: '
|
|
456
|
-
value: '
|
|
457
|
-
description: '
|
|
458
|
-
action: '
|
|
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: '
|
|
462
|
-
value: '
|
|
463
|
-
description: '
|
|
464
|
-
action: '
|
|
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
|
|
518
|
-
value: '
|
|
519
|
-
description: 'Get
|
|
520
|
-
action: 'Get
|
|
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
|
},
|
|
@@ -807,14 +797,14 @@ class SendIt {
|
|
|
807
797
|
description: 'When to publish the post',
|
|
808
798
|
},
|
|
809
799
|
{
|
|
810
|
-
displayName: 'Scheduled Post',
|
|
800
|
+
displayName: 'Scheduled Post Name or ID',
|
|
811
801
|
name: 'scheduleId',
|
|
812
802
|
type: 'options',
|
|
813
803
|
typeOptions: { loadOptionsMethod: 'getScheduledPosts' },
|
|
814
804
|
default: '',
|
|
815
805
|
required: true,
|
|
816
806
|
displayOptions: { show: { resource: ['scheduledPost'], operation: ['delete', 'trigger'] } },
|
|
817
|
-
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>.',
|
|
818
808
|
},
|
|
819
809
|
{
|
|
820
810
|
displayName: 'Platform Filter',
|
|
@@ -826,14 +816,14 @@ class SendIt {
|
|
|
826
816
|
description: 'Filter scheduled posts by platform',
|
|
827
817
|
},
|
|
828
818
|
{
|
|
829
|
-
displayName: 'Platform',
|
|
819
|
+
displayName: 'Platform Name or ID',
|
|
830
820
|
name: 'analyticsPlatform',
|
|
831
821
|
type: 'options',
|
|
832
822
|
typeOptions: { loadOptionsMethod: 'getConnectedPlatforms' },
|
|
833
823
|
default: '',
|
|
834
824
|
required: true,
|
|
835
825
|
displayOptions: { show: { resource: ['analytics'], operation: ['getAnalytics'] } },
|
|
836
|
-
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>.',
|
|
837
827
|
},
|
|
838
828
|
{
|
|
839
829
|
displayName: 'Additional Options',
|
|
@@ -846,18 +836,23 @@ class SendIt {
|
|
|
846
836
|
},
|
|
847
837
|
options: [
|
|
848
838
|
{
|
|
849
|
-
displayName: '
|
|
850
|
-
name: '
|
|
851
|
-
type: '
|
|
852
|
-
|
|
853
|
-
|
|
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',
|
|
854
849
|
},
|
|
855
850
|
{
|
|
856
851
|
displayName: 'Media Type',
|
|
857
852
|
name: 'mediaType',
|
|
858
853
|
type: 'options',
|
|
859
854
|
options: [
|
|
860
|
-
{ name: 'Auto-
|
|
855
|
+
{ name: 'Auto-Detect', value: 'auto' },
|
|
861
856
|
{ name: 'Image', value: 'image' },
|
|
862
857
|
{ name: 'Video', value: 'video' },
|
|
863
858
|
],
|
|
@@ -865,16 +860,18 @@ class SendIt {
|
|
|
865
860
|
description: 'Specify the media type',
|
|
866
861
|
},
|
|
867
862
|
{
|
|
868
|
-
displayName: '
|
|
869
|
-
name: '
|
|
870
|
-
type: '
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
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',
|
|
878
875
|
},
|
|
879
876
|
{
|
|
880
877
|
displayName: 'YouTube Mode',
|
|
@@ -888,13 +885,6 @@ class SendIt {
|
|
|
888
885
|
default: 'auto',
|
|
889
886
|
description: 'How to publish videos to YouTube',
|
|
890
887
|
},
|
|
891
|
-
{
|
|
892
|
-
displayName: 'Pinterest Board ID',
|
|
893
|
-
name: 'pinterestBoardId',
|
|
894
|
-
type: 'string',
|
|
895
|
-
default: '',
|
|
896
|
-
description: 'Pinterest board ID to pin to',
|
|
897
|
-
},
|
|
898
888
|
],
|
|
899
889
|
},
|
|
900
890
|
{
|
|
@@ -907,30 +897,43 @@ class SendIt {
|
|
|
907
897
|
show: { resource: ['post', 'ai'], operation: ['publishAi', 'generate'] },
|
|
908
898
|
},
|
|
909
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
|
+
},
|
|
910
919
|
{
|
|
911
920
|
displayName: 'Hashtags',
|
|
912
921
|
name: 'hashtags',
|
|
913
922
|
type: 'options',
|
|
914
923
|
options: [
|
|
915
924
|
{ name: 'Platform Default', value: 'platform_auto' },
|
|
916
|
-
{ name: 'On (
|
|
917
|
-
{ name: 'Off (
|
|
925
|
+
{ name: 'On (Include Hashtags)', value: 'on' },
|
|
926
|
+
{ name: 'Off (No Hashtags)', value: 'off' },
|
|
918
927
|
],
|
|
919
928
|
default: 'platform_auto',
|
|
920
929
|
description: 'Hashtag generation mode',
|
|
921
930
|
},
|
|
922
931
|
{
|
|
923
|
-
displayName: '
|
|
924
|
-
name: '
|
|
925
|
-
type: '
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
{ name: 'Casual', value: 'casual' },
|
|
929
|
-
{ name: 'Energetic', value: 'energetic' },
|
|
930
|
-
{ name: 'Informative', value: 'informative' },
|
|
931
|
-
],
|
|
932
|
-
default: 'professional',
|
|
933
|
-
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)',
|
|
934
937
|
},
|
|
935
938
|
{
|
|
936
939
|
displayName: 'Style',
|
|
@@ -946,30 +949,17 @@ class SendIt {
|
|
|
946
949
|
description: 'Content style',
|
|
947
950
|
},
|
|
948
951
|
{
|
|
949
|
-
displayName: '
|
|
950
|
-
name: '
|
|
951
|
-
type: 'string',
|
|
952
|
-
default: '',
|
|
953
|
-
description: 'Call-to-action to include in content',
|
|
954
|
-
},
|
|
955
|
-
{
|
|
956
|
-
displayName: 'Strict AI',
|
|
957
|
-
name: 'strictAi',
|
|
958
|
-
type: 'boolean',
|
|
959
|
-
default: false,
|
|
960
|
-
description: 'Fail if AI generation fails (otherwise use fallback templates)',
|
|
961
|
-
},
|
|
962
|
-
{
|
|
963
|
-
displayName: 'Facebook Mode',
|
|
964
|
-
name: 'facebookMode',
|
|
952
|
+
displayName: 'Tone',
|
|
953
|
+
name: 'tone',
|
|
965
954
|
type: 'options',
|
|
966
955
|
options: [
|
|
967
|
-
{ name: '
|
|
968
|
-
{ name: '
|
|
969
|
-
{ name: '
|
|
956
|
+
{ name: 'Professional', value: 'professional' },
|
|
957
|
+
{ name: 'Casual', value: 'casual' },
|
|
958
|
+
{ name: 'Energetic', value: 'energetic' },
|
|
959
|
+
{ name: 'Informative', value: 'informative' },
|
|
970
960
|
],
|
|
971
|
-
default: '
|
|
972
|
-
description: '
|
|
961
|
+
default: 'professional',
|
|
962
|
+
description: 'Content tone',
|
|
973
963
|
},
|
|
974
964
|
{
|
|
975
965
|
displayName: 'YouTube Mode',
|
|
@@ -1040,7 +1030,7 @@ class SendIt {
|
|
|
1040
1030
|
},
|
|
1041
1031
|
// ===== Brand voice fields =====
|
|
1042
1032
|
{
|
|
1043
|
-
displayName: 'Brand Voice',
|
|
1033
|
+
displayName: 'Brand Voice Name or ID',
|
|
1044
1034
|
name: 'brandVoiceId',
|
|
1045
1035
|
type: 'options',
|
|
1046
1036
|
typeOptions: { loadOptionsMethod: 'getBrandVoices' },
|
|
@@ -1049,7 +1039,7 @@ class SendIt {
|
|
|
1049
1039
|
displayOptions: {
|
|
1050
1040
|
show: { resource: ['brandVoice'], operation: ['get', 'update', 'delete'] },
|
|
1051
1041
|
},
|
|
1052
|
-
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>.',
|
|
1053
1043
|
},
|
|
1054
1044
|
{
|
|
1055
1045
|
displayName: 'Voice Name',
|
|
@@ -1156,14 +1146,14 @@ class SendIt {
|
|
|
1156
1146
|
description: 'Optional campaign end date/time (ISO 8601)',
|
|
1157
1147
|
},
|
|
1158
1148
|
{
|
|
1159
|
-
displayName: 'Campaign',
|
|
1149
|
+
displayName: 'Campaign Name or ID',
|
|
1160
1150
|
name: 'campaignId',
|
|
1161
1151
|
type: 'options',
|
|
1162
1152
|
typeOptions: { loadOptionsMethod: 'getCampaigns' },
|
|
1163
1153
|
default: '',
|
|
1164
1154
|
required: true,
|
|
1165
1155
|
displayOptions: { show: { resource: ['campaign'], operation: ['schedule'] } },
|
|
1166
|
-
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>.',
|
|
1167
1157
|
},
|
|
1168
1158
|
// ===== Inbox fields =====
|
|
1169
1159
|
{
|
|
@@ -1181,10 +1171,10 @@ class SendIt {
|
|
|
1181
1171
|
type: 'options',
|
|
1182
1172
|
options: [
|
|
1183
1173
|
{ name: 'All Statuses', value: '' },
|
|
1174
|
+
{ name: 'Archived', value: 'archived' },
|
|
1175
|
+
{ name: 'Closed', value: 'closed' },
|
|
1184
1176
|
{ name: 'Open', value: 'open' },
|
|
1185
1177
|
{ name: 'Replied', value: 'replied' },
|
|
1186
|
-
{ name: 'Closed', value: 'closed' },
|
|
1187
|
-
{ name: 'Archived', value: 'archived' },
|
|
1188
1178
|
],
|
|
1189
1179
|
default: '',
|
|
1190
1180
|
displayOptions: { show: { resource: ['inbox'], operation: ['list'] } },
|
|
@@ -1200,7 +1190,7 @@ class SendIt {
|
|
|
1200
1190
|
description: 'Maximum number of threads to return (1-50)',
|
|
1201
1191
|
},
|
|
1202
1192
|
{
|
|
1203
|
-
displayName: 'Inbox Thread',
|
|
1193
|
+
displayName: 'Inbox Thread Name or ID',
|
|
1204
1194
|
name: 'inboxThreadId',
|
|
1205
1195
|
type: 'options',
|
|
1206
1196
|
typeOptions: { loadOptionsMethod: 'getInboxThreads' },
|
|
@@ -1212,7 +1202,7 @@ class SendIt {
|
|
|
1212
1202
|
operation: ['reply', 'getThread', 'updateStatus'],
|
|
1213
1203
|
},
|
|
1214
1204
|
},
|
|
1215
|
-
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>.',
|
|
1216
1206
|
},
|
|
1217
1207
|
{
|
|
1218
1208
|
displayName: 'Reply Message',
|
|
@@ -1229,10 +1219,10 @@ class SendIt {
|
|
|
1229
1219
|
name: 'inboxThreadStatus',
|
|
1230
1220
|
type: 'options',
|
|
1231
1221
|
options: [
|
|
1222
|
+
{ name: 'Archived', value: 'archived' },
|
|
1223
|
+
{ name: 'Closed', value: 'closed' },
|
|
1232
1224
|
{ name: 'Open', value: 'open' },
|
|
1233
1225
|
{ name: 'Replied', value: 'replied' },
|
|
1234
|
-
{ name: 'Closed', value: 'closed' },
|
|
1235
|
-
{ name: 'Archived', value: 'archived' },
|
|
1236
1226
|
],
|
|
1237
1227
|
default: 'open',
|
|
1238
1228
|
required: true,
|
|
@@ -1263,7 +1253,7 @@ class SendIt {
|
|
|
1263
1253
|
description: 'Comma-separated keyword IDs to refresh',
|
|
1264
1254
|
},
|
|
1265
1255
|
{
|
|
1266
|
-
displayName: 'Listening Keyword',
|
|
1256
|
+
displayName: 'Listening Keyword Name or ID',
|
|
1267
1257
|
name: 'listeningKeywordId',
|
|
1268
1258
|
type: 'options',
|
|
1269
1259
|
typeOptions: { loadOptionsMethod: 'getListeningKeywords' },
|
|
@@ -1275,7 +1265,7 @@ class SendIt {
|
|
|
1275
1265
|
operation: ['getKeyword', 'updateKeyword', 'deleteKeyword'],
|
|
1276
1266
|
},
|
|
1277
1267
|
},
|
|
1278
|
-
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>.',
|
|
1279
1269
|
},
|
|
1280
1270
|
{
|
|
1281
1271
|
displayName: 'Keyword',
|
|
@@ -1293,9 +1283,9 @@ class SendIt {
|
|
|
1293
1283
|
options: [
|
|
1294
1284
|
{ name: 'Brand', value: 'brand' },
|
|
1295
1285
|
{ name: 'Competitor', value: 'competitor' },
|
|
1296
|
-
{ name: 'Product', value: 'product' },
|
|
1297
|
-
{ name: 'Hashtag', value: 'hashtag' },
|
|
1298
1286
|
{ name: 'Custom', value: 'custom' },
|
|
1287
|
+
{ name: 'Hashtag', value: 'hashtag' },
|
|
1288
|
+
{ name: 'Product', value: 'product' },
|
|
1299
1289
|
],
|
|
1300
1290
|
default: 'brand',
|
|
1301
1291
|
displayOptions: {
|
|
@@ -1312,7 +1302,7 @@ class SendIt {
|
|
|
1312
1302
|
type: 'boolean',
|
|
1313
1303
|
default: true,
|
|
1314
1304
|
displayOptions: { show: { resource: ['listening'], operation: ['listKeywords'] } },
|
|
1315
|
-
description: '
|
|
1305
|
+
description: 'Whether to only include active keywords',
|
|
1316
1306
|
},
|
|
1317
1307
|
{
|
|
1318
1308
|
displayName: 'Notify Email',
|
|
@@ -1322,7 +1312,7 @@ class SendIt {
|
|
|
1322
1312
|
displayOptions: {
|
|
1323
1313
|
show: { resource: ['listening'], operation: ['createKeyword', 'updateKeyword'] },
|
|
1324
1314
|
},
|
|
1325
|
-
description: '
|
|
1315
|
+
description: 'Whether to enable email notifications',
|
|
1326
1316
|
},
|
|
1327
1317
|
{
|
|
1328
1318
|
displayName: 'Notify Webhook',
|
|
@@ -1332,7 +1322,7 @@ class SendIt {
|
|
|
1332
1322
|
displayOptions: {
|
|
1333
1323
|
show: { resource: ['listening'], operation: ['createKeyword', 'updateKeyword'] },
|
|
1334
1324
|
},
|
|
1335
|
-
description: '
|
|
1325
|
+
description: 'Whether to enable webhook notifications',
|
|
1336
1326
|
},
|
|
1337
1327
|
{
|
|
1338
1328
|
displayName: 'Webhook URL',
|
|
@@ -1350,9 +1340,9 @@ class SendIt {
|
|
|
1350
1340
|
type: 'options',
|
|
1351
1341
|
options: [
|
|
1352
1342
|
{ name: 'Any', value: '' },
|
|
1353
|
-
{ name: 'Positive', value: 'positive' },
|
|
1354
|
-
{ name: 'Neutral', value: 'neutral' },
|
|
1355
1343
|
{ name: 'Negative', value: 'negative' },
|
|
1344
|
+
{ name: 'Neutral', value: 'neutral' },
|
|
1345
|
+
{ name: 'Positive', value: 'positive' },
|
|
1356
1346
|
],
|
|
1357
1347
|
default: '',
|
|
1358
1348
|
displayOptions: {
|
|
@@ -1361,7 +1351,6 @@ class SendIt {
|
|
|
1361
1351
|
operation: ['createKeyword', 'updateKeyword', 'listMentions'],
|
|
1362
1352
|
},
|
|
1363
1353
|
},
|
|
1364
|
-
description: 'Sentiment filter',
|
|
1365
1354
|
},
|
|
1366
1355
|
{
|
|
1367
1356
|
displayName: 'Mention ID',
|
|
@@ -1370,7 +1359,6 @@ class SendIt {
|
|
|
1370
1359
|
default: '',
|
|
1371
1360
|
required: true,
|
|
1372
1361
|
displayOptions: { show: { resource: ['listening'], operation: ['getMention'] } },
|
|
1373
|
-
description: 'Mention ID',
|
|
1374
1362
|
},
|
|
1375
1363
|
{
|
|
1376
1364
|
displayName: 'Mention IDs',
|
|
@@ -1389,7 +1377,7 @@ class SendIt {
|
|
|
1389
1377
|
type: 'boolean',
|
|
1390
1378
|
default: false,
|
|
1391
1379
|
displayOptions: { show: { resource: ['listening'], operation: ['listAlerts'] } },
|
|
1392
|
-
description: '
|
|
1380
|
+
description: 'Whether to only include unread alerts',
|
|
1393
1381
|
},
|
|
1394
1382
|
{
|
|
1395
1383
|
displayName: 'Alert Priority',
|
|
@@ -1397,10 +1385,10 @@ class SendIt {
|
|
|
1397
1385
|
type: 'options',
|
|
1398
1386
|
options: [
|
|
1399
1387
|
{ name: 'Any', value: '' },
|
|
1388
|
+
{ name: 'Critical', value: 'critical' },
|
|
1389
|
+
{ name: 'High', value: 'high' },
|
|
1400
1390
|
{ name: 'Low', value: 'low' },
|
|
1401
1391
|
{ name: 'Medium', value: 'medium' },
|
|
1402
|
-
{ name: 'High', value: 'high' },
|
|
1403
|
-
{ name: 'Critical', value: 'critical' },
|
|
1404
1392
|
],
|
|
1405
1393
|
default: '',
|
|
1406
1394
|
displayOptions: { show: { resource: ['listening'], operation: ['listAlerts'] } },
|
|
@@ -1459,9 +1447,9 @@ class SendIt {
|
|
|
1459
1447
|
name: 'listeningIsArchived',
|
|
1460
1448
|
type: 'options',
|
|
1461
1449
|
options: [
|
|
1450
|
+
{ name: 'Active', value: 'false' },
|
|
1462
1451
|
{ name: 'Any', value: '' },
|
|
1463
1452
|
{ name: 'Archived', value: 'true' },
|
|
1464
|
-
{ name: 'Active', value: 'false' },
|
|
1465
1453
|
],
|
|
1466
1454
|
default: '',
|
|
1467
1455
|
displayOptions: { show: { resource: ['listening'], operation: ['listMentions'] } },
|
|
@@ -1492,10 +1480,10 @@ class SendIt {
|
|
|
1492
1480
|
name: 'aiMediaProvider',
|
|
1493
1481
|
type: 'options',
|
|
1494
1482
|
options: [
|
|
1495
|
-
{ name: 'Sora', value: 'sora' },
|
|
1496
|
-
{ name: 'Runway', value: 'runway' },
|
|
1497
|
-
{ name: 'Pika', value: 'pika' },
|
|
1498
1483
|
{ name: 'Adobe Express', value: 'adobe-express' },
|
|
1484
|
+
{ name: 'Pika', value: 'pika' },
|
|
1485
|
+
{ name: 'Runway', value: 'runway' },
|
|
1486
|
+
{ name: 'Sora', value: 'sora' },
|
|
1499
1487
|
],
|
|
1500
1488
|
default: 'sora',
|
|
1501
1489
|
required: true,
|
|
@@ -1584,14 +1572,14 @@ class SendIt {
|
|
|
1584
1572
|
},
|
|
1585
1573
|
// ===== Library fields =====
|
|
1586
1574
|
{
|
|
1587
|
-
displayName: 'Library Item',
|
|
1575
|
+
displayName: 'Library Item Name or ID',
|
|
1588
1576
|
name: 'libraryItemId',
|
|
1589
1577
|
type: 'options',
|
|
1590
1578
|
typeOptions: { loadOptionsMethod: 'getLibraryItems' },
|
|
1591
1579
|
default: '',
|
|
1592
1580
|
required: true,
|
|
1593
1581
|
displayOptions: { show: { resource: ['library'], operation: ['get', 'update', 'delete'] } },
|
|
1594
|
-
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>.',
|
|
1595
1583
|
},
|
|
1596
1584
|
{
|
|
1597
1585
|
displayName: 'Title',
|
|
@@ -1618,8 +1606,8 @@ class SendIt {
|
|
|
1618
1606
|
type: 'options',
|
|
1619
1607
|
options: [
|
|
1620
1608
|
{ name: 'Draft', value: 'draft' },
|
|
1621
|
-
{ name: 'Template', value: 'template' },
|
|
1622
1609
|
{ name: 'Evergreen', value: 'evergreen' },
|
|
1610
|
+
{ name: 'Template', value: 'template' },
|
|
1623
1611
|
],
|
|
1624
1612
|
default: 'draft',
|
|
1625
1613
|
displayOptions: {
|
|
@@ -1688,7 +1676,7 @@ class SendIt {
|
|
|
1688
1676
|
type: 'boolean',
|
|
1689
1677
|
default: false,
|
|
1690
1678
|
displayOptions: { show: { resource: ['library'], operation: ['create', 'update'] } },
|
|
1691
|
-
description: '
|
|
1679
|
+
description: 'Whether to enable evergreen republishing',
|
|
1692
1680
|
},
|
|
1693
1681
|
{
|
|
1694
1682
|
displayName: 'Evergreen Interval Days',
|
|
@@ -1771,7 +1759,7 @@ class SendIt {
|
|
|
1771
1759
|
type: 'boolean',
|
|
1772
1760
|
default: false,
|
|
1773
1761
|
displayOptions: { show: { resource: ['bulkSchedule'], operation: ['importCsv'] } },
|
|
1774
|
-
description: '
|
|
1762
|
+
description: 'Whether to continue import even if some rows fail validation',
|
|
1775
1763
|
},
|
|
1776
1764
|
// ===== Connect fields =====
|
|
1777
1765
|
{
|
|
@@ -1819,7 +1807,7 @@ class SendIt {
|
|
|
1819
1807
|
},
|
|
1820
1808
|
// ===== Webhook fields =====
|
|
1821
1809
|
{
|
|
1822
|
-
displayName: 'Webhook',
|
|
1810
|
+
displayName: 'Webhook Name or ID',
|
|
1823
1811
|
name: 'webhookId',
|
|
1824
1812
|
type: 'options',
|
|
1825
1813
|
typeOptions: { loadOptionsMethod: 'getWebhooks' },
|
|
@@ -1828,7 +1816,7 @@ class SendIt {
|
|
|
1828
1816
|
displayOptions: {
|
|
1829
1817
|
show: { resource: ['webhooks'], operation: ['get', 'update', 'testWebhook'] },
|
|
1830
1818
|
},
|
|
1831
|
-
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>.',
|
|
1832
1820
|
},
|
|
1833
1821
|
{
|
|
1834
1822
|
displayName: 'Webhook URL',
|
|
@@ -1862,8 +1850,8 @@ class SendIt {
|
|
|
1862
1850
|
options: [
|
|
1863
1851
|
{ name: 'All Statuses', value: '' },
|
|
1864
1852
|
{ name: 'Dead', value: 'dead' },
|
|
1865
|
-
{ name: 'Requeued', value: 'requeued' },
|
|
1866
1853
|
{ name: 'Discarded', value: 'discarded' },
|
|
1854
|
+
{ name: 'Requeued', value: 'requeued' },
|
|
1867
1855
|
],
|
|
1868
1856
|
default: '',
|
|
1869
1857
|
displayOptions: { show: { resource: ['deadLetter'], operation: ['list'] } },
|
|
@@ -1879,14 +1867,14 @@ class SendIt {
|
|
|
1879
1867
|
description: 'Maximum number of dead letter posts to return',
|
|
1880
1868
|
},
|
|
1881
1869
|
{
|
|
1882
|
-
displayName: 'Dead Letter Post',
|
|
1870
|
+
displayName: 'Dead Letter Post Name or ID',
|
|
1883
1871
|
name: 'deadLetterId',
|
|
1884
1872
|
type: 'options',
|
|
1885
1873
|
typeOptions: { loadOptionsMethod: 'getDeadLetterPosts' },
|
|
1886
1874
|
default: '',
|
|
1887
1875
|
required: true,
|
|
1888
1876
|
displayOptions: { show: { resource: ['deadLetter'], operation: ['requeue', 'discard'] } },
|
|
1889
|
-
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>.',
|
|
1890
1878
|
},
|
|
1891
1879
|
// ===== Audit log fields =====
|
|
1892
1880
|
{
|
|
@@ -2071,11 +2059,11 @@ class SendIt {
|
|
|
2071
2059
|
name: 'advancedMethod',
|
|
2072
2060
|
type: 'options',
|
|
2073
2061
|
options: [
|
|
2062
|
+
{ name: 'DELETE', value: 'DELETE' },
|
|
2074
2063
|
{ name: 'GET', value: 'GET' },
|
|
2075
|
-
{ name: 'POST', value: 'POST' },
|
|
2076
2064
|
{ name: 'PATCH', value: 'PATCH' },
|
|
2065
|
+
{ name: 'POST', value: 'POST' },
|
|
2077
2066
|
{ name: 'PUT', value: 'PUT' },
|
|
2078
|
-
{ name: 'DELETE', value: 'DELETE' },
|
|
2079
2067
|
],
|
|
2080
2068
|
default: 'GET',
|
|
2081
2069
|
required: true,
|
|
@@ -2114,16 +2102,16 @@ class SendIt {
|
|
|
2114
2102
|
name: 'advancedResponseMode',
|
|
2115
2103
|
type: 'options',
|
|
2116
2104
|
options: [
|
|
2105
|
+
{ name: 'Binary', value: 'binary' },
|
|
2117
2106
|
{ name: 'JSON', value: 'json' },
|
|
2118
2107
|
{ name: 'Text', value: 'text' },
|
|
2119
|
-
{ name: 'Binary', value: 'binary' },
|
|
2120
2108
|
],
|
|
2121
2109
|
default: 'json',
|
|
2122
2110
|
displayOptions: { show: { resource: ['advanced'], operation: ['apiRequest'] } },
|
|
2123
2111
|
description: 'How to decode the response payload',
|
|
2124
2112
|
},
|
|
2125
2113
|
{
|
|
2126
|
-
displayName: 'Request Timeout (
|
|
2114
|
+
displayName: 'Request Timeout (Ms)',
|
|
2127
2115
|
name: 'requestTimeoutMs',
|
|
2128
2116
|
type: 'number',
|
|
2129
2117
|
default: 30000,
|
|
@@ -2131,6 +2119,7 @@ class SendIt {
|
|
|
2131
2119
|
description: 'Request timeout in milliseconds',
|
|
2132
2120
|
},
|
|
2133
2121
|
],
|
|
2122
|
+
usableAsTool: true,
|
|
2134
2123
|
};
|
|
2135
2124
|
this.methods = {
|
|
2136
2125
|
loadOptions: {
|
|
@@ -2296,7 +2285,8 @@ class SendIt {
|
|
|
2296
2285
|
});
|
|
2297
2286
|
continue;
|
|
2298
2287
|
}
|
|
2299
|
-
|
|
2288
|
+
const message = error instanceof Error ? error.message : 'SendIt operation failed';
|
|
2289
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), message);
|
|
2300
2290
|
}
|
|
2301
2291
|
}
|
|
2302
2292
|
return [returnData];
|
|
@@ -189,7 +189,7 @@ class SendItTrigger {
|
|
|
189
189
|
name: 'SendIt Trigger',
|
|
190
190
|
},
|
|
191
191
|
inputs: [],
|
|
192
|
-
outputs: [
|
|
192
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
193
193
|
credentials: [
|
|
194
194
|
{
|
|
195
195
|
name: 'sendItApi',
|
|
@@ -222,6 +222,7 @@ class SendItTrigger {
|
|
|
222
222
|
description: 'Optional custom event string that overrides Event if set',
|
|
223
223
|
},
|
|
224
224
|
],
|
|
225
|
+
usableAsTool: true,
|
|
225
226
|
};
|
|
226
227
|
this.webhookMethods = {
|
|
227
228
|
default: {
|
|
@@ -22,7 +22,7 @@ const handleAdvanced = async (context, operation, i, optionalHeaders) => {
|
|
|
22
22
|
const parsedQuery = (0, helpers_1.parseJsonInput)(context, queryJson, 'Query JSON');
|
|
23
23
|
const parsedBody = (0, helpers_1.parseJsonInput)(context, bodyJson, 'Body JSON');
|
|
24
24
|
const qs = parsedQuery
|
|
25
|
-
? (0, helpers_1.assertObject)(parsedQuery, 'Query JSON must parse to an object')
|
|
25
|
+
? (0, helpers_1.assertObject)(context, parsedQuery, 'Query JSON must parse to an object')
|
|
26
26
|
: undefined;
|
|
27
27
|
const body = parsedBody === undefined ? undefined : parsedBody;
|
|
28
28
|
return (0, helpers_1.sendRequest)(context, {
|
|
@@ -15,7 +15,7 @@ const handleConnect = async (context, operation, i, optionalHeaders) => {
|
|
|
15
15
|
const platform = context.getNodeParameter('connectPlatform', i);
|
|
16
16
|
const credentialsJson = context.getNodeParameter('connectCredentialsJson', i);
|
|
17
17
|
const parsed = (0, helpers_1.parseJsonInput)(context, credentialsJson, 'Credentials JSON');
|
|
18
|
-
const credentials = (0, helpers_1.assertObject)(parsed, 'Credentials JSON must parse to an object');
|
|
18
|
+
const credentials = (0, helpers_1.assertObject)(context, parsed, 'Credentials JSON must parse to an object');
|
|
19
19
|
return (0, helpers_1.sendRequest)(context, {
|
|
20
20
|
method: 'POST',
|
|
21
21
|
url: '/connect/token',
|
|
@@ -29,7 +29,7 @@ const handleConnect = async (context, operation, i, optionalHeaders) => {
|
|
|
29
29
|
const metadataJson = context.getNodeParameter('connectMetadataJson', i);
|
|
30
30
|
const parsedMetadata = (0, helpers_1.parseJsonInput)(context, metadataJson, 'Metadata JSON');
|
|
31
31
|
const metadata = parsedMetadata
|
|
32
|
-
? (0, helpers_1.assertObject)(parsedMetadata, 'Metadata JSON must parse to an object')
|
|
32
|
+
? (0, helpers_1.assertObject)(context, parsedMetadata, 'Metadata JSON must parse to an object')
|
|
33
33
|
: undefined;
|
|
34
34
|
return (0, helpers_1.sendRequest)(context, {
|
|
35
35
|
method: 'POST',
|
|
@@ -10,7 +10,7 @@ export declare function sendRequest(context: IExecuteFunctions, request: {
|
|
|
10
10
|
url: string;
|
|
11
11
|
[key: string]: unknown;
|
|
12
12
|
}, optionalHeaders: Record<string, string>, baseURL?: string): Promise<unknown>;
|
|
13
|
-
export declare function assertObject(value: unknown, message: string): Record<string, unknown>;
|
|
13
|
+
export declare function assertObject(context: IExecuteFunctions, value: unknown, message: string): Record<string, unknown>;
|
|
14
14
|
export interface AiOptions {
|
|
15
15
|
hashtags?: string;
|
|
16
16
|
tone?: string;
|
|
@@ -112,12 +112,12 @@ async function sendRequest(context, request, optionalHeaders, baseURL = constant
|
|
|
112
112
|
description: `The API rejected the request to ${request.method} ${request.url}. Check your parameters.`,
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
|
-
throw error;
|
|
115
|
+
throw new n8n_workflow_1.NodeApiError(context.getNode(), error);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
function assertObject(value, message) {
|
|
118
|
+
function assertObject(context, value, message) {
|
|
119
119
|
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
120
|
-
throw new
|
|
120
|
+
throw new n8n_workflow_1.NodeOperationError(context.getNode(), message);
|
|
121
121
|
}
|
|
122
122
|
return value;
|
|
123
123
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-sendit",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "n8n community node for SendIt - Multi-platform social media publishing",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n-community-node-package",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"main": "index.js",
|
|
28
28
|
"scripts": {
|
|
29
29
|
"build": "tsc && npm run copy:icons",
|
|
30
|
-
"copy:icons": "mkdir -p dist/nodes/SendIt && cp nodes/SendIt/*.svg dist/nodes/SendIt/",
|
|
30
|
+
"copy:icons": "mkdir -p dist/nodes/SendIt dist/credentials && cp nodes/SendIt/*.svg dist/nodes/SendIt/ && cp nodes/SendIt/*.svg dist/credentials/",
|
|
31
31
|
"dev": "tsc --watch",
|
|
32
32
|
"format": "prettier nodes credentials --write",
|
|
33
33
|
"lint": "eslint nodes credentials --fix",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"@typescript-eslint/eslint-plugin": "^8.19.0",
|
|
60
60
|
"@typescript-eslint/parser": "^8.19.0",
|
|
61
61
|
"eslint": "^9.17.0",
|
|
62
|
-
"n8n-workflow": "^
|
|
62
|
+
"n8n-workflow": "^2.16.0",
|
|
63
63
|
"prettier": "^3.1.0",
|
|
64
64
|
"typescript": "^5.3.0",
|
|
65
65
|
"vitest": "^2.1.9"
|