n8n-nodes-flowboard 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,8 @@
1
+ import { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class FlowBoardApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ authenticate: IAuthenticateGeneric;
8
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowBoardApi = void 0;
4
+ class FlowBoardApi {
5
+ constructor() {
6
+ this.name = 'flowBoardApi';
7
+ this.displayName = 'FlowBoard API';
8
+ this.documentationUrl = '';
9
+ this.properties = [
10
+ {
11
+ displayName: 'URL do Kanban',
12
+ name: 'baseUrl',
13
+ type: 'string',
14
+ default: '',
15
+ placeholder: 'https://kanban.seudominio.com.br',
16
+ description: 'URL base do backend do Kanban (sem barra final)',
17
+ required: true,
18
+ },
19
+ {
20
+ displayName: 'Access Token',
21
+ name: 'accessToken',
22
+ type: 'string',
23
+ typeOptions: { password: true },
24
+ default: '',
25
+ description: 'Token de acesso (access-token do Chatwoot)',
26
+ required: true,
27
+ },
28
+ {
29
+ displayName: 'Client',
30
+ name: 'client',
31
+ type: 'string',
32
+ typeOptions: { password: true },
33
+ default: '',
34
+ description: 'Identificador do client (cookie "client" do Chatwoot)',
35
+ required: true,
36
+ },
37
+ {
38
+ displayName: 'UID',
39
+ name: 'uid',
40
+ type: 'string',
41
+ default: '',
42
+ placeholder: 'email@exemplo.com',
43
+ description: 'UID do usuario (cookie "uid" do Chatwoot, geralmente o e-mail)',
44
+ required: true,
45
+ },
46
+ {
47
+ displayName: 'Token Type',
48
+ name: 'tokenType',
49
+ type: 'string',
50
+ default: 'Bearer',
51
+ description: 'Tipo do token (geralmente "Bearer")',
52
+ },
53
+ ];
54
+ this.authenticate = {
55
+ type: 'generic',
56
+ properties: {
57
+ headers: {
58
+ 'access-token': '={{$credentials.accessToken}}',
59
+ 'token-type': '={{$credentials.tokenType}}',
60
+ 'client': '={{$credentials.client}}',
61
+ 'uid': '={{$credentials.uid}}',
62
+ 'Content-Type': 'application/json',
63
+ },
64
+ },
65
+ };
66
+ }
67
+ }
68
+ exports.FlowBoardApi = FlowBoardApi;
69
+ //# sourceMappingURL=FlowBoardApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowBoardApi.credentials.js","sourceRoot":"","sources":["../../credentials/FlowBoardApi.credentials.ts"],"names":[],"mappings":";;;AAMA,MAAa,YAAY;IAAzB;QACC,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,eAAe,CAAC;QAC9B,qBAAgB,GAAG,EAAE,CAAC;QAEtB,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,kCAAkC;gBAC/C,WAAW,EAAE,iDAAiD;gBAC9D,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,4CAA4C;gBACzD,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,uDAAuD;gBACpE,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,KAAK;gBAClB,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,mBAAmB;gBAChC,WAAW,EAAE,gEAAgE;gBAC7E,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;gBACjB,WAAW,EAAE,qCAAqC;aAClD;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,cAAc,EAAE,+BAA+B;oBAC/C,YAAY,EAAE,6BAA6B;oBAC3C,QAAQ,EAAE,0BAA0B;oBACpC,KAAK,EAAE,uBAAuB;oBAC9B,cAAc,EAAE,kBAAkB;iBAClC;aACD;SACD,CAAC;IACH,CAAC;CAAA;AA/DD,oCA+DC"}
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class FlowBoard implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,437 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowBoard = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ class FlowBoard {
6
+ constructor() {
7
+ this.description = {
8
+ displayName: 'FlowBoard Kanban',
9
+ name: 'flowBoard',
10
+ icon: 'file:flowboard.svg',
11
+ group: ['transform'],
12
+ version: 1,
13
+ subtitle: '={{ $parameter["resource"] + ": " + $parameter["operation"] }}',
14
+ description: 'Gerencie funis, etapas e mensagens agendadas do seu Kanban integrado ao Chatwoot',
15
+ defaults: {
16
+ name: 'FlowBoard Kanban',
17
+ },
18
+ inputs: ['main'],
19
+ outputs: ['main'],
20
+ usableAsTool: true,
21
+ credentials: [
22
+ {
23
+ name: 'flowBoardApi',
24
+ required: true,
25
+ },
26
+ ],
27
+ properties: [
28
+ // ─── RESOURCE ────────────────────────────────────────────
29
+ {
30
+ displayName: 'Recurso',
31
+ name: 'resource',
32
+ type: 'options',
33
+ noDataExpression: true,
34
+ options: [
35
+ {
36
+ name: 'Funil',
37
+ value: 'funnel',
38
+ description: 'Gerenciar funis (boards) do Kanban',
39
+ },
40
+ {
41
+ name: 'Conversa no Kanban',
42
+ value: 'conversationStage',
43
+ description: 'Gerenciar a posicao de conversas nas etapas do Kanban',
44
+ },
45
+ {
46
+ name: 'Mensagem Agendada',
47
+ value: 'scheduledMessage',
48
+ description: 'Gerenciar mensagens agendadas de conversas',
49
+ },
50
+ ],
51
+ default: 'funnel',
52
+ },
53
+ // ═══════════════════════════════════════════════════════════
54
+ // FUNIL
55
+ // ═══════════════════════════════════════════════════════════
56
+ // ─── OPERATIONS ──────────────────────────────────────────
57
+ {
58
+ displayName: 'Operacao',
59
+ name: 'operation',
60
+ type: 'options',
61
+ noDataExpression: true,
62
+ displayOptions: {
63
+ show: {
64
+ resource: ['funnel'],
65
+ },
66
+ },
67
+ options: [
68
+ {
69
+ name: 'Listar Todos',
70
+ value: 'list',
71
+ description: 'Listar todos os funis disponiveis',
72
+ action: 'Listar todos os funis',
73
+ },
74
+ ],
75
+ default: 'list',
76
+ },
77
+ // ═══════════════════════════════════════════════════════════
78
+ // CONVERSA NO KANBAN
79
+ // ═══════════════════════════════════════════════════════════
80
+ // ─── OPERATIONS ──────────────────────────────────────────
81
+ {
82
+ displayName: 'Operacao',
83
+ name: 'operation',
84
+ type: 'options',
85
+ noDataExpression: true,
86
+ displayOptions: {
87
+ show: {
88
+ resource: ['conversationStage'],
89
+ },
90
+ },
91
+ options: [
92
+ {
93
+ name: 'Obter Etapa Atual',
94
+ value: 'getStage',
95
+ description: 'Obter a etapa atual de uma conversa no Kanban',
96
+ action: 'Obter etapa atual da conversa',
97
+ },
98
+ {
99
+ name: 'Mover Para Etapa',
100
+ value: 'moveToStage',
101
+ description: 'Mover uma conversa para outra etapa do funil',
102
+ action: 'Mover conversa para etapa',
103
+ },
104
+ {
105
+ name: 'Remover do Kanban',
106
+ value: 'remove',
107
+ description: 'Remover uma conversa do Kanban',
108
+ action: 'Remover conversa do kanban',
109
+ },
110
+ ],
111
+ default: 'getStage',
112
+ },
113
+ // ─── FIELDS: Conversa no Kanban ──────────────────────────
114
+ {
115
+ displayName: 'ID da Conversa',
116
+ name: 'conversationId',
117
+ type: 'string',
118
+ required: true,
119
+ default: '',
120
+ placeholder: '12345',
121
+ description: 'ID da conversa no Chatwoot',
122
+ displayOptions: {
123
+ show: {
124
+ resource: ['conversationStage'],
125
+ },
126
+ },
127
+ },
128
+ {
129
+ displayName: 'ID da Etapa (Stage)',
130
+ name: 'stageId',
131
+ type: 'string',
132
+ required: true,
133
+ default: '',
134
+ placeholder: '1',
135
+ description: 'ID da etapa de destino no funil',
136
+ displayOptions: {
137
+ show: {
138
+ resource: ['conversationStage'],
139
+ operation: ['moveToStage'],
140
+ },
141
+ },
142
+ },
143
+ // ═══════════════════════════════════════════════════════════
144
+ // MENSAGEM AGENDADA
145
+ // ═══════════════════════════════════════════════════════════
146
+ // ─── OPERATIONS ──────────────────────────────────────────
147
+ {
148
+ displayName: 'Operacao',
149
+ name: 'operation',
150
+ type: 'options',
151
+ noDataExpression: true,
152
+ displayOptions: {
153
+ show: {
154
+ resource: ['scheduledMessage'],
155
+ },
156
+ },
157
+ options: [
158
+ {
159
+ name: 'Criar',
160
+ value: 'create',
161
+ description: 'Agendar uma nova mensagem para uma conversa',
162
+ action: 'Criar mensagem agendada',
163
+ },
164
+ {
165
+ name: 'Listar',
166
+ value: 'list',
167
+ description: 'Listar todas as mensagens agendadas de uma conversa',
168
+ action: 'Listar mensagens agendadas',
169
+ },
170
+ {
171
+ name: 'Editar',
172
+ value: 'update',
173
+ description: 'Editar uma mensagem agendada existente',
174
+ action: 'Editar mensagem agendada',
175
+ },
176
+ {
177
+ name: 'Cancelar',
178
+ value: 'delete',
179
+ description: 'Cancelar (excluir) uma mensagem agendada',
180
+ action: 'Cancelar mensagem agendada',
181
+ },
182
+ ],
183
+ default: 'create',
184
+ },
185
+ // ─── FIELDS: Mensagem Agendada ───────────────────────────
186
+ // ID da conversa (para todas as operacoes de mensagem agendada)
187
+ {
188
+ displayName: 'ID da Conversa',
189
+ name: 'conversationId',
190
+ type: 'string',
191
+ required: true,
192
+ default: '',
193
+ placeholder: '12345',
194
+ description: 'ID da conversa no Chatwoot',
195
+ displayOptions: {
196
+ show: {
197
+ resource: ['scheduledMessage'],
198
+ },
199
+ },
200
+ },
201
+ // ID da mensagem (para update e delete)
202
+ {
203
+ displayName: 'ID da Mensagem Agendada',
204
+ name: 'messageId',
205
+ type: 'string',
206
+ required: true,
207
+ default: '',
208
+ placeholder: '99',
209
+ description: 'ID da mensagem agendada',
210
+ displayOptions: {
211
+ show: {
212
+ resource: ['scheduledMessage'],
213
+ operation: ['update', 'delete'],
214
+ },
215
+ },
216
+ },
217
+ // Conteudo da mensagem (para create e update)
218
+ {
219
+ displayName: 'Mensagem',
220
+ name: 'message',
221
+ type: 'string',
222
+ typeOptions: {
223
+ rows: 4,
224
+ },
225
+ required: true,
226
+ default: '',
227
+ placeholder: 'Ola! Gostaria de confirmar seu agendamento...',
228
+ description: 'Conteudo da mensagem a ser enviada',
229
+ displayOptions: {
230
+ show: {
231
+ resource: ['scheduledMessage'],
232
+ operation: ['create'],
233
+ },
234
+ },
235
+ },
236
+ // Data/hora do agendamento (para create)
237
+ {
238
+ displayName: 'Data e Hora do Envio',
239
+ name: 'scheduledAt',
240
+ type: 'dateTime',
241
+ required: true,
242
+ default: '',
243
+ description: 'Data e hora em que a mensagem sera enviada (formato ISO 8601)',
244
+ displayOptions: {
245
+ show: {
246
+ resource: ['scheduledMessage'],
247
+ operation: ['create'],
248
+ },
249
+ },
250
+ },
251
+ // Campos opcionais do update
252
+ {
253
+ displayName: 'Campos Para Atualizar',
254
+ name: 'updateFields',
255
+ type: 'collection',
256
+ placeholder: 'Adicionar Campo',
257
+ default: {},
258
+ displayOptions: {
259
+ show: {
260
+ resource: ['scheduledMessage'],
261
+ operation: ['update'],
262
+ },
263
+ },
264
+ options: [
265
+ {
266
+ displayName: 'Mensagem',
267
+ name: 'message',
268
+ type: 'string',
269
+ typeOptions: {
270
+ rows: 4,
271
+ },
272
+ default: '',
273
+ description: 'Novo conteudo da mensagem',
274
+ },
275
+ {
276
+ displayName: 'Data e Hora do Envio',
277
+ name: 'scheduledAt',
278
+ type: 'dateTime',
279
+ default: '',
280
+ description: 'Nova data e hora do envio',
281
+ },
282
+ ],
283
+ },
284
+ // Campos opcionais do create
285
+ {
286
+ displayName: 'Opcoes Adicionais',
287
+ name: 'additionalOptions',
288
+ type: 'collection',
289
+ placeholder: 'Adicionar Opcao',
290
+ default: {},
291
+ displayOptions: {
292
+ show: {
293
+ resource: ['scheduledMessage'],
294
+ operation: ['create'],
295
+ },
296
+ },
297
+ options: [
298
+ {
299
+ displayName: 'Anexos (JSON)',
300
+ name: 'attachments',
301
+ type: 'string',
302
+ default: '',
303
+ placeholder: '["url1", "url2"]',
304
+ description: 'Lista de URLs de anexos em formato JSON',
305
+ },
306
+ ],
307
+ },
308
+ ],
309
+ };
310
+ }
311
+ async execute() {
312
+ var _a;
313
+ const items = this.getInputData();
314
+ const returnData = [];
315
+ const credentials = await this.getCredentials('flowBoardApi');
316
+ const baseUrl = credentials.baseUrl.replace(/\/+$/, '');
317
+ for (let i = 0; i < items.length; i++) {
318
+ try {
319
+ const resource = this.getNodeParameter('resource', i);
320
+ const operation = this.getNodeParameter('operation', i);
321
+ let endpoint = '';
322
+ let method = 'GET';
323
+ let body = {};
324
+ // ─── FUNIL ───────────────────────────────────────
325
+ if (resource === 'funnel') {
326
+ if (operation === 'list') {
327
+ endpoint = '/api/funnels';
328
+ method = 'GET';
329
+ }
330
+ }
331
+ // ─── CONVERSA NO KANBAN ──────────────────────────
332
+ if (resource === 'conversationStage') {
333
+ const conversationId = this.getNodeParameter('conversationId', i);
334
+ if (operation === 'getStage') {
335
+ endpoint = `/api/kanban/conversation/${conversationId}/stage`;
336
+ method = 'GET';
337
+ }
338
+ if (operation === 'moveToStage') {
339
+ const stageId = this.getNodeParameter('stageId', i);
340
+ endpoint = `/api/kanban/${conversationId}/move-to-stage`;
341
+ method = 'PATCH';
342
+ body = { stageId: Number(stageId) };
343
+ }
344
+ if (operation === 'remove') {
345
+ endpoint = `/api/kanban/${conversationId}/remove`;
346
+ method = 'DELETE';
347
+ }
348
+ }
349
+ // ─── MENSAGEM AGENDADA ───────────────────────────
350
+ if (resource === 'scheduledMessage') {
351
+ const conversationId = this.getNodeParameter('conversationId', i);
352
+ if (operation === 'create') {
353
+ const message = this.getNodeParameter('message', i);
354
+ const scheduledAt = this.getNodeParameter('scheduledAt', i);
355
+ const additionalOptions = this.getNodeParameter('additionalOptions', i, {});
356
+ endpoint = `/api/conversations/${conversationId}/scheduled-messages`;
357
+ method = 'POST';
358
+ body = {
359
+ message,
360
+ scheduledAt,
361
+ };
362
+ if (additionalOptions.attachments) {
363
+ try {
364
+ body.attachments = JSON.parse(additionalOptions.attachments);
365
+ }
366
+ catch {
367
+ body.attachments = additionalOptions.attachments;
368
+ }
369
+ }
370
+ }
371
+ if (operation === 'list') {
372
+ endpoint = `/api/conversations/${conversationId}/scheduled-messages`;
373
+ method = 'GET';
374
+ }
375
+ if (operation === 'update') {
376
+ const messageId = this.getNodeParameter('messageId', i);
377
+ const updateFields = this.getNodeParameter('updateFields', i, {});
378
+ if (Object.keys(updateFields).length === 0) {
379
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Selecione pelo menos um campo para atualizar', { itemIndex: i });
380
+ }
381
+ endpoint = `/api/conversations/${conversationId}/scheduled-messages/${messageId}`;
382
+ method = 'PATCH';
383
+ body = {};
384
+ if (updateFields.message !== undefined) {
385
+ body.message = updateFields.message;
386
+ }
387
+ if (updateFields.scheduledAt !== undefined) {
388
+ body.scheduledAt = updateFields.scheduledAt;
389
+ }
390
+ }
391
+ if (operation === 'delete') {
392
+ const messageId = this.getNodeParameter('messageId', i);
393
+ endpoint = `/api/conversations/${conversationId}/scheduled-messages/${messageId}`;
394
+ method = 'DELETE';
395
+ }
396
+ }
397
+ // ─── EXECUTA A REQUISICAO ────────────────────────
398
+ const requestOptions = {
399
+ method,
400
+ url: `${baseUrl}${endpoint}`,
401
+ json: true,
402
+ };
403
+ if (method !== 'GET' && method !== 'DELETE' && Object.keys(body).length > 0) {
404
+ requestOptions.body = body;
405
+ }
406
+ const response = await this.helpers.httpRequestWithAuthentication.call(this, 'flowBoardApi', requestOptions);
407
+ // Normaliza a resposta para array
408
+ if (Array.isArray(response)) {
409
+ for (const item of response) {
410
+ returnData.push({ json: item });
411
+ }
412
+ }
413
+ else {
414
+ returnData.push({ json: response !== null && response !== void 0 ? response : { success: true } });
415
+ }
416
+ }
417
+ catch (error) {
418
+ if (this.continueOnFail()) {
419
+ returnData.push({
420
+ json: {
421
+ error: error.message,
422
+ },
423
+ pairedItem: { item: i },
424
+ });
425
+ continue;
426
+ }
427
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
428
+ itemIndex: i,
429
+ description: (_a = error.description) !== null && _a !== void 0 ? _a : `Erro ao chamar a API do FlowBoard: ${error.message}`,
430
+ });
431
+ }
432
+ }
433
+ return [returnData];
434
+ }
435
+ }
436
+ exports.FlowBoard = FlowBoard;
437
+ //# sourceMappingURL=FlowBoard.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowBoard.node.js","sourceRoot":"","sources":["../../../nodes/FlowBoard/FlowBoard.node.ts"],"names":[],"mappings":";;;AAAA,+CAOsB;AAEtB,MAAa,SAAS;IAAtB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,gEAAgE;YAC1E,WAAW,EAAE,kFAAkF;YAC/F,QAAQ,EAAE;gBACT,IAAI,EAAE,kBAAkB;aACxB;YACD,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,cAAc;oBACpB,QAAQ,EAAE,IAAI;iBACd;aACD;YAED,UAAU,EAAE;gBACX,4DAA4D;gBAC5D;oBACC,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,oCAAoC;yBACjD;wBACD;4BACC,IAAI,EAAE,oBAAoB;4BAC1B,KAAK,EAAE,mBAAmB;4BAC1B,WAAW,EAAE,uDAAuD;yBACpE;wBACD;4BACC,IAAI,EAAE,mBAAmB;4BACzB,KAAK,EAAE,kBAAkB;4BACzB,WAAW,EAAE,4CAA4C;yBACzD;qBACD;oBACD,OAAO,EAAE,QAAQ;iBACjB;gBAED,8DAA8D;gBAC9D,+BAA+B;gBAC/B,8DAA8D;gBAE9D,4DAA4D;gBAC5D;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,QAAQ,CAAC;yBACpB;qBACD;oBACD,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,cAAc;4BACpB,KAAK,EAAE,MAAM;4BACb,WAAW,EAAE,mCAAmC;4BAChD,MAAM,EAAE,uBAAuB;yBAC/B;qBACD;oBACD,OAAO,EAAE,MAAM;iBACf;gBAED,8DAA8D;gBAC9D,uCAAuC;gBACvC,8DAA8D;gBAE9D,4DAA4D;gBAC5D;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,mBAAmB,CAAC;yBAC/B;qBACD;oBACD,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,mBAAmB;4BACzB,KAAK,EAAE,UAAU;4BACjB,WAAW,EAAE,+CAA+C;4BAC5D,MAAM,EAAE,+BAA+B;yBACvC;wBACD;4BACC,IAAI,EAAE,kBAAkB;4BACxB,KAAK,EAAE,aAAa;4BACpB,WAAW,EAAE,8CAA8C;4BAC3D,MAAM,EAAE,2BAA2B;yBACnC;wBACD;4BACC,IAAI,EAAE,mBAAmB;4BACzB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,gCAAgC;4BAC7C,MAAM,EAAE,4BAA4B;yBACpC;qBACD;oBACD,OAAO,EAAE,UAAU;iBACnB;gBAED,4DAA4D;gBAC5D;oBACC,WAAW,EAAE,gBAAgB;oBAC7B,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,OAAO;oBACpB,WAAW,EAAE,4BAA4B;oBACzC,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,mBAAmB,CAAC;yBAC/B;qBACD;iBACD;gBACD;oBACC,WAAW,EAAE,qBAAqB;oBAClC,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,GAAG;oBAChB,WAAW,EAAE,iCAAiC;oBAC9C,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,mBAAmB,CAAC;4BAC/B,SAAS,EAAE,CAAC,aAAa,CAAC;yBAC1B;qBACD;iBACD;gBAED,8DAA8D;gBAC9D,sCAAsC;gBACtC,8DAA8D;gBAE9D,4DAA4D;gBAC5D;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,kBAAkB,CAAC;yBAC9B;qBACD;oBACD,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,6CAA6C;4BAC1D,MAAM,EAAE,yBAAyB;yBACjC;wBACD;4BACC,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,MAAM;4BACb,WAAW,EAAE,qDAAqD;4BAClE,MAAM,EAAE,4BAA4B;yBACpC;wBACD;4BACC,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,wCAAwC;4BACrD,MAAM,EAAE,0BAA0B;yBAClC;wBACD;4BACC,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,0CAA0C;4BACvD,MAAM,EAAE,4BAA4B;yBACpC;qBACD;oBACD,OAAO,EAAE,QAAQ;iBACjB;gBAED,4DAA4D;gBAE5D,gEAAgE;gBAChE;oBACC,WAAW,EAAE,gBAAgB;oBAC7B,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,OAAO;oBACpB,WAAW,EAAE,4BAA4B;oBACzC,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,kBAAkB,CAAC;yBAC9B;qBACD;iBACD;gBAED,wCAAwC;gBACxC;oBACC,WAAW,EAAE,yBAAyB;oBACtC,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,IAAI;oBACjB,WAAW,EAAE,yBAAyB;oBACtC,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,kBAAkB,CAAC;4BAC9B,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;yBAC/B;qBACD;iBACD;gBAED,8CAA8C;gBAC9C;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE;wBACZ,IAAI,EAAE,CAAC;qBACP;oBACD,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,+CAA+C;oBAC5D,WAAW,EAAE,oCAAoC;oBACjD,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,kBAAkB,CAAC;4BAC9B,SAAS,EAAE,CAAC,QAAQ,CAAC;yBACrB;qBACD;iBACD;gBAED,yCAAyC;gBACzC;oBACC,WAAW,EAAE,sBAAsB;oBACnC,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,+DAA+D;oBAC5E,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,kBAAkB,CAAC;4BAC9B,SAAS,EAAE,CAAC,QAAQ,CAAC;yBACrB;qBACD;iBACD;gBAED,6BAA6B;gBAC7B;oBACC,WAAW,EAAE,uBAAuB;oBACpC,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,iBAAiB;oBAC9B,OAAO,EAAE,EAAE;oBACX,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,kBAAkB,CAAC;4BAC9B,SAAS,EAAE,CAAC,QAAQ,CAAC;yBACrB;qBACD;oBACD,OAAO,EAAE;wBACR;4BACC,WAAW,EAAE,UAAU;4BACvB,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE;gCACZ,IAAI,EAAE,CAAC;6BACP;4BACD,OAAO,EAAE,EAAE;4BACX,WAAW,EAAE,2BAA2B;yBACxC;wBACD;4BACC,WAAW,EAAE,sBAAsB;4BACnC,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,UAAU;4BAChB,OAAO,EAAE,EAAE;4BACX,WAAW,EAAE,2BAA2B;yBACxC;qBACD;iBACD;gBAED,6BAA6B;gBAC7B;oBACC,WAAW,EAAE,mBAAmB;oBAChC,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,iBAAiB;oBAC9B,OAAO,EAAE,EAAE;oBACX,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,kBAAkB,CAAC;4BAC9B,SAAS,EAAE,CAAC,QAAQ,CAAC;yBACrB;qBACD;oBACD,OAAO,EAAE;wBACR;4BACC,WAAW,EAAE,eAAe;4BAC5B,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;4BACX,WAAW,EAAE,kBAAkB;4BAC/B,WAAW,EAAE,yCAAyC;yBACtD;qBACD;iBACD;aACD;SACD,CAAC;IA+JH,CAAC;IA7JA,KAAK,CAAC,OAAO;;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAI,WAAW,CAAC,OAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAW,CAAC;gBAChE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;gBAElE,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,MAAM,GAAwB,KAAK,CAAC;gBACxC,IAAI,IAAI,GAA4B,EAAE,CAAC;gBAEvC,oDAAoD;gBACpD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC3B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;wBAC1B,QAAQ,GAAG,cAAc,CAAC;wBAC1B,MAAM,GAAG,KAAK,CAAC;oBAChB,CAAC;gBACF,CAAC;gBAED,oDAAoD;gBACpD,IAAI,QAAQ,KAAK,mBAAmB,EAAE,CAAC;oBACtC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAW,CAAC;oBAE5E,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;wBAC9B,QAAQ,GAAG,4BAA4B,cAAc,QAAQ,CAAC;wBAC9D,MAAM,GAAG,KAAK,CAAC;oBAChB,CAAC;oBAED,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;wBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAW,CAAC;wBAC9D,QAAQ,GAAG,eAAe,cAAc,gBAAgB,CAAC;wBACzD,MAAM,GAAG,OAAO,CAAC;wBACjB,IAAI,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrC,CAAC;oBAED,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAC5B,QAAQ,GAAG,eAAe,cAAc,SAAS,CAAC;wBAClD,MAAM,GAAG,QAAQ,CAAC;oBACnB,CAAC;gBACF,CAAC;gBAED,oDAAoD;gBACpD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;oBACrC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAW,CAAC;oBAE5E,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAW,CAAC;wBAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAW,CAAC;wBACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE,CAEzE,CAAC;wBAEF,QAAQ,GAAG,sBAAsB,cAAc,qBAAqB,CAAC;wBACrE,MAAM,GAAG,MAAM,CAAC;wBAChB,IAAI,GAAG;4BACN,OAAO;4BACP,WAAW;yBACX,CAAC;wBAEF,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC;4BACnC,IAAI,CAAC;gCACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;4BAC9D,CAAC;4BAAC,MAAM,CAAC;gCACR,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC;4BAClD,CAAC;wBACF,CAAC;oBACF,CAAC;oBAED,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;wBAC1B,QAAQ,GAAG,sBAAsB,cAAc,qBAAqB,CAAC;wBACrE,MAAM,GAAG,KAAK,CAAC;oBAChB,CAAC;oBAED,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;wBAClE,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,CAG/D,CAAC;wBAEF,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC5C,MAAM,IAAI,iCAAkB,CAC3B,IAAI,CAAC,OAAO,EAAE,EACd,8CAA8C,EAC9C,EAAE,SAAS,EAAE,CAAC,EAAE,CAChB,CAAC;wBACH,CAAC;wBAED,QAAQ,GAAG,sBAAsB,cAAc,uBAAuB,SAAS,EAAE,CAAC;wBAClF,MAAM,GAAG,OAAO,CAAC;wBACjB,IAAI,GAAG,EAAE,CAAC;wBAEV,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;4BACxC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;wBACrC,CAAC;wBACD,IAAI,YAAY,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;4BAC5C,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;wBAC7C,CAAC;oBACF,CAAC;oBAED,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;wBAClE,QAAQ,GAAG,sBAAsB,cAAc,uBAAuB,SAAS,EAAE,CAAC;wBAClF,MAAM,GAAG,QAAQ,CAAC;oBACnB,CAAC;gBACF,CAAC;gBAED,oDAAoD;gBACpD,MAAM,cAAc,GAA4B;oBAC/C,MAAM;oBACN,GAAG,EAAE,GAAG,OAAO,GAAG,QAAQ,EAAE;oBAC5B,IAAI,EAAE,IAAI;iBACV,CAAC;gBAEF,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7E,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC5B,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CACrE,IAAI,EACJ,cAAc,EACd,cAAqB,CACrB,CAAC;gBAEF,kCAAkC;gBAClC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;wBAC7B,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBACjC,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1D,CAAC;YAEF,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,UAAU,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE;4BACL,KAAK,EAAE,KAAK,CAAC,OAAO;yBACpB;wBACD,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;qBACvB,CAAC,CAAC;oBACH,SAAS;gBACV,CAAC;gBACD,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;oBACnD,SAAS,EAAE,CAAC;oBACZ,WAAW,EAAE,MAAA,KAAK,CAAC,WAAW,mCAAI,sCAAsC,KAAK,CAAC,OAAO,EAAE;iBACvF,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC;CACD;AA7dD,8BA6dC"}
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
2
+ <rect width="64" height="64" rx="12" fill="#6C5CE7"/>
3
+ <rect x="10" y="14" width="12" height="36" rx="3" fill="white" opacity="0.9"/>
4
+ <rect x="26" y="14" width="12" height="26" rx="3" fill="white" opacity="0.7"/>
5
+ <rect x="42" y="14" width="12" height="18" rx="3" fill="white" opacity="0.5"/>
6
+ <rect x="12" y="17" width="8" height="2" rx="1" fill="#6C5CE7"/>
7
+ <rect x="12" y="22" width="8" height="6" rx="1" fill="#A29BFE" opacity="0.5"/>
8
+ <rect x="12" y="30" width="8" height="6" rx="1" fill="#A29BFE" opacity="0.5"/>
9
+ <rect x="12" y="38" width="8" height="6" rx="1" fill="#A29BFE" opacity="0.5"/>
10
+ <rect x="28" y="17" width="8" height="2" rx="1" fill="#6C5CE7"/>
11
+ <rect x="28" y="22" width="8" height="6" rx="1" fill="#A29BFE" opacity="0.5"/>
12
+ <rect x="28" y="30" width="8" height="6" rx="1" fill="#A29BFE" opacity="0.5"/>
13
+ <rect x="44" y="17" width="8" height="2" rx="1" fill="#6C5CE7"/>
14
+ <rect x="44" y="22" width="8" height="6" rx="1" fill="#A29BFE" opacity="0.5"/>
15
+ </svg>
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "n8n-nodes-flowboard",
3
+ "version": "1.0.0",
4
+ "description": "n8n community node for Kanban board management integrated with Chatwoot",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "kanban",
8
+ "chatwoot",
9
+ "crm",
10
+ "flowboard"
11
+ ],
12
+ "license": "MIT",
13
+ "author": {
14
+ "name": "FlowBoard"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": ""
19
+ },
20
+ "main": "index.js",
21
+ "scripts": {
22
+ "build": "tsc && gulp build:icons",
23
+ "dev": "tsc --watch",
24
+ "prepublishOnly": "npm run build",
25
+ "lint": "tslint -p tsconfig.json -c tslint.json",
26
+ "lintfix": "tslint --fix -p tsconfig.json -c tslint.json"
27
+ },
28
+ "files": [
29
+ "dist"
30
+ ],
31
+ "n8n": {
32
+ "n8nNodesApiVersion": 1,
33
+ "credentials": [
34
+ "dist/credentials/FlowBoardApi.credentials.js"
35
+ ],
36
+ "nodes": [
37
+ "dist/nodes/FlowBoard/FlowBoard.node.js"
38
+ ]
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^20.0.0",
42
+ "gulp": "^4.0.2",
43
+ "n8n-workflow": "*",
44
+ "typescript": "~5.3.0"
45
+ },
46
+ "peerDependencies": {
47
+ "n8n-workflow": "*"
48
+ }
49
+ }