n8n-nodes-makecrm 0.1.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,7 @@
1
+ import { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class MakeCrmApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ properties: INodeProperties[];
6
+ authenticate: IAuthenticateGeneric;
7
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MakeCrmApi = void 0;
4
+ class MakeCrmApi {
5
+ constructor() {
6
+ this.name = 'makeCrmApi';
7
+ this.displayName = 'MakeCRM API';
8
+ this.properties = [
9
+ {
10
+ displayName: 'Token',
11
+ name: 'token',
12
+ type: 'string',
13
+ typeOptions: {
14
+ password: true,
15
+ },
16
+ default: '',
17
+ required: true,
18
+ description: 'Token de autenticação enviado no header Authorization',
19
+ },
20
+ ];
21
+ this.authenticate = {
22
+ type: 'generic',
23
+ properties: {
24
+ headers: {
25
+ Authorization: '={{$credentials.token}}',
26
+ },
27
+ },
28
+ };
29
+ }
30
+ }
31
+ exports.MakeCrmApi = MakeCrmApi;
32
+ //# sourceMappingURL=MakeCrmApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MakeCrmApi.credentials.js","sourceRoot":"","sources":["../../src/credentials/MakeCrmApi.credentials.ts"],"names":[],"mappings":";;;AAMA,MAAa,UAAU;IAAvB;QACC,SAAI,GAAG,YAAY,CAAC;QACpB,gBAAW,GAAG,aAAa,CAAC;QAC5B,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,uDAAuD;aACpE;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,yBAAyB;iBACxC;aACD;SACD,CAAC;IACH,CAAC;CAAA;AAzBD,gCAyBC"}
@@ -0,0 +1,3 @@
1
+ import { INodeProperties } from 'n8n-workflow';
2
+ export declare const contactOperations: INodeProperties[];
3
+ export declare const contactFields: INodeProperties[];
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.contactFields = exports.contactOperations = void 0;
4
+ exports.contactOperations = [
5
+ {
6
+ displayName: 'Operation',
7
+ name: 'operation',
8
+ type: 'options',
9
+ noDataExpression: true,
10
+ displayOptions: {
11
+ show: {
12
+ resource: ['contact'],
13
+ },
14
+ },
15
+ options: [
16
+ {
17
+ name: 'Create',
18
+ value: 'create',
19
+ description: 'Criar um novo contato',
20
+ action: 'Create a contact',
21
+ },
22
+ {
23
+ name: 'Delete',
24
+ value: 'delete',
25
+ description: 'Excluir um contato',
26
+ action: 'Delete a contact',
27
+ },
28
+ {
29
+ name: 'Get',
30
+ value: 'get',
31
+ description: 'Buscar um contato pelo ID',
32
+ action: 'Get a contact',
33
+ },
34
+ {
35
+ name: 'Get Many',
36
+ value: 'getAll',
37
+ description: 'Listar múltiplos contatos',
38
+ action: 'Get many contacts',
39
+ },
40
+ {
41
+ name: 'Update',
42
+ value: 'update',
43
+ description: 'Atualizar um contato',
44
+ action: 'Update a contact',
45
+ },
46
+ ],
47
+ default: 'get',
48
+ },
49
+ ];
50
+ exports.contactFields = [
51
+ // ─── GET / DELETE / UPDATE ────────────────────────────────────────────────
52
+ {
53
+ displayName: 'Contact ID',
54
+ name: 'contactId',
55
+ type: 'string',
56
+ required: true,
57
+ displayOptions: {
58
+ show: {
59
+ resource: ['contact'],
60
+ operation: ['get', 'delete', 'update'],
61
+ },
62
+ },
63
+ default: '',
64
+ description: 'ID único do contato',
65
+ },
66
+ // ─── CREATE ───────────────────────────────────────────────────────────────
67
+ {
68
+ displayName: 'First Name',
69
+ name: 'firstName',
70
+ type: 'string',
71
+ required: true,
72
+ displayOptions: {
73
+ show: {
74
+ resource: ['contact'],
75
+ operation: ['create'],
76
+ },
77
+ },
78
+ default: '',
79
+ description: 'Primeiro nome do contato',
80
+ },
81
+ {
82
+ displayName: 'Last Name',
83
+ name: 'lastName',
84
+ type: 'string',
85
+ required: true,
86
+ displayOptions: {
87
+ show: {
88
+ resource: ['contact'],
89
+ operation: ['create'],
90
+ },
91
+ },
92
+ default: '',
93
+ description: 'Sobrenome do contato',
94
+ },
95
+ {
96
+ displayName: 'Email',
97
+ name: 'email',
98
+ type: 'string',
99
+ placeholder: 'nome@exemplo.com',
100
+ displayOptions: {
101
+ show: {
102
+ resource: ['contact'],
103
+ operation: ['create'],
104
+ },
105
+ },
106
+ default: '',
107
+ },
108
+ {
109
+ displayName: 'Phone',
110
+ name: 'phone',
111
+ type: 'string',
112
+ placeholder: '+55 11 99999-9999',
113
+ displayOptions: {
114
+ show: {
115
+ resource: ['contact'],
116
+ operation: ['create'],
117
+ },
118
+ },
119
+ default: '',
120
+ },
121
+ {
122
+ displayName: 'Additional Fields',
123
+ name: 'additionalFields',
124
+ type: 'collection',
125
+ placeholder: 'Add Field',
126
+ default: {},
127
+ displayOptions: {
128
+ show: {
129
+ resource: ['contact'],
130
+ operation: ['create'],
131
+ },
132
+ },
133
+ options: [
134
+ {
135
+ displayName: 'Company',
136
+ name: 'company',
137
+ type: 'string',
138
+ default: '',
139
+ description: 'Empresa do contato',
140
+ },
141
+ {
142
+ displayName: 'Notes',
143
+ name: 'notes',
144
+ type: 'string',
145
+ typeOptions: { rows: 4 },
146
+ default: '',
147
+ description: 'Observações sobre o contato',
148
+ },
149
+ {
150
+ displayName: 'Custom Fields',
151
+ name: 'customFields',
152
+ type: 'json',
153
+ default: '{}',
154
+ description: 'Campos personalizados em formato JSON',
155
+ },
156
+ ],
157
+ },
158
+ // ─── UPDATE ───────────────────────────────────────────────────────────────
159
+ {
160
+ displayName: 'Update Fields',
161
+ name: 'updateFields',
162
+ type: 'collection',
163
+ placeholder: 'Add Field',
164
+ default: {},
165
+ displayOptions: {
166
+ show: {
167
+ resource: ['contact'],
168
+ operation: ['update'],
169
+ },
170
+ },
171
+ options: [
172
+ {
173
+ displayName: 'First Name',
174
+ name: 'firstName',
175
+ type: 'string',
176
+ default: '',
177
+ },
178
+ {
179
+ displayName: 'Last Name',
180
+ name: 'lastName',
181
+ type: 'string',
182
+ default: '',
183
+ },
184
+ {
185
+ displayName: 'Email',
186
+ name: 'email',
187
+ type: 'string',
188
+ placeholder: 'nome@exemplo.com',
189
+ default: '',
190
+ },
191
+ {
192
+ displayName: 'Phone',
193
+ name: 'phone',
194
+ type: 'string',
195
+ default: '',
196
+ },
197
+ {
198
+ displayName: 'Company',
199
+ name: 'company',
200
+ type: 'string',
201
+ default: '',
202
+ },
203
+ {
204
+ displayName: 'Notes',
205
+ name: 'notes',
206
+ type: 'string',
207
+ typeOptions: { rows: 4 },
208
+ default: '',
209
+ },
210
+ {
211
+ displayName: 'Custom Fields',
212
+ name: 'customFields',
213
+ type: 'json',
214
+ default: '{}',
215
+ description: 'Campos personalizados em formato JSON',
216
+ },
217
+ ],
218
+ },
219
+ // ─── GET ALL ──────────────────────────────────────────────────────────────
220
+ {
221
+ displayName: 'Return All',
222
+ name: 'returnAll',
223
+ type: 'boolean',
224
+ displayOptions: {
225
+ show: {
226
+ resource: ['contact'],
227
+ operation: ['getAll'],
228
+ },
229
+ },
230
+ default: false,
231
+ description: 'Whether to return all results or only up to a given limit',
232
+ },
233
+ {
234
+ displayName: 'Limit',
235
+ name: 'limit',
236
+ type: 'number',
237
+ displayOptions: {
238
+ show: {
239
+ resource: ['contact'],
240
+ operation: ['getAll'],
241
+ returnAll: [false],
242
+ },
243
+ },
244
+ typeOptions: { minValue: 1 },
245
+ default: 50,
246
+ description: 'Max number of results to return',
247
+ },
248
+ {
249
+ displayName: 'Filters',
250
+ name: 'filters',
251
+ type: 'collection',
252
+ placeholder: 'Add Filter',
253
+ default: {},
254
+ displayOptions: {
255
+ show: {
256
+ resource: ['contact'],
257
+ operation: ['getAll'],
258
+ },
259
+ },
260
+ options: [
261
+ {
262
+ displayName: 'Email',
263
+ name: 'email',
264
+ type: 'string',
265
+ default: '',
266
+ description: 'Filtrar por e-mail',
267
+ },
268
+ {
269
+ displayName: 'Name',
270
+ name: 'name',
271
+ type: 'string',
272
+ default: '',
273
+ description: 'Filtrar por nome (busca parcial)',
274
+ },
275
+ {
276
+ displayName: 'Company',
277
+ name: 'company',
278
+ type: 'string',
279
+ default: '',
280
+ description: 'Filtrar por empresa',
281
+ },
282
+ ],
283
+ },
284
+ ];
285
+ //# sourceMappingURL=ContactDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactDescription.js","sourceRoot":"","sources":["../../../src/nodes/MakeCrm/ContactDescription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { INodeProperties } from 'n8n-workflow';
2
+ export declare const dealOperations: INodeProperties[];
3
+ export declare const dealFields: INodeProperties[];
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dealFields = exports.dealOperations = void 0;
4
+ exports.dealOperations = [
5
+ {
6
+ displayName: 'Operation',
7
+ name: 'operation',
8
+ type: 'options',
9
+ noDataExpression: true,
10
+ displayOptions: {
11
+ show: {
12
+ resource: ['deal'],
13
+ },
14
+ },
15
+ options: [
16
+ {
17
+ name: 'Create',
18
+ value: 'create',
19
+ description: 'Criar um novo negócio',
20
+ action: 'Create a deal',
21
+ },
22
+ {
23
+ name: 'Delete',
24
+ value: 'delete',
25
+ description: 'Excluir um negócio',
26
+ action: 'Delete a deal',
27
+ },
28
+ {
29
+ name: 'Get',
30
+ value: 'get',
31
+ description: 'Buscar um negócio pelo ID',
32
+ action: 'Get a deal',
33
+ },
34
+ {
35
+ name: 'Get Many',
36
+ value: 'getAll',
37
+ description: 'Listar múltiplos negócios',
38
+ action: 'Get many deals',
39
+ },
40
+ {
41
+ name: 'Update',
42
+ value: 'update',
43
+ description: 'Atualizar um negócio',
44
+ action: 'Update a deal',
45
+ },
46
+ ],
47
+ default: 'get',
48
+ },
49
+ ];
50
+ exports.dealFields = [
51
+ // ─── GET / DELETE / UPDATE ────────────────────────────────────────────────
52
+ {
53
+ displayName: 'Deal ID',
54
+ name: 'dealId',
55
+ type: 'string',
56
+ required: true,
57
+ displayOptions: {
58
+ show: {
59
+ resource: ['deal'],
60
+ operation: ['get', 'delete', 'update'],
61
+ },
62
+ },
63
+ default: '',
64
+ description: 'ID único do negócio',
65
+ },
66
+ // ─── CREATE ───────────────────────────────────────────────────────────────
67
+ {
68
+ displayName: 'Title',
69
+ name: 'title',
70
+ type: 'string',
71
+ required: true,
72
+ displayOptions: {
73
+ show: {
74
+ resource: ['deal'],
75
+ operation: ['create'],
76
+ },
77
+ },
78
+ default: '',
79
+ description: 'Título do negócio',
80
+ },
81
+ {
82
+ displayName: 'Contact ID',
83
+ name: 'contactId',
84
+ type: 'string',
85
+ required: true,
86
+ displayOptions: {
87
+ show: {
88
+ resource: ['deal'],
89
+ operation: ['create'],
90
+ },
91
+ },
92
+ default: '',
93
+ description: 'ID do contato associado ao negócio',
94
+ },
95
+ {
96
+ displayName: 'Stage',
97
+ name: 'stage',
98
+ type: 'options',
99
+ required: true,
100
+ displayOptions: {
101
+ show: {
102
+ resource: ['deal'],
103
+ operation: ['create'],
104
+ },
105
+ },
106
+ options: [
107
+ { name: 'Prospecting', value: 'prospecting' },
108
+ { name: 'Qualification', value: 'qualification' },
109
+ { name: 'Proposal', value: 'proposal' },
110
+ { name: 'Negotiation', value: 'negotiation' },
111
+ { name: 'Closed Won', value: 'closed_won' },
112
+ { name: 'Closed Lost', value: 'closed_lost' },
113
+ ],
114
+ default: 'prospecting',
115
+ description: 'Etapa atual do funil de vendas',
116
+ },
117
+ {
118
+ displayName: 'Additional Fields',
119
+ name: 'additionalFields',
120
+ type: 'collection',
121
+ placeholder: 'Add Field',
122
+ default: {},
123
+ displayOptions: {
124
+ show: {
125
+ resource: ['deal'],
126
+ operation: ['create'],
127
+ },
128
+ },
129
+ options: [
130
+ {
131
+ displayName: 'Value',
132
+ name: 'value',
133
+ type: 'number',
134
+ default: 0,
135
+ description: 'Valor do negócio',
136
+ },
137
+ {
138
+ displayName: 'Currency',
139
+ name: 'currency',
140
+ type: 'string',
141
+ default: 'BRL',
142
+ description: 'Moeda (ex: BRL, USD, EUR)',
143
+ },
144
+ {
145
+ displayName: 'Close Date',
146
+ name: 'closeDate',
147
+ type: 'dateTime',
148
+ default: '',
149
+ description: 'Data prevista de fechamento',
150
+ },
151
+ {
152
+ displayName: 'Notes',
153
+ name: 'notes',
154
+ type: 'string',
155
+ typeOptions: { rows: 4 },
156
+ default: '',
157
+ description: 'Observações sobre o negócio',
158
+ },
159
+ {
160
+ displayName: 'Custom Fields',
161
+ name: 'customFields',
162
+ type: 'json',
163
+ default: '{}',
164
+ description: 'Campos personalizados em formato JSON',
165
+ },
166
+ ],
167
+ },
168
+ // ─── UPDATE ───────────────────────────────────────────────────────────────
169
+ {
170
+ displayName: 'Update Fields',
171
+ name: 'updateFields',
172
+ type: 'collection',
173
+ placeholder: 'Add Field',
174
+ default: {},
175
+ displayOptions: {
176
+ show: {
177
+ resource: ['deal'],
178
+ operation: ['update'],
179
+ },
180
+ },
181
+ options: [
182
+ {
183
+ displayName: 'Title',
184
+ name: 'title',
185
+ type: 'string',
186
+ default: '',
187
+ },
188
+ {
189
+ displayName: 'Contact ID',
190
+ name: 'contactId',
191
+ type: 'string',
192
+ default: '',
193
+ },
194
+ {
195
+ displayName: 'Stage',
196
+ name: 'stage',
197
+ type: 'options',
198
+ options: [
199
+ { name: 'Prospecting', value: 'prospecting' },
200
+ { name: 'Qualification', value: 'qualification' },
201
+ { name: 'Proposal', value: 'proposal' },
202
+ { name: 'Negotiation', value: 'negotiation' },
203
+ { name: 'Closed Won', value: 'closed_won' },
204
+ { name: 'Closed Lost', value: 'closed_lost' },
205
+ ],
206
+ default: 'prospecting',
207
+ },
208
+ {
209
+ displayName: 'Value',
210
+ name: 'value',
211
+ type: 'number',
212
+ default: 0,
213
+ },
214
+ {
215
+ displayName: 'Currency',
216
+ name: 'currency',
217
+ type: 'string',
218
+ default: 'BRL',
219
+ },
220
+ {
221
+ displayName: 'Close Date',
222
+ name: 'closeDate',
223
+ type: 'dateTime',
224
+ default: '',
225
+ },
226
+ {
227
+ displayName: 'Notes',
228
+ name: 'notes',
229
+ type: 'string',
230
+ typeOptions: { rows: 4 },
231
+ default: '',
232
+ },
233
+ {
234
+ displayName: 'Custom Fields',
235
+ name: 'customFields',
236
+ type: 'json',
237
+ default: '{}',
238
+ description: 'Campos personalizados em formato JSON',
239
+ },
240
+ ],
241
+ },
242
+ // ─── GET ALL ──────────────────────────────────────────────────────────────
243
+ {
244
+ displayName: 'Return All',
245
+ name: 'returnAll',
246
+ type: 'boolean',
247
+ displayOptions: {
248
+ show: {
249
+ resource: ['deal'],
250
+ operation: ['getAll'],
251
+ },
252
+ },
253
+ default: false,
254
+ description: 'Whether to return all results or only up to a given limit',
255
+ },
256
+ {
257
+ displayName: 'Limit',
258
+ name: 'limit',
259
+ type: 'number',
260
+ displayOptions: {
261
+ show: {
262
+ resource: ['deal'],
263
+ operation: ['getAll'],
264
+ returnAll: [false],
265
+ },
266
+ },
267
+ typeOptions: { minValue: 1 },
268
+ default: 50,
269
+ description: 'Max number of results to return',
270
+ },
271
+ {
272
+ displayName: 'Filters',
273
+ name: 'filters',
274
+ type: 'collection',
275
+ placeholder: 'Add Filter',
276
+ default: {},
277
+ displayOptions: {
278
+ show: {
279
+ resource: ['deal'],
280
+ operation: ['getAll'],
281
+ },
282
+ },
283
+ options: [
284
+ {
285
+ displayName: 'Contact ID',
286
+ name: 'contactId',
287
+ type: 'string',
288
+ default: '',
289
+ description: 'Filtrar por ID do contato',
290
+ },
291
+ {
292
+ displayName: 'Stage',
293
+ name: 'stage',
294
+ type: 'options',
295
+ options: [
296
+ { name: 'Prospecting', value: 'prospecting' },
297
+ { name: 'Qualification', value: 'qualification' },
298
+ { name: 'Proposal', value: 'proposal' },
299
+ { name: 'Negotiation', value: 'negotiation' },
300
+ { name: 'Closed Won', value: 'closed_won' },
301
+ { name: 'Closed Lost', value: 'closed_lost' },
302
+ ],
303
+ default: 'prospecting',
304
+ description: 'Filtrar por etapa do funil',
305
+ },
306
+ {
307
+ displayName: 'Title',
308
+ name: 'title',
309
+ type: 'string',
310
+ default: '',
311
+ description: 'Filtrar por título (busca parcial)',
312
+ },
313
+ ],
314
+ },
315
+ ];
316
+ //# sourceMappingURL=DealDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DealDescription.js","sourceRoot":"","sources":["../../../src/nodes/MakeCrm/DealDescription.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAsB;IAChD;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;aAClB;SACD;QACD,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,uBAAuB;gBACpC,MAAM,EAAE,eAAe;aACvB;YACD;gBACC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,oBAAoB;gBACjC,MAAM,EAAE,eAAe;aACvB;YACD;gBACC,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,2BAA2B;gBACxC,MAAM,EAAE,YAAY;aACpB;YACD;gBACC,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,2BAA2B;gBACxC,MAAM,EAAE,gBAAgB;aACxB;YACD;gBACC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,sBAAsB;gBACnC,MAAM,EAAE,eAAe;aACvB;SACD;QACD,OAAO,EAAE,KAAK;KACd;CACD,CAAC;AAEW,QAAA,UAAU,GAAsB;IAC5C,6EAA6E;IAC7E;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;aACtC;SACD;QACD,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,qBAAqB;KAClC;IAED,6EAA6E;IAC7E;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,mBAAmB;KAChC;IACD;QACC,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,oCAAoC;KACjD;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,OAAO,EAAE;YACR,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;YAC7C,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;YACjD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;YAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC3C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;SAC7C;QACD,OAAO,EAAE,aAAa;QACtB,WAAW,EAAE,gCAAgC;KAC7C;IACD;QACC,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,EAAE;QACX,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,OAAO,EAAE;YACR;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,kBAAkB;aAC/B;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,2BAA2B;aACxC;YACD;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,6BAA6B;aAC1C;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;gBACxB,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,6BAA6B;aAC1C;YACD;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,uCAAuC;aACpD;SACD;KACD;IAED,6EAA6E;IAC7E;QACC,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,EAAE;QACX,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,OAAO,EAAE;YACR;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE;oBACR,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;oBAC7C,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;oBACjD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;oBACvC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;oBAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC3C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;iBAC7C;gBACD,OAAO,EAAE,aAAa;aACtB;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC;aACV;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;aACd;YACD;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;gBACxB,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,uCAAuC;aACpD;SACD;KACD;IAED,6EAA6E;IAC7E;QACC,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,2DAA2D;KACxE;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;gBACrB,SAAS,EAAE,CAAC,KAAK,CAAC;aAClB;SACD;QACD,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;QAC5B,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iCAAiC;KAC9C;IACD;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,EAAE;QACX,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,OAAO,EAAE;YACR;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,2BAA2B;aACxC;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE;oBACR,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;oBAC7C,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;oBACjD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;oBACvC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;oBAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC3C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;iBAC7C;gBACD,OAAO,EAAE,aAAa;gBACtB,WAAW,EAAE,4BAA4B;aACzC;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,oCAAoC;aACjD;SACD;KACD;CACD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class MakeCrm implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MakeCrm = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const WEBHOOK_URL = 'https://api.maso.app.br/webhook/8eb97601-b573-4cd6-8d4d-ec9a1ad61a01';
6
+ class MakeCrm {
7
+ constructor() {
8
+ this.description = {
9
+ displayName: 'MakeCRM',
10
+ name: 'makeCrm',
11
+ icon: 'file:makeCrm.svg',
12
+ group: ['transform'],
13
+ version: 1,
14
+ subtitle: 'Buscar oportunidade',
15
+ description: 'Busca uma oportunidade pelo ID na API do MakeCRM',
16
+ defaults: {
17
+ name: 'MakeCRM',
18
+ },
19
+ inputs: ['main'],
20
+ outputs: ['main'],
21
+ credentials: [
22
+ {
23
+ name: 'makeCrmApi',
24
+ required: true,
25
+ },
26
+ ],
27
+ properties: [
28
+ {
29
+ displayName: 'ID da Oportunidade',
30
+ name: 'opportunityId',
31
+ type: 'string',
32
+ required: true,
33
+ default: '',
34
+ placeholder: 'ex: 12345',
35
+ description: 'ID da oportunidade a ser buscada',
36
+ },
37
+ ],
38
+ };
39
+ }
40
+ async execute() {
41
+ const items = this.getInputData();
42
+ const returnData = [];
43
+ for (let i = 0; i < items.length; i++) {
44
+ const opportunityId = this.getNodeParameter('opportunityId', i);
45
+ try {
46
+ const response = await this.helpers.httpRequestWithAuthentication.call(this, 'makeCrmApi', {
47
+ method: 'GET',
48
+ url: WEBHOOK_URL,
49
+ qs: { id: opportunityId },
50
+ json: true,
51
+ });
52
+ returnData.push({
53
+ json: response,
54
+ pairedItem: { item: i },
55
+ });
56
+ }
57
+ catch (error) {
58
+ if (this.continueOnFail()) {
59
+ returnData.push({
60
+ json: { error: error.message },
61
+ pairedItem: { item: i },
62
+ });
63
+ continue;
64
+ }
65
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
66
+ }
67
+ }
68
+ return [returnData];
69
+ }
70
+ }
71
+ exports.MakeCrm = MakeCrm;
72
+ //# sourceMappingURL=MakeCrm.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MakeCrm.node.js","sourceRoot":"","sources":["../../../src/nodes/MakeCrm/MakeCrm.node.ts"],"names":[],"mappings":";;;AAAA,+CAQsB;AAEtB,MAAM,WAAW,GAAG,sEAAsE,CAAC;AAE3F,MAAa,OAAO;IAApB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,qBAAqB;YAC/B,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE;gBACT,IAAI,EAAE,SAAS;aACf;YACD,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,oBAAoB;oBACjC,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,WAAW;oBACxB,WAAW,EAAE,kCAAkC;iBAC/C;aACD;SACD,CAAC;IAwCH,CAAC;IAtCA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAW,CAAC;YAE1E,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CACrE,IAAI,EACJ,YAAY,EACZ;oBACC,MAAM,EAAE,KAAK;oBACb,GAAG,EAAE,WAAW;oBAChB,EAAE,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE;oBACzB,IAAI,EAAE,IAAI;iBACV,CACc,CAAC;gBAEjB,UAAU,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;iBACvB,CAAC,CAAC;YAEJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,UAAU,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE;wBACzC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;qBACvB,CAAC,CAAC;oBACH,SAAS;gBACV,CAAC;gBACD,MAAM,IAAI,2BAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAmB,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC;CACD;AAvED,0BAuEC"}
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">
2
+ <rect width="60" height="60" rx="12" fill="#2D6EFF"/>
3
+ <text x="50%" y="54%" dominant-baseline="middle" text-anchor="middle"
4
+ font-family="Arial, sans-serif" font-weight="bold" font-size="28"
5
+ fill="#FFFFFF">M</text>
6
+ </svg>
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "n8n-nodes-makecrm",
3
+ "version": "0.1.0",
4
+ "description": "Custom n8n nodes for MakeCRM",
5
+ "keywords": [
6
+ "n8n-community-node-package"
7
+ ],
8
+ "license": "MIT",
9
+ "author": {
10
+ "name": "Allyson Assunção"
11
+ },
12
+ "main": "index.js",
13
+ "scripts": {
14
+ "build": "tsc && npm run copy:icons",
15
+ "copy:icons": "mkdir -p dist/nodes/MakeCrm && cp src/nodes/MakeCrm/makeCrm.svg dist/nodes/MakeCrm/ 2>/dev/null || true",
16
+ "dev": "tsc --watch",
17
+ "prepublishOnly": "npm run build"
18
+ },
19
+ "n8n": {
20
+ "n8nNodesApiVersion": 1,
21
+ "credentials": [
22
+ "dist/credentials/MakeCrmApi.credentials.js"
23
+ ],
24
+ "nodes": [
25
+ "dist/nodes/MakeCrm/MakeCrm.node.js"
26
+ ]
27
+ },
28
+ "devDependencies": {
29
+ "@types/node": "^18.16.16",
30
+ "n8n-workflow": "*",
31
+ "typescript": "^5.1.3"
32
+ },
33
+ "peerDependencies": {
34
+ "n8n-workflow": "*"
35
+ }
36
+ }
@@ -0,0 +1,32 @@
1
+ import {
2
+ IAuthenticateGeneric,
3
+ ICredentialType,
4
+ INodeProperties,
5
+ } from 'n8n-workflow';
6
+
7
+ export class MakeCrmApi implements ICredentialType {
8
+ name = 'makeCrmApi';
9
+ displayName = 'MakeCRM API';
10
+ properties: INodeProperties[] = [
11
+ {
12
+ displayName: 'Token',
13
+ name: 'token',
14
+ type: 'string',
15
+ typeOptions: {
16
+ password: true,
17
+ },
18
+ default: '',
19
+ required: true,
20
+ description: 'Token de autenticação enviado no header Authorization',
21
+ },
22
+ ];
23
+
24
+ authenticate: IAuthenticateGeneric = {
25
+ type: 'generic',
26
+ properties: {
27
+ headers: {
28
+ Authorization: '={{$credentials.token}}',
29
+ },
30
+ },
31
+ };
32
+ }
@@ -0,0 +1,84 @@
1
+ import {
2
+ IDataObject,
3
+ IExecuteFunctions,
4
+ INodeExecutionData,
5
+ INodeType,
6
+ INodeTypeDescription,
7
+ JsonObject,
8
+ NodeApiError,
9
+ } from 'n8n-workflow';
10
+
11
+ const WEBHOOK_URL = 'https://api.maso.app.br/webhook/8eb97601-b573-4cd6-8d4d-ec9a1ad61a01';
12
+
13
+ export class MakeCrm implements INodeType {
14
+ description: INodeTypeDescription = {
15
+ displayName: 'MakeCRM',
16
+ name: 'makeCrm',
17
+ icon: 'file:makeCrm.svg',
18
+ group: ['transform'],
19
+ version: 1,
20
+ subtitle: 'Buscar oportunidade',
21
+ description: 'Busca uma oportunidade pelo ID na API do MakeCRM',
22
+ defaults: {
23
+ name: 'MakeCRM',
24
+ },
25
+ inputs: ['main'],
26
+ outputs: ['main'],
27
+ credentials: [
28
+ {
29
+ name: 'makeCrmApi',
30
+ required: true,
31
+ },
32
+ ],
33
+ properties: [
34
+ {
35
+ displayName: 'ID da Oportunidade',
36
+ name: 'opportunityId',
37
+ type: 'string',
38
+ required: true,
39
+ default: '',
40
+ placeholder: 'ex: 12345',
41
+ description: 'ID da oportunidade a ser buscada',
42
+ },
43
+ ],
44
+ };
45
+
46
+ async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
47
+ const items = this.getInputData();
48
+ const returnData: INodeExecutionData[] = [];
49
+
50
+ for (let i = 0; i < items.length; i++) {
51
+ const opportunityId = this.getNodeParameter('opportunityId', i) as string;
52
+
53
+ try {
54
+ const response = await this.helpers.httpRequestWithAuthentication.call(
55
+ this,
56
+ 'makeCrmApi',
57
+ {
58
+ method: 'GET',
59
+ url: WEBHOOK_URL,
60
+ qs: { id: opportunityId },
61
+ json: true,
62
+ },
63
+ ) as IDataObject;
64
+
65
+ returnData.push({
66
+ json: response,
67
+ pairedItem: { item: i },
68
+ });
69
+
70
+ } catch (error) {
71
+ if (this.continueOnFail()) {
72
+ returnData.push({
73
+ json: { error: (error as Error).message },
74
+ pairedItem: { item: i },
75
+ });
76
+ continue;
77
+ }
78
+ throw new NodeApiError(this.getNode(), error as JsonObject);
79
+ }
80
+ }
81
+
82
+ return [returnData];
83
+ }
84
+ }
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">
2
+ <rect width="60" height="60" rx="12" fill="#2D6EFF"/>
3
+ <text x="50%" y="54%" dominant-baseline="middle" text-anchor="middle"
4
+ font-family="Arial, sans-serif" font-weight="bold" font-size="28"
5
+ fill="#FFFFFF">M</text>
6
+ </svg>
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "module": "commonjs",
5
+ "target": "ES2019",
6
+ "lib": ["ES2019"],
7
+ "declaration": true,
8
+ "sourceMap": true,
9
+ "rootDir": "src",
10
+ "outDir": "dist",
11
+ "skipLibCheck": true,
12
+ "esModuleInterop": true,
13
+ "resolveJsonModule": true
14
+ },
15
+ "include": ["src/**/*"],
16
+ "exclude": ["node_modules", "dist"]
17
+ }