n8n-nodes-cention 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CentionTrigger.node.d.ts","sourceRoot":"","sources":["../../../nodes/Cention/CentionTrigger.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,SAAS,EACT,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,MAAM,cAAc,CAAC;AAItB,qBAAa,cAAe,YAAW,SAAS;IAC/C,WAAW,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"CentionTrigger.node.d.ts","sourceRoot":"","sources":["../../../nodes/Cention/CentionTrigger.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,SAAS,EACT,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,MAAM,cAAc,CAAC;AAItB,qBAAa,cAAe,YAAW,SAAS;IAC/C,WAAW,EAAE,oBAAoB,CAmM/B;IAEI,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,GAAG,IAAI,CAAC;CAkOxE;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -35,6 +35,21 @@ class CentionTrigger {
|
|
|
35
35
|
value: 'newErrand',
|
|
36
36
|
description: 'Trigger when a new errand is created',
|
|
37
37
|
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Errand Updated',
|
|
40
|
+
value: 'errandUpdated',
|
|
41
|
+
description: 'Trigger when an errand is updated',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Errand Closed',
|
|
45
|
+
value: 'errandClosed',
|
|
46
|
+
description: 'Trigger when an errand is closed',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'New Contact',
|
|
50
|
+
value: 'newContact',
|
|
51
|
+
description: 'Trigger when a new contact is created',
|
|
52
|
+
},
|
|
38
53
|
],
|
|
39
54
|
default: 'newErrand',
|
|
40
55
|
required: true,
|
|
@@ -45,19 +60,28 @@ class CentionTrigger {
|
|
|
45
60
|
type: 'collection',
|
|
46
61
|
placeholder: 'Add Filter',
|
|
47
62
|
default: {},
|
|
63
|
+
displayOptions: {
|
|
64
|
+
show: {
|
|
65
|
+
event: ['newErrand', 'errandUpdated', 'errandClosed'],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
48
68
|
options: [
|
|
49
69
|
{
|
|
50
70
|
displayName: 'Area ID',
|
|
51
71
|
name: 'areaId',
|
|
52
72
|
type: 'number',
|
|
53
73
|
default: 0,
|
|
54
|
-
description: 'Filter by area ID',
|
|
74
|
+
description: 'Filter by area ID (0 = all areas)',
|
|
55
75
|
},
|
|
56
76
|
{
|
|
57
77
|
displayName: 'Status',
|
|
58
78
|
name: 'status',
|
|
59
79
|
type: 'options',
|
|
60
80
|
options: [
|
|
81
|
+
{
|
|
82
|
+
name: 'All',
|
|
83
|
+
value: '',
|
|
84
|
+
},
|
|
61
85
|
{
|
|
62
86
|
name: 'Open',
|
|
63
87
|
value: 'open',
|
|
@@ -71,9 +95,80 @@ class CentionTrigger {
|
|
|
71
95
|
value: 'pending',
|
|
72
96
|
},
|
|
73
97
|
],
|
|
74
|
-
default: '
|
|
98
|
+
default: '',
|
|
75
99
|
description: 'Filter by errand status',
|
|
76
100
|
},
|
|
101
|
+
{
|
|
102
|
+
displayName: 'Priority',
|
|
103
|
+
name: 'priority',
|
|
104
|
+
type: 'options',
|
|
105
|
+
options: [
|
|
106
|
+
{
|
|
107
|
+
name: 'All',
|
|
108
|
+
value: '',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: 'Low',
|
|
112
|
+
value: 'low',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'Normal',
|
|
116
|
+
value: 'normal',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'High',
|
|
120
|
+
value: 'high',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: 'Urgent',
|
|
124
|
+
value: 'urgent',
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
default: '',
|
|
128
|
+
description: 'Filter by priority',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
displayName: 'Created After',
|
|
132
|
+
name: 'createdAfter',
|
|
133
|
+
type: 'dateTime',
|
|
134
|
+
default: '',
|
|
135
|
+
description: 'Only trigger for items created after this date',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
displayName: 'Updated After',
|
|
139
|
+
name: 'updatedAfter',
|
|
140
|
+
type: 'dateTime',
|
|
141
|
+
default: '',
|
|
142
|
+
description: 'Only trigger for items updated after this date',
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
displayName: 'Contact Filters',
|
|
148
|
+
name: 'contactFilters',
|
|
149
|
+
type: 'collection',
|
|
150
|
+
placeholder: 'Add Filter',
|
|
151
|
+
default: {},
|
|
152
|
+
displayOptions: {
|
|
153
|
+
show: {
|
|
154
|
+
event: ['newContact'],
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
options: [
|
|
158
|
+
{
|
|
159
|
+
displayName: 'Email Domain',
|
|
160
|
+
name: 'emailDomain',
|
|
161
|
+
type: 'string',
|
|
162
|
+
default: '',
|
|
163
|
+
description: 'Filter by email domain (e.g., example.com)',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
displayName: 'Created After',
|
|
167
|
+
name: 'createdAfter',
|
|
168
|
+
type: 'dateTime',
|
|
169
|
+
default: '',
|
|
170
|
+
description: 'Only trigger for contacts created after this date',
|
|
171
|
+
},
|
|
77
172
|
],
|
|
78
173
|
},
|
|
79
174
|
{
|
|
@@ -89,10 +184,17 @@ class CentionTrigger {
|
|
|
89
184
|
type: 'number',
|
|
90
185
|
typeOptions: {
|
|
91
186
|
minValue: 1,
|
|
92
|
-
maxValue:
|
|
187
|
+
maxValue: 200,
|
|
93
188
|
},
|
|
94
189
|
default: 50,
|
|
95
|
-
description: 'Max number of
|
|
190
|
+
description: 'Max number of items to check per poll',
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
displayName: 'Skip Already Processed',
|
|
194
|
+
name: 'skipProcessed',
|
|
195
|
+
type: 'boolean',
|
|
196
|
+
default: true,
|
|
197
|
+
description: 'Skip items that have already been processed (prevents duplicates)',
|
|
96
198
|
},
|
|
97
199
|
],
|
|
98
200
|
},
|
|
@@ -102,62 +204,177 @@ class CentionTrigger {
|
|
|
102
204
|
async poll() {
|
|
103
205
|
const webhookData = this.getWorkflowStaticData('node');
|
|
104
206
|
const event = this.getNodeParameter('event');
|
|
105
|
-
const filters = this.getNodeParameter('filters');
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
if (
|
|
114
|
-
qs
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
207
|
+
const filters = this.getNodeParameter('filters', 0, {});
|
|
208
|
+
const contactFilters = this.getNodeParameter('contactFilters', 0, {});
|
|
209
|
+
const options = this.getNodeParameter('options', 0, {});
|
|
210
|
+
const skipProcessed = options.skipProcessed !== false; // Default to true
|
|
211
|
+
try {
|
|
212
|
+
// =====================================
|
|
213
|
+
// Errand Events
|
|
214
|
+
// =====================================
|
|
215
|
+
if (event === 'newErrand' || event === 'errandUpdated' || event === 'errandClosed') {
|
|
216
|
+
const qs = {};
|
|
217
|
+
const limit = options.limit || 50;
|
|
218
|
+
qs['page[limit]'] = limit;
|
|
219
|
+
// Required by Cention API - only get changed items
|
|
220
|
+
qs['filter[changed]'] = 'true';
|
|
221
|
+
// Apply filters
|
|
222
|
+
if (filters.areaId && filters.areaId > 0) {
|
|
223
|
+
qs['filter[area]'] = filters.areaId;
|
|
224
|
+
}
|
|
225
|
+
// Status filter based on event type
|
|
226
|
+
if (event === 'errandClosed') {
|
|
227
|
+
qs['filter[status]'] = 'closed';
|
|
228
|
+
}
|
|
229
|
+
else if (filters.status) {
|
|
230
|
+
qs['filter[status]'] = filters.status;
|
|
231
|
+
}
|
|
232
|
+
else if (event === 'newErrand') {
|
|
233
|
+
// For new errands, default to open status if not specified
|
|
234
|
+
qs['filter[status]'] = 'open';
|
|
235
|
+
}
|
|
236
|
+
// Priority filter
|
|
237
|
+
if (filters.priority) {
|
|
238
|
+
qs['filter[priority]'] = filters.priority;
|
|
239
|
+
}
|
|
240
|
+
// Date filters
|
|
241
|
+
if (filters.createdAfter) {
|
|
242
|
+
const createdAfter = new Date(filters.createdAfter).toISOString();
|
|
243
|
+
qs['filter[created_after]'] = createdAfter;
|
|
244
|
+
}
|
|
245
|
+
if (filters.updatedAfter) {
|
|
246
|
+
const updatedAfter = new Date(filters.updatedAfter).toISOString();
|
|
247
|
+
qs['filter[updated_after]'] = updatedAfter;
|
|
248
|
+
}
|
|
249
|
+
// Sort by ID descending to get newest first
|
|
250
|
+
qs['sort'] = '-id';
|
|
251
|
+
const responseData = await GenericFunctions_1.centionApiRequest.call(this, 'GET', '/c3_errand_reports', {}, qs);
|
|
252
|
+
const errands = responseData.data || [];
|
|
253
|
+
if (errands.length === 0) {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
// Get the last processed errand ID from static data
|
|
257
|
+
const lastErrandId = webhookData.lastErrandId;
|
|
258
|
+
const processedErrandIds = webhookData.processedErrandIds || [];
|
|
259
|
+
// Filter out errands we've already processed
|
|
260
|
+
const newErrands = [];
|
|
261
|
+
let maxErrandId = lastErrandId || 0;
|
|
262
|
+
for (const errand of errands) {
|
|
263
|
+
const errandId = parseInt(errand.id, 10);
|
|
264
|
+
if (skipProcessed) {
|
|
265
|
+
// Skip if already processed
|
|
266
|
+
if (lastErrandId && errandId <= lastErrandId) {
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
if (processedErrandIds.includes(errandId)) {
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
135
273
|
newErrands.push(errand);
|
|
136
274
|
if (errandId > maxErrandId) {
|
|
137
275
|
maxErrandId = errandId;
|
|
138
276
|
}
|
|
277
|
+
// Track processed IDs (keep last 1000 to prevent memory issues)
|
|
278
|
+
if (skipProcessed && processedErrandIds.length < 1000) {
|
|
279
|
+
processedErrandIds.push(errandId);
|
|
280
|
+
}
|
|
139
281
|
}
|
|
282
|
+
// Update the last processed errand ID
|
|
283
|
+
if (maxErrandId > 0) {
|
|
284
|
+
webhookData.lastErrandId = maxErrandId;
|
|
285
|
+
if (skipProcessed) {
|
|
286
|
+
webhookData.processedErrandIds = processedErrandIds.slice(-1000); // Keep last 1000
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
if (newErrands.length === 0) {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
// Return new errands in chronological order (oldest first)
|
|
293
|
+
const returnData = [[]];
|
|
294
|
+
// Reverse to get oldest first (since we sorted by -id)
|
|
295
|
+
newErrands.reverse();
|
|
296
|
+
for (const errand of newErrands) {
|
|
297
|
+
returnData[0].push({
|
|
298
|
+
json: errand,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
return returnData;
|
|
140
302
|
}
|
|
141
|
-
//
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
303
|
+
// =====================================
|
|
304
|
+
// Contact Events
|
|
305
|
+
// =====================================
|
|
306
|
+
if (event === 'newContact') {
|
|
307
|
+
const qs = {};
|
|
308
|
+
const limit = options.limit || 50;
|
|
309
|
+
qs['page[limit]'] = limit;
|
|
310
|
+
// Filter for changed contacts
|
|
311
|
+
qs['filter[changed]'] = 'true';
|
|
312
|
+
// Email domain filter
|
|
313
|
+
if (contactFilters.emailDomain) {
|
|
314
|
+
qs['filter[email_domain]'] = contactFilters.emailDomain;
|
|
315
|
+
}
|
|
316
|
+
// Date filter
|
|
317
|
+
if (contactFilters.createdAfter) {
|
|
318
|
+
const createdAfter = new Date(contactFilters.createdAfter).toISOString();
|
|
319
|
+
qs['filter[created_after]'] = createdAfter;
|
|
320
|
+
}
|
|
321
|
+
// Sort by ID descending
|
|
322
|
+
qs['sort'] = '-id';
|
|
323
|
+
const responseData = await GenericFunctions_1.centionApiRequest.call(this, 'GET', '/c3_contact_cards', {}, qs);
|
|
324
|
+
const contacts = responseData.data || [];
|
|
325
|
+
if (contacts.length === 0) {
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
// Get the last processed contact ID
|
|
329
|
+
const lastContactId = webhookData.lastContactId;
|
|
330
|
+
const processedContactIds = webhookData.processedContactIds || [];
|
|
331
|
+
// Filter out contacts we've already processed
|
|
332
|
+
const newContacts = [];
|
|
333
|
+
let maxContactId = lastContactId || 0;
|
|
334
|
+
for (const contact of contacts) {
|
|
335
|
+
const contactId = parseInt(contact.id, 10);
|
|
336
|
+
if (skipProcessed) {
|
|
337
|
+
if (lastContactId && contactId <= lastContactId) {
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
if (processedContactIds.includes(contactId)) {
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
newContacts.push(contact);
|
|
345
|
+
if (contactId > maxContactId) {
|
|
346
|
+
maxContactId = contactId;
|
|
347
|
+
}
|
|
348
|
+
if (skipProcessed && processedContactIds.length < 1000) {
|
|
349
|
+
processedContactIds.push(contactId);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
// Update the last processed contact ID
|
|
353
|
+
if (maxContactId > 0) {
|
|
354
|
+
webhookData.lastContactId = maxContactId;
|
|
355
|
+
if (skipProcessed) {
|
|
356
|
+
webhookData.processedContactIds = processedContactIds.slice(-1000);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
if (newContacts.length === 0) {
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
// Return new contacts in chronological order
|
|
363
|
+
const returnData = [[]];
|
|
364
|
+
newContacts.reverse();
|
|
365
|
+
for (const contact of newContacts) {
|
|
366
|
+
returnData[0].push({
|
|
367
|
+
json: contact,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
return returnData;
|
|
157
371
|
}
|
|
158
|
-
return
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
// Better error handling - throw error to let n8n handle it
|
|
376
|
+
throw error;
|
|
159
377
|
}
|
|
160
|
-
return null;
|
|
161
378
|
}
|
|
162
379
|
}
|
|
163
380
|
exports.CentionTrigger = CentionTrigger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CentionTrigger.node.js","sourceRoot":"","sources":["../../../nodes/Cention/CentionTrigger.node.ts"],"names":[],"mappings":";;;AAQA,yDAAuD;AAEvD,MAAa,cAAc;IAA3B;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,CAAC,SAAS,CAAC;YAClB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,0BAA0B;YACpC,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE;gBACT,IAAI,EAAE,iBAAiB;aACvB;YACD,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,OAAO,EAAE,IAAI;YACb,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,OAAO;oBACpB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,YAAY;4BAClB,KAAK,EAAE,WAAW;4BAClB,WAAW,EAAE,sCAAsC;yBACnD;qBACD;oBACD,OAAO,EAAE,WAAW;oBACpB,QAAQ,EAAE,IAAI;iBACd;gBACD;oBACC,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,YAAY;oBACzB,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE;wBACR;4BACC,WAAW,EAAE,SAAS;4BACtB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,CAAC;4BACV,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"CentionTrigger.node.js","sourceRoot":"","sources":["../../../nodes/Cention/CentionTrigger.node.ts"],"names":[],"mappings":"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"}
|