n8n-nodes-linq 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/dist/credentials/LinqApi.credentials.d.ts +7 -0
- package/dist/credentials/LinqApi.credentials.js +23 -0
- package/dist/nodes/Linq/Linq.node.d.ts +6 -0
- package/dist/nodes/Linq/Linq.node.js +809 -0
- package/dist/nodes/Linq/linq.svg +1 -0
- package/index.js +2 -0
- package/package.json +53 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Alex
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LinqApi = void 0;
|
|
4
|
+
class LinqApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'linqApi';
|
|
7
|
+
this.displayName = 'Linq API';
|
|
8
|
+
this.documentationUrl = 'https://docs.linqapp.com';
|
|
9
|
+
this.properties = [
|
|
10
|
+
{
|
|
11
|
+
displayName: 'Integration Token',
|
|
12
|
+
name: 'integrationToken',
|
|
13
|
+
type: 'string',
|
|
14
|
+
default: '',
|
|
15
|
+
description: 'Your X-LINQ-INTEGRATION-TOKEN',
|
|
16
|
+
typeOptions: {
|
|
17
|
+
password: true,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.LinqApi = LinqApi;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
+
import { INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
3
|
+
export declare class Linq implements INodeType {
|
|
4
|
+
description: INodeTypeDescription;
|
|
5
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,809 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Linq = void 0;
|
|
4
|
+
class Linq {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.description = {
|
|
7
|
+
displayName: 'Linq',
|
|
8
|
+
name: 'linq',
|
|
9
|
+
group: ['transform'],
|
|
10
|
+
version: 1,
|
|
11
|
+
description: 'Interact with Linq API',
|
|
12
|
+
icon: 'file:linq.svg',
|
|
13
|
+
defaults: { name: 'Linq' },
|
|
14
|
+
inputs: ["main" /* NodeConnectionType.Main */],
|
|
15
|
+
outputs: ["main" /* NodeConnectionType.Main */],
|
|
16
|
+
credentials: [
|
|
17
|
+
{ name: 'linqApi', required: true },
|
|
18
|
+
],
|
|
19
|
+
properties: [
|
|
20
|
+
{
|
|
21
|
+
displayName: 'Resource',
|
|
22
|
+
name: 'resource',
|
|
23
|
+
type: 'options',
|
|
24
|
+
noDataExpression: true,
|
|
25
|
+
options: [
|
|
26
|
+
{ name: 'Chat', value: 'chat' },
|
|
27
|
+
{ name: 'Chat Message', value: 'chatMessage' },
|
|
28
|
+
{ name: 'Contact', value: 'contact' },
|
|
29
|
+
{ name: 'Phone Number', value: 'phoneNumber' },
|
|
30
|
+
{ name: 'Webhook Subscription', value: 'webhookSubscription' },
|
|
31
|
+
],
|
|
32
|
+
default: 'chat',
|
|
33
|
+
},
|
|
34
|
+
// Chat operations
|
|
35
|
+
{
|
|
36
|
+
displayName: 'Operation',
|
|
37
|
+
name: 'operation',
|
|
38
|
+
type: 'options',
|
|
39
|
+
noDataExpression: true,
|
|
40
|
+
displayOptions: { show: { resource: ['chat'] } },
|
|
41
|
+
options: [
|
|
42
|
+
{
|
|
43
|
+
name: 'Create',
|
|
44
|
+
value: 'create',
|
|
45
|
+
action: 'Create a chat'
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Find',
|
|
49
|
+
value: 'find',
|
|
50
|
+
action: 'Find chats'
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'Get Many',
|
|
54
|
+
value: 'getAll',
|
|
55
|
+
action: 'Get many chats'
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Get One',
|
|
59
|
+
value: 'getOne',
|
|
60
|
+
action: 'Get one chat'
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'Share Contact',
|
|
64
|
+
value: 'shareContact',
|
|
65
|
+
action: 'Share a contact'
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
default: 'getAll',
|
|
69
|
+
},
|
|
70
|
+
// Chat Message operations
|
|
71
|
+
{
|
|
72
|
+
displayName: 'Operation',
|
|
73
|
+
name: 'operation',
|
|
74
|
+
type: 'options',
|
|
75
|
+
noDataExpression: true,
|
|
76
|
+
displayOptions: { show: { resource: ['chatMessage'] } },
|
|
77
|
+
options: [
|
|
78
|
+
{
|
|
79
|
+
name: 'Create',
|
|
80
|
+
value: 'create',
|
|
81
|
+
action: 'Create a chat message'
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'Delete',
|
|
85
|
+
value: 'delete',
|
|
86
|
+
action: 'Delete a chat message'
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'Edit',
|
|
90
|
+
value: 'edit',
|
|
91
|
+
action: 'Edit a chat message'
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'Get Many',
|
|
95
|
+
value: 'getAll',
|
|
96
|
+
action: 'Get many chat messages'
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'Get One',
|
|
100
|
+
value: 'getOne',
|
|
101
|
+
action: 'Get one chat message'
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'Get Reaction',
|
|
105
|
+
value: 'getReaction',
|
|
106
|
+
action: 'Get a chat message reaction'
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'React',
|
|
110
|
+
value: 'react',
|
|
111
|
+
action: 'React to a chat message'
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
default: 'getAll',
|
|
115
|
+
},
|
|
116
|
+
// Phone Number operations
|
|
117
|
+
{
|
|
118
|
+
displayName: 'Operation',
|
|
119
|
+
name: 'operation',
|
|
120
|
+
type: 'options',
|
|
121
|
+
noDataExpression: true,
|
|
122
|
+
displayOptions: { show: { resource: ['phoneNumber'] } },
|
|
123
|
+
options: [
|
|
124
|
+
{
|
|
125
|
+
name: 'Check iMessage Availability',
|
|
126
|
+
value: 'checkIMessageAvailability',
|
|
127
|
+
action: 'Check imessage availability'
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: 'Get Many',
|
|
131
|
+
value: 'getAll',
|
|
132
|
+
action: 'Get many phone numbers'
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
default: 'getAll',
|
|
136
|
+
},
|
|
137
|
+
// Webhook Subscription operations
|
|
138
|
+
{
|
|
139
|
+
displayName: 'Operation',
|
|
140
|
+
name: 'operation',
|
|
141
|
+
type: 'options',
|
|
142
|
+
noDataExpression: true,
|
|
143
|
+
displayOptions: { show: { resource: ['webhookSubscription'] } },
|
|
144
|
+
options: [
|
|
145
|
+
{
|
|
146
|
+
name: 'Create',
|
|
147
|
+
value: 'create',
|
|
148
|
+
action: 'Create a webhook subscription'
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
name: 'Delete',
|
|
152
|
+
value: 'delete',
|
|
153
|
+
action: 'Delete a webhook subscription'
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: 'Get Many',
|
|
157
|
+
value: 'getAll',
|
|
158
|
+
action: 'Get many webhook subscriptions'
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'Get One',
|
|
162
|
+
value: 'getOne',
|
|
163
|
+
action: 'Get one webhook subscription'
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
name: 'Update',
|
|
167
|
+
value: 'update',
|
|
168
|
+
action: 'Update a webhook subscription'
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
default: 'getAll',
|
|
172
|
+
},
|
|
173
|
+
// Contact operations
|
|
174
|
+
{
|
|
175
|
+
displayName: 'Operation',
|
|
176
|
+
name: 'operation',
|
|
177
|
+
type: 'options',
|
|
178
|
+
noDataExpression: true,
|
|
179
|
+
displayOptions: { show: { resource: ['contact'] } },
|
|
180
|
+
options: [
|
|
181
|
+
{
|
|
182
|
+
name: 'Create',
|
|
183
|
+
value: 'create',
|
|
184
|
+
action: 'Create a contact'
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: 'Delete',
|
|
188
|
+
value: 'delete',
|
|
189
|
+
action: 'Delete a contact'
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
name: 'Get One',
|
|
193
|
+
value: 'getOne',
|
|
194
|
+
action: 'Get one contact'
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
name: 'Update',
|
|
198
|
+
value: 'update',
|
|
199
|
+
action: 'Update a contact'
|
|
200
|
+
},
|
|
201
|
+
],
|
|
202
|
+
default: 'create',
|
|
203
|
+
},
|
|
204
|
+
// Chat parameters
|
|
205
|
+
{
|
|
206
|
+
displayName: 'Chat ID',
|
|
207
|
+
name: 'chatId',
|
|
208
|
+
type: 'string',
|
|
209
|
+
displayOptions: { show: { resource: ['chat'], operation: ['getOne'] } },
|
|
210
|
+
default: '',
|
|
211
|
+
description: 'The ID of the chat to retrieve',
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
displayName: 'Phone Number',
|
|
215
|
+
name: 'phoneNumber',
|
|
216
|
+
type: 'string',
|
|
217
|
+
displayOptions: { show: { resource: ['chat'], operation: ['getAll'] } },
|
|
218
|
+
default: '',
|
|
219
|
+
description: 'Filter chats by phone number',
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
displayName: 'Page',
|
|
223
|
+
name: 'page',
|
|
224
|
+
type: 'number',
|
|
225
|
+
displayOptions: { show: { resource: ['chat'], operation: ['getAll'] } },
|
|
226
|
+
default: 1,
|
|
227
|
+
description: 'Page number for pagination',
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
displayName: 'Per Page',
|
|
231
|
+
name: 'perPage',
|
|
232
|
+
type: 'number',
|
|
233
|
+
displayOptions: { show: { resource: ['chat'], operation: ['getAll'] } },
|
|
234
|
+
default: 25,
|
|
235
|
+
description: 'Number of items per page',
|
|
236
|
+
},
|
|
237
|
+
// Create Chat parameters
|
|
238
|
+
{
|
|
239
|
+
displayName: 'Send From',
|
|
240
|
+
name: 'sendFrom',
|
|
241
|
+
type: 'string',
|
|
242
|
+
displayOptions: { show: { resource: ['chat'], operation: ['create'] } },
|
|
243
|
+
default: '',
|
|
244
|
+
description: 'The phone number to send from',
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
displayName: 'Display Name',
|
|
248
|
+
name: 'displayName',
|
|
249
|
+
type: 'string',
|
|
250
|
+
displayOptions: { show: { resource: ['chat'], operation: ['create'] } },
|
|
251
|
+
default: '',
|
|
252
|
+
description: 'The display name for the chat',
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
displayName: 'Phone Numbers',
|
|
256
|
+
name: 'phoneNumbers',
|
|
257
|
+
type: 'string',
|
|
258
|
+
displayOptions: { show: { resource: ['chat'], operation: ['create'] } },
|
|
259
|
+
default: '',
|
|
260
|
+
description: 'Comma-separated list of phone numbers',
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
displayName: 'Message Text',
|
|
264
|
+
name: 'messageText',
|
|
265
|
+
type: 'string',
|
|
266
|
+
displayOptions: { show: { resource: ['chat'], operation: ['create'] } },
|
|
267
|
+
default: '',
|
|
268
|
+
description: 'The text of the message to send',
|
|
269
|
+
},
|
|
270
|
+
// Chat Message parameters
|
|
271
|
+
{
|
|
272
|
+
displayName: 'Chat Message ID',
|
|
273
|
+
name: 'chatMessageId',
|
|
274
|
+
type: 'string',
|
|
275
|
+
displayOptions: { show: { resource: ['chatMessage'], operation: ['getOne', 'delete', 'edit', 'react', 'getReaction'] } },
|
|
276
|
+
default: '',
|
|
277
|
+
description: 'The ID of the chat message',
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
displayName: 'Chat ID',
|
|
281
|
+
name: 'chatId',
|
|
282
|
+
type: 'string',
|
|
283
|
+
displayOptions: { show: { resource: ['chatMessage'], operation: ['getAll', 'create'] } },
|
|
284
|
+
default: '',
|
|
285
|
+
description: 'The ID of the chat',
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
displayName: 'Message Text',
|
|
289
|
+
name: 'messageText',
|
|
290
|
+
type: 'string',
|
|
291
|
+
displayOptions: { show: { resource: ['chatMessage'], operation: ['create', 'edit'] } },
|
|
292
|
+
default: '',
|
|
293
|
+
description: 'The text of the message',
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
displayName: 'Reaction',
|
|
297
|
+
name: 'reaction',
|
|
298
|
+
type: 'string',
|
|
299
|
+
displayOptions: { show: { resource: ['chatMessage'], operation: ['react'] } },
|
|
300
|
+
default: '',
|
|
301
|
+
description: 'The reaction to add',
|
|
302
|
+
},
|
|
303
|
+
// Phone Number parameters
|
|
304
|
+
{
|
|
305
|
+
displayName: 'Phone Number',
|
|
306
|
+
name: 'phoneNumber',
|
|
307
|
+
type: 'string',
|
|
308
|
+
displayOptions: { show: { resource: ['phoneNumber'], operation: ['checkIMessageAvailability'] } },
|
|
309
|
+
default: '',
|
|
310
|
+
description: 'The phone number to check',
|
|
311
|
+
},
|
|
312
|
+
// Webhook Subscription parameters
|
|
313
|
+
{
|
|
314
|
+
displayName: 'Webhook Subscription ID',
|
|
315
|
+
name: 'webhookSubscriptionId',
|
|
316
|
+
type: 'string',
|
|
317
|
+
displayOptions: { show: { resource: ['webhookSubscription'], operation: ['getOne', 'update', 'delete'] } },
|
|
318
|
+
default: '',
|
|
319
|
+
description: 'The ID of the webhook subscription',
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
displayName: 'Webhook URL',
|
|
323
|
+
name: 'webhookUrl',
|
|
324
|
+
type: 'string',
|
|
325
|
+
displayOptions: { show: { resource: ['webhookSubscription'], operation: ['create', 'update'] } },
|
|
326
|
+
default: '',
|
|
327
|
+
description: 'The URL for the webhook',
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
displayName: 'Events',
|
|
331
|
+
name: 'events',
|
|
332
|
+
type: 'string',
|
|
333
|
+
displayOptions: { show: { resource: ['webhookSubscription'], operation: ['create', 'update'] } },
|
|
334
|
+
default: '',
|
|
335
|
+
description: 'Comma-separated list of events',
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
displayName: 'Version',
|
|
339
|
+
name: 'version',
|
|
340
|
+
type: 'number',
|
|
341
|
+
displayOptions: { show: { resource: ['webhookSubscription'], operation: ['create', 'update'] } },
|
|
342
|
+
default: 2,
|
|
343
|
+
description: 'The version of the webhook',
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
displayName: 'Active',
|
|
347
|
+
name: 'active',
|
|
348
|
+
type: 'boolean',
|
|
349
|
+
displayOptions: { show: { resource: ['webhookSubscription'], operation: ['create', 'update'] } },
|
|
350
|
+
default: true,
|
|
351
|
+
description: 'Whether the webhook is active',
|
|
352
|
+
},
|
|
353
|
+
// Contact parameters
|
|
354
|
+
{
|
|
355
|
+
displayName: 'Contact ID',
|
|
356
|
+
name: 'contactId',
|
|
357
|
+
type: 'string',
|
|
358
|
+
displayOptions: { show: { resource: ['contact'], operation: ['getOne', 'update', 'delete'] } },
|
|
359
|
+
default: '',
|
|
360
|
+
description: 'The ID of the contact',
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
displayName: 'First Name',
|
|
364
|
+
name: 'firstName',
|
|
365
|
+
type: 'string',
|
|
366
|
+
displayOptions: { show: { resource: ['contact'], operation: ['create', 'update'] } },
|
|
367
|
+
default: '',
|
|
368
|
+
description: 'The first name of the contact',
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
displayName: 'Last Name',
|
|
372
|
+
name: 'lastName',
|
|
373
|
+
type: 'string',
|
|
374
|
+
displayOptions: { show: { resource: ['contact'], operation: ['create', 'update'] } },
|
|
375
|
+
default: '',
|
|
376
|
+
description: 'The last name of the contact',
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
displayName: 'Email',
|
|
380
|
+
name: 'email',
|
|
381
|
+
type: 'string',
|
|
382
|
+
displayOptions: { show: { resource: ['contact'], operation: ['create', 'update'] } },
|
|
383
|
+
default: '',
|
|
384
|
+
placeholder: 'name@email.com',
|
|
385
|
+
description: 'The email of the contact',
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
displayName: 'Phone Number',
|
|
389
|
+
name: 'phoneNumber',
|
|
390
|
+
type: 'string',
|
|
391
|
+
displayOptions: { show: { resource: ['contact'], operation: ['create', 'update'] } },
|
|
392
|
+
default: '',
|
|
393
|
+
description: 'The phone number of the contact',
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
displayName: 'Company',
|
|
397
|
+
name: 'company',
|
|
398
|
+
type: 'string',
|
|
399
|
+
displayOptions: { show: { resource: ['contact'], operation: ['create', 'update'] } },
|
|
400
|
+
default: '',
|
|
401
|
+
description: 'The company of the contact',
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
displayName: 'Title',
|
|
405
|
+
name: 'title',
|
|
406
|
+
type: 'string',
|
|
407
|
+
displayOptions: { show: { resource: ['contact'], operation: ['create', 'update'] } },
|
|
408
|
+
default: '',
|
|
409
|
+
description: 'The title of the contact',
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
displayName: 'Location',
|
|
413
|
+
name: 'location',
|
|
414
|
+
type: 'string',
|
|
415
|
+
displayOptions: { show: { resource: ['contact'], operation: ['create', 'update'] } },
|
|
416
|
+
default: '',
|
|
417
|
+
description: 'The location of the contact',
|
|
418
|
+
},
|
|
419
|
+
],
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
async execute() {
|
|
423
|
+
const items = this.getInputData();
|
|
424
|
+
const returnData = [];
|
|
425
|
+
const credentials = await this.getCredentials('linqApi');
|
|
426
|
+
for (let i = 0; i < items.length; i++) {
|
|
427
|
+
const resource = this.getNodeParameter('resource', i);
|
|
428
|
+
const operation = this.getNodeParameter('operation', i);
|
|
429
|
+
let responseData;
|
|
430
|
+
// Chat operations
|
|
431
|
+
if (resource === 'chat') {
|
|
432
|
+
if (operation === 'getAll') {
|
|
433
|
+
const phoneNumber = this.getNodeParameter('phoneNumber', i, '');
|
|
434
|
+
const page = this.getNodeParameter('page', i, 1);
|
|
435
|
+
const perPage = this.getNodeParameter('perPage', i, 25);
|
|
436
|
+
const qs = { page, per_page: perPage };
|
|
437
|
+
if (phoneNumber)
|
|
438
|
+
qs.phone_number = phoneNumber;
|
|
439
|
+
responseData = await this.helpers.request({
|
|
440
|
+
method: 'GET',
|
|
441
|
+
url: 'https://api.linqapp.com/api/partner/v2/chats',
|
|
442
|
+
qs,
|
|
443
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
444
|
+
json: true,
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
if (operation === 'getOne') {
|
|
448
|
+
const chatId = this.getNodeParameter('chatId', i);
|
|
449
|
+
responseData = await this.helpers.request({
|
|
450
|
+
method: 'GET',
|
|
451
|
+
url: `https://api.linqapp.com/api/partner/v2/chats/${chatId}`,
|
|
452
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
453
|
+
json: true,
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
if (operation === 'find') {
|
|
457
|
+
const phoneNumber = this.getNodeParameter('phoneNumber', i, '');
|
|
458
|
+
const qs = {};
|
|
459
|
+
if (phoneNumber)
|
|
460
|
+
qs.phone_number = phoneNumber;
|
|
461
|
+
responseData = await this.helpers.request({
|
|
462
|
+
method: 'GET',
|
|
463
|
+
url: 'https://api.linqapp.com/api/partner/v2/chats/find',
|
|
464
|
+
qs,
|
|
465
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
466
|
+
json: true,
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
if (operation === 'create') {
|
|
470
|
+
const sendFrom = this.getNodeParameter('sendFrom', i);
|
|
471
|
+
const displayName = this.getNodeParameter('displayName', i);
|
|
472
|
+
const phoneNumbers = this.getNodeParameter('phoneNumbers', i);
|
|
473
|
+
const messageText = this.getNodeParameter('messageText', i);
|
|
474
|
+
const body = {
|
|
475
|
+
chat: {
|
|
476
|
+
phone_numbers: phoneNumbers.split(',').map(p => p.trim())
|
|
477
|
+
},
|
|
478
|
+
message: {
|
|
479
|
+
text: messageText
|
|
480
|
+
}
|
|
481
|
+
};
|
|
482
|
+
if (sendFrom) {
|
|
483
|
+
body.send_from = sendFrom;
|
|
484
|
+
}
|
|
485
|
+
if (displayName) {
|
|
486
|
+
body.chat.display_name = displayName;
|
|
487
|
+
}
|
|
488
|
+
responseData = await this.helpers.request({
|
|
489
|
+
method: 'POST',
|
|
490
|
+
url: 'https://api.linqapp.com/api/partner/v2/chats',
|
|
491
|
+
headers: {
|
|
492
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
493
|
+
'Content-Type': 'application/json'
|
|
494
|
+
},
|
|
495
|
+
body: JSON.stringify(body),
|
|
496
|
+
json: true,
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
if (operation === 'shareContact') {
|
|
500
|
+
responseData = await this.helpers.request({
|
|
501
|
+
method: 'POST',
|
|
502
|
+
url: 'https://api.linqapp.com/api/partner/v2/chats/share-contact',
|
|
503
|
+
headers: {
|
|
504
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
505
|
+
'Content-Type': 'application/json'
|
|
506
|
+
},
|
|
507
|
+
json: true,
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
// Chat Message operations
|
|
512
|
+
if (resource === 'chatMessage') {
|
|
513
|
+
if (operation === 'getAll') {
|
|
514
|
+
const chatId = this.getNodeParameter('chatId', i);
|
|
515
|
+
responseData = await this.helpers.request({
|
|
516
|
+
method: 'GET',
|
|
517
|
+
url: `https://api.linqapp.com/api/partner/v2/chat_messages`,
|
|
518
|
+
qs: { chat_id: chatId },
|
|
519
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
520
|
+
json: true,
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
if (operation === 'getOne') {
|
|
524
|
+
const chatMessageId = this.getNodeParameter('chatMessageId', i);
|
|
525
|
+
responseData = await this.helpers.request({
|
|
526
|
+
method: 'GET',
|
|
527
|
+
url: `https://api.linqapp.com/api/partner/v2/chat_messages/${chatMessageId}`,
|
|
528
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
529
|
+
json: true,
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
if (operation === 'create') {
|
|
533
|
+
const chatId = this.getNodeParameter('chatId', i);
|
|
534
|
+
const messageText = this.getNodeParameter('messageText', i);
|
|
535
|
+
const body = {
|
|
536
|
+
chat_id: chatId,
|
|
537
|
+
text: messageText
|
|
538
|
+
};
|
|
539
|
+
responseData = await this.helpers.request({
|
|
540
|
+
method: 'POST',
|
|
541
|
+
url: 'https://api.linqapp.com/api/partner/v2/chat_messages',
|
|
542
|
+
headers: {
|
|
543
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
544
|
+
'Content-Type': 'application/json'
|
|
545
|
+
},
|
|
546
|
+
body: JSON.stringify(body),
|
|
547
|
+
json: true,
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
if (operation === 'delete') {
|
|
551
|
+
const chatMessageId = this.getNodeParameter('chatMessageId', i);
|
|
552
|
+
responseData = await this.helpers.request({
|
|
553
|
+
method: 'DELETE',
|
|
554
|
+
url: `https://api.linqapp.com/api/partner/v2/chat_messages/${chatMessageId}`,
|
|
555
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
556
|
+
json: true,
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
if (operation === 'edit') {
|
|
560
|
+
const chatMessageId = this.getNodeParameter('chatMessageId', i);
|
|
561
|
+
const messageText = this.getNodeParameter('messageText', i);
|
|
562
|
+
const body = {
|
|
563
|
+
text: messageText
|
|
564
|
+
};
|
|
565
|
+
responseData = await this.helpers.request({
|
|
566
|
+
method: 'POST',
|
|
567
|
+
url: `https://api.linqapp.com/api/partner/v2/chat_messages/${chatMessageId}/edit`,
|
|
568
|
+
headers: {
|
|
569
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
570
|
+
'Content-Type': 'application/json'
|
|
571
|
+
},
|
|
572
|
+
body: JSON.stringify(body),
|
|
573
|
+
json: true,
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
if (operation === 'react') {
|
|
577
|
+
const chatMessageId = this.getNodeParameter('chatMessageId', i);
|
|
578
|
+
const reaction = this.getNodeParameter('reaction', i);
|
|
579
|
+
const body = {
|
|
580
|
+
reaction: reaction
|
|
581
|
+
};
|
|
582
|
+
responseData = await this.helpers.request({
|
|
583
|
+
method: 'POST',
|
|
584
|
+
url: `https://api.linqapp.com/api/partner/v2/chat_messages/${chatMessageId}/react`,
|
|
585
|
+
headers: {
|
|
586
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
587
|
+
'Content-Type': 'application/json'
|
|
588
|
+
},
|
|
589
|
+
body: JSON.stringify(body),
|
|
590
|
+
json: true,
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
if (operation === 'getReaction') {
|
|
594
|
+
const chatMessageId = this.getNodeParameter('chatMessageId', i);
|
|
595
|
+
responseData = await this.helpers.request({
|
|
596
|
+
method: 'GET',
|
|
597
|
+
url: `https://api.linqapp.com/api/partner/v2/chat_messages/${chatMessageId}/reaction`,
|
|
598
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
599
|
+
json: true,
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
// Phone Number operations
|
|
604
|
+
if (resource === 'phoneNumber') {
|
|
605
|
+
if (operation === 'getAll') {
|
|
606
|
+
responseData = await this.helpers.request({
|
|
607
|
+
method: 'GET',
|
|
608
|
+
url: 'https://api.linqapp.com/api/partner/v2/phone_numbers',
|
|
609
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
610
|
+
json: true,
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
if (operation === 'checkIMessageAvailability') {
|
|
614
|
+
const phoneNumber = this.getNodeParameter('phoneNumber', i);
|
|
615
|
+
const body = {
|
|
616
|
+
phone_number: phoneNumber
|
|
617
|
+
};
|
|
618
|
+
responseData = await this.helpers.request({
|
|
619
|
+
method: 'POST',
|
|
620
|
+
url: 'https://api.linqapp.com/api/partner/v2/i_message_availability/check',
|
|
621
|
+
headers: {
|
|
622
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
623
|
+
'Content-Type': 'application/json'
|
|
624
|
+
},
|
|
625
|
+
body: JSON.stringify(body),
|
|
626
|
+
json: true,
|
|
627
|
+
});
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
// Webhook Subscription operations
|
|
631
|
+
if (resource === 'webhookSubscription') {
|
|
632
|
+
if (operation === 'getAll') {
|
|
633
|
+
responseData = await this.helpers.request({
|
|
634
|
+
method: 'GET',
|
|
635
|
+
url: 'https://api.linqapp.com/api/partner/v2/webhook_subscriptions',
|
|
636
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
637
|
+
json: true,
|
|
638
|
+
});
|
|
639
|
+
}
|
|
640
|
+
if (operation === 'getOne') {
|
|
641
|
+
const webhookSubscriptionId = this.getNodeParameter('webhookSubscriptionId', i);
|
|
642
|
+
responseData = await this.helpers.request({
|
|
643
|
+
method: 'GET',
|
|
644
|
+
url: `https://api.linqapp.com/api/partner/v2/webhook_subscriptions/${webhookSubscriptionId}`,
|
|
645
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
646
|
+
json: true,
|
|
647
|
+
});
|
|
648
|
+
}
|
|
649
|
+
if (operation === 'create') {
|
|
650
|
+
const webhookUrl = this.getNodeParameter('webhookUrl', i);
|
|
651
|
+
const events = this.getNodeParameter('events', i);
|
|
652
|
+
const version = this.getNodeParameter('version', i);
|
|
653
|
+
const active = this.getNodeParameter('active', i);
|
|
654
|
+
const body = {
|
|
655
|
+
webhook_url: webhookUrl,
|
|
656
|
+
version: version,
|
|
657
|
+
active: active
|
|
658
|
+
};
|
|
659
|
+
if (events) {
|
|
660
|
+
body.events = events.split(',').map(e => e.trim());
|
|
661
|
+
}
|
|
662
|
+
responseData = await this.helpers.request({
|
|
663
|
+
method: 'POST',
|
|
664
|
+
url: 'https://api.linqapp.com/api/partner/v2/webhook_subscriptions',
|
|
665
|
+
headers: {
|
|
666
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
667
|
+
'Content-Type': 'application/json'
|
|
668
|
+
},
|
|
669
|
+
body: JSON.stringify(body),
|
|
670
|
+
json: true,
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
if (operation === 'update') {
|
|
674
|
+
const webhookSubscriptionId = this.getNodeParameter('webhookSubscriptionId', i);
|
|
675
|
+
const webhookUrl = this.getNodeParameter('webhookUrl', i);
|
|
676
|
+
const events = this.getNodeParameter('events', i);
|
|
677
|
+
const version = this.getNodeParameter('version', i);
|
|
678
|
+
const active = this.getNodeParameter('active', i);
|
|
679
|
+
const body = {
|
|
680
|
+
version: version,
|
|
681
|
+
active: active
|
|
682
|
+
};
|
|
683
|
+
if (webhookUrl) {
|
|
684
|
+
body.webhook_url = webhookUrl;
|
|
685
|
+
}
|
|
686
|
+
if (events) {
|
|
687
|
+
body.events = events.split(',').map(e => e.trim());
|
|
688
|
+
}
|
|
689
|
+
responseData = await this.helpers.request({
|
|
690
|
+
method: 'PUT',
|
|
691
|
+
url: `https://api.linqapp.com/api/partner/v2/webhook_subscriptions/${webhookSubscriptionId}`,
|
|
692
|
+
headers: {
|
|
693
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
694
|
+
'Content-Type': 'application/json'
|
|
695
|
+
},
|
|
696
|
+
body: JSON.stringify(body),
|
|
697
|
+
json: true,
|
|
698
|
+
});
|
|
699
|
+
}
|
|
700
|
+
if (operation === 'delete') {
|
|
701
|
+
const webhookSubscriptionId = this.getNodeParameter('webhookSubscriptionId', i);
|
|
702
|
+
responseData = await this.helpers.request({
|
|
703
|
+
method: 'DELETE',
|
|
704
|
+
url: `https://api.linqapp.com/api/partner/v2/webhook_subscriptions/${webhookSubscriptionId}`,
|
|
705
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
706
|
+
json: true,
|
|
707
|
+
});
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
// Contact operations
|
|
711
|
+
if (resource === 'contact') {
|
|
712
|
+
if (operation === 'create') {
|
|
713
|
+
const firstName = this.getNodeParameter('firstName', i);
|
|
714
|
+
const lastName = this.getNodeParameter('lastName', i);
|
|
715
|
+
const email = this.getNodeParameter('email', i);
|
|
716
|
+
const phoneNumber = this.getNodeParameter('phoneNumber', i);
|
|
717
|
+
const company = this.getNodeParameter('company', i);
|
|
718
|
+
const title = this.getNodeParameter('title', i);
|
|
719
|
+
const location = this.getNodeParameter('location', i);
|
|
720
|
+
const body = {
|
|
721
|
+
contact: {}
|
|
722
|
+
};
|
|
723
|
+
if (firstName)
|
|
724
|
+
body.contact.first_name = firstName;
|
|
725
|
+
if (lastName)
|
|
726
|
+
body.contact.last_name = lastName;
|
|
727
|
+
if (email)
|
|
728
|
+
body.contact.email = email;
|
|
729
|
+
if (phoneNumber)
|
|
730
|
+
body.contact.phone_number = phoneNumber;
|
|
731
|
+
if (company)
|
|
732
|
+
body.contact.company = company;
|
|
733
|
+
if (title)
|
|
734
|
+
body.contact.title = title;
|
|
735
|
+
if (location)
|
|
736
|
+
body.contact.location = location;
|
|
737
|
+
responseData = await this.helpers.request({
|
|
738
|
+
method: 'POST',
|
|
739
|
+
url: 'https://api.linqapp.com/api/partner/v2/contacts',
|
|
740
|
+
headers: {
|
|
741
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
742
|
+
'Content-Type': 'application/json'
|
|
743
|
+
},
|
|
744
|
+
body: JSON.stringify(body),
|
|
745
|
+
json: true,
|
|
746
|
+
});
|
|
747
|
+
}
|
|
748
|
+
if (operation === 'getOne') {
|
|
749
|
+
const contactId = this.getNodeParameter('contactId', i);
|
|
750
|
+
responseData = await this.helpers.request({
|
|
751
|
+
method: 'GET',
|
|
752
|
+
url: `https://api.linqapp.com/api/partner/v2/contacts/${contactId}`,
|
|
753
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
754
|
+
json: true,
|
|
755
|
+
});
|
|
756
|
+
}
|
|
757
|
+
if (operation === 'update') {
|
|
758
|
+
const contactId = this.getNodeParameter('contactId', i);
|
|
759
|
+
const firstName = this.getNodeParameter('firstName', i);
|
|
760
|
+
const lastName = this.getNodeParameter('lastName', i);
|
|
761
|
+
const email = this.getNodeParameter('email', i);
|
|
762
|
+
const phoneNumber = this.getNodeParameter('phoneNumber', i);
|
|
763
|
+
const company = this.getNodeParameter('company', i);
|
|
764
|
+
const title = this.getNodeParameter('title', i);
|
|
765
|
+
const location = this.getNodeParameter('location', i);
|
|
766
|
+
const body = {
|
|
767
|
+
contact: {}
|
|
768
|
+
};
|
|
769
|
+
if (firstName)
|
|
770
|
+
body.contact.first_name = firstName;
|
|
771
|
+
if (lastName)
|
|
772
|
+
body.contact.last_name = lastName;
|
|
773
|
+
if (email)
|
|
774
|
+
body.contact.email = email;
|
|
775
|
+
if (phoneNumber)
|
|
776
|
+
body.contact.phone_number = phoneNumber;
|
|
777
|
+
if (company)
|
|
778
|
+
body.contact.company = company;
|
|
779
|
+
if (title)
|
|
780
|
+
body.contact.title = title;
|
|
781
|
+
if (location)
|
|
782
|
+
body.contact.location = location;
|
|
783
|
+
responseData = await this.helpers.request({
|
|
784
|
+
method: 'PUT',
|
|
785
|
+
url: `https://api.linqapp.com/api/partner/v2/contacts/${contactId}`,
|
|
786
|
+
headers: {
|
|
787
|
+
'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken,
|
|
788
|
+
'Content-Type': 'application/json'
|
|
789
|
+
},
|
|
790
|
+
body: JSON.stringify(body),
|
|
791
|
+
json: true,
|
|
792
|
+
});
|
|
793
|
+
}
|
|
794
|
+
if (operation === 'delete') {
|
|
795
|
+
const contactId = this.getNodeParameter('contactId', i);
|
|
796
|
+
responseData = await this.helpers.request({
|
|
797
|
+
method: 'DELETE',
|
|
798
|
+
url: `https://api.linqapp.com/api/partner/v2/contacts/${contactId}`,
|
|
799
|
+
headers: { 'X-LINQ-INTEGRATION-TOKEN': credentials.integrationToken },
|
|
800
|
+
json: true,
|
|
801
|
+
});
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
returnData.push({ json: responseData });
|
|
805
|
+
}
|
|
806
|
+
return [returnData];
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
exports.Linq = Linq;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 71 42" class=" fill-current w-24 h-16"><path fill="currentColor" d="M20.03 7.41H15.3C15.1675 7.41 15.06 7.51745 15.06 7.64999V31.78C15.06 31.9125 15.1675 32.02 15.3 32.02H20.03C20.1625 32.02 20.27 31.9125 20.27 31.78V7.64999C20.27 7.51745 20.1625 7.41 20.03 7.41Z"></path><path fill="currentColor" d="M34.91 6.92C33.7685 6.90579 32.637 7.1327 31.5892 7.58591C30.5415 8.03912 29.6013 8.70841 28.83 9.55C28.68 9.7 28.39 9.79 28.3 9.55L27.81 7.7C27.7895 7.62704 27.7445 7.56335 27.6826 7.51965C27.6207 7.47594 27.5456 7.45488 27.47 7.46H23.34C23.3081 7.45858 23.2763 7.46382 23.2465 7.47538C23.2167 7.48693 23.1897 7.50457 23.1671 7.52714C23.1446 7.54972 23.1269 7.57674 23.1154 7.6065C23.1038 7.63626 23.0986 7.66811 23.1 7.7V31.77C23.0986 31.8019 23.1038 31.8337 23.1154 31.8635C23.1269 31.8933 23.1446 31.9203 23.1671 31.9429C23.1897 31.9654 23.2167 31.9831 23.2465 31.9946C23.2763 32.0062 23.3081 32.0114 23.34 32.01H28.06C28.0927 32.0129 28.1256 32.0088 28.1566 31.9979C28.1876 31.987 28.2159 31.9695 28.2395 31.9468C28.2632 31.9241 28.2818 31.8965 28.2939 31.866C28.3061 31.8355 28.3116 31.8028 28.31 31.77V18.21C28.31 14.85 30.25 11.69 34.19 11.69C38.52 11.69 40.13 15.14 40.13 18.45V31.77C40.1269 31.8023 40.131 31.8349 40.1419 31.8654C40.1529 31.8959 40.1705 31.9236 40.1934 31.9466C40.2164 31.9695 40.2441 31.9871 40.2746 31.9981C40.3051 32.009 40.3377 32.0131 40.37 32.01H45.14C45.1719 32.0114 45.2037 32.0062 45.2335 31.9946C45.2633 31.9831 45.2903 31.9654 45.3129 31.9429C45.3354 31.9203 45.3531 31.8933 45.3646 31.8635C45.3762 31.8337 45.3814 31.8019 45.38 31.77V18.45C45.38 12.22 42.27 6.92 34.91 6.92Z"></path><path fill="currentColor" d="M70.38 7.41H66.25C66.05 7.41 65.96 7.40999 65.91 7.64999L65.42 9.39999C65.32 9.64999 65.08 9.65 64.89 9.45C63.051 7.88487 60.7338 6.99257 58.32 6.92C51.31 6.92 46.91 12.13 46.91 19.77C46.91 27.41 51.53 32.56 58.29 32.56C60.7749 32.5932 63.1774 31.6694 65 29.98C65.0328 29.953 65.0722 29.9351 65.1141 29.9283C65.1561 29.9215 65.1991 29.926 65.2388 29.9412C65.2784 29.9565 65.3133 29.982 65.3399 30.0152C65.3665 30.0483 65.3838 30.088 65.39 30.13V41.46C65.3886 41.4932 65.3941 41.5263 65.4061 41.5573C65.4182 41.5883 65.4366 41.6164 65.4601 41.6399C65.4836 41.6634 65.5117 41.6818 65.5427 41.6938C65.5737 41.7059 65.6068 41.7114 65.64 41.71H70.35C70.3832 41.7114 70.4164 41.7059 70.4473 41.6938C70.4783 41.6818 70.5064 41.6634 70.5299 41.6399C70.5534 41.6164 70.5718 41.5883 70.5839 41.5573C70.5959 41.5263 70.6014 41.4932 70.6 41.46V7.64999C70.6013 7.61978 70.5967 7.58961 70.5864 7.56119C70.576 7.53277 70.5602 7.50667 70.5398 7.48438C70.5193 7.46208 70.4947 7.44404 70.4673 7.43127C70.4399 7.41851 70.4102 7.41128 70.38 7.41ZM59.05 27.77C54.62 27.77 52.19 24.46 52.19 19.77C52.19 15.08 54.62 11.69 59.05 11.69C63.18 11.69 65.42 15.05 65.42 19.77C65.42 24.68 63.18 27.77 59.05 27.77Z"></path><path fill="currentColor" d="M17.66 0C17.0667 0 16.4866 0.17594 15.9933 0.505585C15.4999 0.835229 15.1154 1.30377 14.8884 1.85194C14.6613 2.40012 14.6019 3.00332 14.7176 3.58527C14.8334 4.16721 15.1191 4.70176 15.5387 5.12132C15.9582 5.54087 16.4928 5.8266 17.0747 5.94235C17.6567 6.05811 18.2599 5.9987 18.808 5.77164C19.3562 5.54457 19.8248 5.16006 20.1544 4.66671C20.4841 4.17336 20.66 3.59334 20.66 3C20.66 2.20435 20.3439 1.44129 19.7813 0.878677C19.2187 0.316068 18.4557 0 17.66 0Z"></path><path fill="currentColor" d="M11.97 26.82H5.67C5.54706 26.82 5.429 26.7719 5.34114 26.6859C5.25328 26.5999 5.20262 26.4829 5.2 26.36V1.53999C5.2 1.47634 5.17472 1.4153 5.12971 1.37029C5.0847 1.32528 5.02365 1.3 4.96 1.3H0.240002C0.17635 1.3 0.115302 1.32528 0.0702934 1.37029C0.0252847 1.4153 0 1.47634 0 1.53999V28.54C0 29.4656 0.367696 30.3533 1.0222 31.0078C1.6767 31.6623 2.5644 32.03 3.49 32.03H11.97C12.0337 32.03 12.0947 32.0047 12.1397 31.9597C12.1847 31.9147 12.21 31.8536 12.21 31.79V27.06C12.21 26.9963 12.1847 26.9353 12.1397 26.8903C12.0947 26.8453 12.0337 26.82 11.97 26.82Z"></path></svg>
|
package/index.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-linq",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Linq API integration for n8n",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"n8n-community-node-package",
|
|
7
|
+
"n8n",
|
|
8
|
+
"linq",
|
|
9
|
+
"automation"
|
|
10
|
+
],
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"homepage": "https://www.npmjs.com/package/n8n-nodes-linq",
|
|
13
|
+
"author": {
|
|
14
|
+
"name": "alexautomates"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/your-username/n8n-nodes-linq.git"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=20.15"
|
|
22
|
+
},
|
|
23
|
+
"main": "index.js",
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "npx rimraf dist && tsc && gulp build:icons",
|
|
26
|
+
"lint": "eslint nodes credentials",
|
|
27
|
+
"lintfix": "eslint nodes credentials --fix",
|
|
28
|
+
"prepublishOnly": "npm run build && npm run lint -c .eslintrc.prepublish.js nodes credentials"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"n8n": {
|
|
34
|
+
"n8nNodesApiVersion": 1,
|
|
35
|
+
"credentials": [
|
|
36
|
+
"dist/credentials/LinqApi.credentials.js"
|
|
37
|
+
],
|
|
38
|
+
"nodes": [
|
|
39
|
+
"dist/nodes/Linq/Linq.node.js"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@typescript-eslint/parser": "~8.32.0",
|
|
44
|
+
"eslint": "^8.57.0",
|
|
45
|
+
"eslint-plugin-n8n-nodes-base": "^1.16.3",
|
|
46
|
+
"gulp": "^5.0.0",
|
|
47
|
+
"prettier": "^3.5.3",
|
|
48
|
+
"typescript": "^5.8.2"
|
|
49
|
+
},
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"n8n-workflow": "*"
|
|
52
|
+
}
|
|
53
|
+
}
|