n8n-nodes-pragma-bitrix24 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.
Files changed (51) hide show
  1. package/LICENSE +51 -0
  2. package/README.md +340 -0
  3. package/dist/credentials/Bitrix24Api.credentials.js +55 -0
  4. package/dist/nodes/Bitrix24/Bitrix24.node.js +1410 -0
  5. package/dist/nodes/Bitrix24/Company.js +17 -0
  6. package/dist/nodes/Bitrix24/Contact.js +31 -0
  7. package/dist/nodes/Bitrix24/Deal.js +17 -0
  8. package/dist/nodes/Bitrix24/Helpers.js +300 -0
  9. package/dist/nodes/Bitrix24/Lead.js +17 -0
  10. package/dist/nodes/Bitrix24/SmartProcess.js +1 -0
  11. package/dist/nodes/Bitrix24/bitrix24.svg +7 -0
  12. package/dist/nodes/Bitrix24/types.js +58 -0
  13. package/dist/nodes/Bitrix24AI/Bitrix24AI.node.js +205 -0
  14. package/dist/nodes/Bitrix24App/Bitrix24App.node.js +179 -0
  15. package/dist/nodes/Bitrix24Auxiliary/Bitrix24Auxiliary.node.js +566 -0
  16. package/dist/nodes/Bitrix24Booking/Bitrix24Booking.node.js +871 -0
  17. package/dist/nodes/Bitrix24Calendar/Bitrix24Calendar.node.js +471 -0
  18. package/dist/nodes/Bitrix24ChatBot/Bitrix24ChatBot.node.js +522 -0
  19. package/dist/nodes/Bitrix24Commerce/Bitrix24Commerce.node.js +431 -0
  20. package/dist/nodes/Bitrix24Department/Bitrix24Department.node.js +317 -0
  21. package/dist/nodes/Bitrix24Disk/Bitrix24Disk.node.js +334 -0
  22. package/dist/nodes/Bitrix24Document/Bitrix24Document.node.js +280 -0
  23. package/dist/nodes/Bitrix24Entity/Bitrix24Entity.node.js +263 -0
  24. package/dist/nodes/Bitrix24Group/Bitrix24Group.node.js +327 -0
  25. package/dist/nodes/Bitrix24Lists/Bitrix24Lists.node.js +406 -0
  26. package/dist/nodes/Bitrix24Log/Bitrix24Log.node.js +309 -0
  27. package/dist/nodes/Bitrix24Mail/Bitrix24Mail.node.js +109 -0
  28. package/dist/nodes/Bitrix24MessageService/Bitrix24MessageService.node.js +218 -0
  29. package/dist/nodes/Bitrix24OpenChannels/Bitrix24OpenChannels.node.js +379 -0
  30. package/dist/nodes/Bitrix24PaySystem/Bitrix24PaySystem.node.js +241 -0
  31. package/dist/nodes/Bitrix24Pipeline/Bitrix24Pipeline.node.js +553 -0
  32. package/dist/nodes/Bitrix24Pipeline/bitrix24.svg +7 -0
  33. package/dist/nodes/Bitrix24Sale/Bitrix24Sale.node.js +391 -0
  34. package/dist/nodes/Bitrix24Scrum/Bitrix24Scrum.node.js +555 -0
  35. package/dist/nodes/Bitrix24Scrum/bitrix24.svg +7 -0
  36. package/dist/nodes/Bitrix24Sign/Bitrix24Sign.node.js +132 -0
  37. package/dist/nodes/Bitrix24Social/Bitrix24Social.node.js +224 -0
  38. package/dist/nodes/Bitrix24Task/Bitrix24Task.node.js +444 -0
  39. package/dist/nodes/Bitrix24Telephony/Bitrix24Telephony.node.js +511 -0
  40. package/dist/nodes/Bitrix24Timeman/Bitrix24Timeman.node.js +196 -0
  41. package/dist/nodes/Bitrix24Tool/Bitrix24Tool.node.js +1035 -0
  42. package/dist/nodes/Bitrix24Tool/bitrix24.svg +7 -0
  43. package/dist/nodes/Bitrix24Trigger/Bitrix24Trigger.node.js +184 -0
  44. package/dist/nodes/Bitrix24User/Bitrix24User.node.js +351 -0
  45. package/dist/nodes/Bitrix24UserField/Bitrix24UserField.node.js +386 -0
  46. package/dist/nodes/Bitrix24UserField/bitrix24.svg +7 -0
  47. package/dist/nodes/shared/bitrix24.svg +7 -0
  48. package/dist/nodes/shared/localization.js +189 -0
  49. package/dist/nodes/shared/types.js +22 -0
  50. package/index.js +10 -0
  51. package/package.json +108 -0
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ /**
3
+ * Bitrix24 Group — Нода управления рабочими группами
4
+ *
5
+ * Bitrix24 PRAGMA.by nodes for n8n
6
+ * Профессиональная интеграция с Битрикс24.
7
+ *
8
+ * @author PRAGMA & Азбука Решений
9
+ * @copyright 2026 PRAGMA (https://pragma.by/) & Азбука Решений (https://abc-solution.ru/)
10
+ *
11
+ * Контакты:
12
+ * 🇧🇾 PRAGMA: +375 (44) 702-70-90 | https://pragma.by/
13
+ * 🇷🇺 Азбука Решений: +7 (939) 555-19-60 | https://abc-solution.ru/
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.Bitrix24Group = void 0;
17
+ const Helpers_1 = require("../Bitrix24/Helpers");
18
+ class Bitrix24Group {
19
+ constructor() {
20
+ this.description = {
21
+ displayName: 'Bitrix24 Группы',
22
+ name: 'bitrix24Group',
23
+ icon: 'file:bitrix24.svg',
24
+ group: ['transform'],
25
+ version: 1,
26
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
27
+ description: 'Управление рабочими группами, проектами и участниками',
28
+ defaults: {
29
+ name: 'Bitrix24 Группы',
30
+ },
31
+ inputs: ['main'],
32
+ outputs: ['main'],
33
+ credentials: [
34
+ {
35
+ name: 'bitrix24Api',
36
+ required: true,
37
+ },
38
+ ],
39
+ properties: [
40
+ {
41
+ displayName: 'Resource',
42
+ name: 'resource',
43
+ type: 'options',
44
+ noDataExpression: true,
45
+ options: [
46
+ {
47
+ name: 'Workgroup/Project',
48
+ value: 'group',
49
+ description: 'Manage Social Network Groups and Projects',
50
+ },
51
+ {
52
+ name: 'Member',
53
+ value: 'member',
54
+ description: 'Manage Group Members',
55
+ },
56
+ ],
57
+ default: 'group',
58
+ required: true,
59
+ },
60
+ {
61
+ displayName: 'Operation',
62
+ name: 'operation',
63
+ type: 'options',
64
+ noDataExpression: true,
65
+ options: [
66
+ {
67
+ name: 'Create',
68
+ value: 'create',
69
+ action: 'Create a group',
70
+ displayOptions: { show: { resource: ['group'] } },
71
+ },
72
+ {
73
+ name: 'Get',
74
+ value: 'get',
75
+ action: 'Get a group',
76
+ displayOptions: { show: { resource: ['group'] } },
77
+ },
78
+ {
79
+ name: 'List',
80
+ value: 'list',
81
+ action: 'List groups',
82
+ displayOptions: { show: { resource: ['group'] } },
83
+ },
84
+ {
85
+ name: 'Update',
86
+ value: 'update',
87
+ action: 'Update a group',
88
+ displayOptions: { show: { resource: ['group'] } },
89
+ },
90
+ {
91
+ name: 'Delete',
92
+ value: 'delete',
93
+ action: 'Delete a group',
94
+ displayOptions: { show: { resource: ['group'] } },
95
+ },
96
+ {
97
+ name: 'Add',
98
+ value: 'add',
99
+ action: 'Add member',
100
+ displayOptions: { show: { resource: ['member'] } },
101
+ },
102
+ {
103
+ name: 'Remove',
104
+ value: 'remove',
105
+ action: 'Remove member',
106
+ displayOptions: { show: { resource: ['member'] } },
107
+ },
108
+ {
109
+ name: 'List',
110
+ value: 'list',
111
+ action: 'List members',
112
+ displayOptions: { show: { resource: ['member'] } },
113
+ },
114
+ ],
115
+ default: 'create',
116
+ required: true,
117
+ },
118
+ // Group Fields
119
+ {
120
+ displayName: 'Name',
121
+ name: 'name',
122
+ type: 'string',
123
+ default: '',
124
+ required: true,
125
+ displayOptions: {
126
+ show: {
127
+ resource: ['group'],
128
+ operation: ['create'],
129
+ },
130
+ },
131
+ description: 'Name of the group or project',
132
+ },
133
+ {
134
+ displayName: 'Description',
135
+ name: 'description',
136
+ type: 'string',
137
+ default: '',
138
+ displayOptions: {
139
+ show: {
140
+ resource: ['group'],
141
+ operation: ['create', 'update'],
142
+ },
143
+ },
144
+ },
145
+ {
146
+ displayName: 'Is Project',
147
+ name: 'isProject',
148
+ type: 'boolean',
149
+ default: false,
150
+ displayOptions: {
151
+ show: {
152
+ resource: ['group'],
153
+ operation: ['create'],
154
+ },
155
+ },
156
+ description: 'Whether this is a Project (with dates)',
157
+ },
158
+ {
159
+ displayName: 'Start Date',
160
+ name: 'dateStart',
161
+ type: 'dateTime',
162
+ default: '',
163
+ displayOptions: {
164
+ show: {
165
+ resource: ['group'],
166
+ operation: ['create'],
167
+ isProject: [true],
168
+ },
169
+ },
170
+ },
171
+ {
172
+ displayName: 'End Date',
173
+ name: 'dateFinish',
174
+ type: 'dateTime',
175
+ default: '',
176
+ displayOptions: {
177
+ show: {
178
+ resource: ['group'],
179
+ operation: ['create'],
180
+ isProject: [true],
181
+ },
182
+ },
183
+ },
184
+ {
185
+ displayName: 'Group ID',
186
+ name: 'groupId',
187
+ type: 'string',
188
+ default: '',
189
+ required: true,
190
+ displayOptions: {
191
+ show: {
192
+ resource: ['group', 'member'],
193
+ operation: ['get', 'update', 'delete', 'add', 'remove', 'list'],
194
+ },
195
+ },
196
+ },
197
+ // Member Fields
198
+ {
199
+ displayName: 'User ID',
200
+ name: 'userId',
201
+ type: 'string',
202
+ default: '',
203
+ required: true,
204
+ displayOptions: {
205
+ show: {
206
+ resource: ['member'],
207
+ operation: ['add', 'remove'],
208
+ },
209
+ },
210
+ description: 'User ID to add/remove',
211
+ },
212
+ {
213
+ displayName: 'Role',
214
+ name: 'role',
215
+ type: 'options',
216
+ options: [
217
+ { name: 'Member', value: 'E' },
218
+ { name: 'Moderator', value: 'K' },
219
+ { name: 'Owner', value: 'A' },
220
+ ],
221
+ default: 'E',
222
+ displayOptions: {
223
+ show: {
224
+ resource: ['member'],
225
+ operation: ['add'],
226
+ },
227
+ },
228
+ },
229
+ ],
230
+ };
231
+ }
232
+ async execute() {
233
+ const items = this.getInputData();
234
+ const returnData = [];
235
+ const resource = this.getNodeParameter('resource', 0);
236
+ const operation = this.getNodeParameter('operation', 0);
237
+ for (let i = 0; i < items.length; i++) {
238
+ try {
239
+ let method = '';
240
+ let params = {};
241
+ if (resource === 'group') {
242
+ if (operation === 'create') {
243
+ method = 'sonet_group.create.json';
244
+ const name = this.getNodeParameter('name', i);
245
+ params.NAME = name;
246
+ params.DESCRIPTION = this.getNodeParameter('description', i, '');
247
+ params.VISIBLE = 'Y';
248
+ params.OPENED = 'N';
249
+ const isProject = this.getNodeParameter('isProject', i, false);
250
+ if (isProject) {
251
+ params.PROJECT = 'Y';
252
+ const start = this.getNodeParameter('dateStart', i, '');
253
+ const finish = this.getNodeParameter('dateFinish', i, '');
254
+ if (start)
255
+ params.PROJECT_DATE_START = start;
256
+ if (finish)
257
+ params.PROJECT_DATE_FINISH = finish;
258
+ }
259
+ }
260
+ if (operation === 'update') {
261
+ method = 'sonet_group.update.json';
262
+ params.GROUP_ID = this.getNodeParameter('groupId', i);
263
+ // Add update fields support if needed, simpler for now
264
+ const desc = this.getNodeParameter('description', i, '');
265
+ if (desc)
266
+ params.DESCRIPTION = desc;
267
+ }
268
+ if (operation === 'get') {
269
+ method = 'sonet_group.get.json';
270
+ const id = this.getNodeParameter('groupId', i);
271
+ params = { FILTER: { ID: id } }; // sonet_group.get uses FILTER often or just direct ID?
272
+ // Actually sonet_group.get might not exist in some versions, sonet_group.list with filter is safer.
273
+ // bitrix docs say sonet_group.get takes 'params'.
274
+ // Let's use list with filter ID for Get.
275
+ method = 'sonet_group.get.json'; // Trying direct get if document says so. Docs say sonet_group.get returns LIST.
276
+ params = { 'ORDER': { 'NAME': 'ASC' }, 'FILTER': { 'ID': id } };
277
+ }
278
+ if (operation === 'list') {
279
+ method = 'sonet_group.get.json';
280
+ params = { 'ORDER': { 'NAME': 'ASC' } };
281
+ }
282
+ if (operation === 'delete') {
283
+ method = 'sonet_group.delete.json';
284
+ params.GROUP_ID = this.getNodeParameter('groupId', i);
285
+ }
286
+ }
287
+ if (resource === 'member') {
288
+ if (operation === 'add') {
289
+ method = 'sonet_group.user.add.json'; // Direct add (admin only)
290
+ params.GROUP_ID = this.getNodeParameter('groupId', i);
291
+ params.USER_ID = this.getNodeParameter('userId', i);
292
+ // Role logic requires separate call? sonet_group.user.add adds as member.
293
+ // To set moderator, sonet_group.user.update is needed.
294
+ }
295
+ if (operation === 'remove') {
296
+ method = 'sonet_group.user.delete.json';
297
+ params.GROUP_ID = this.getNodeParameter('groupId', i);
298
+ params.USER_ID = this.getNodeParameter('userId', i);
299
+ }
300
+ if (operation === 'list') {
301
+ method = 'sonet_group.user.get.json';
302
+ params.GROUP_ID = this.getNodeParameter('groupId', i);
303
+ }
304
+ }
305
+ const response = await Helpers_1.bitrixRequestWithRetry.call(this, 'POST', method, params);
306
+ let result = response.result;
307
+ // sonet_group.get returns list usually
308
+ if (operation === 'get' && Array.isArray(result)) {
309
+ result = result[0] || {};
310
+ }
311
+ returnData.push({
312
+ json: result,
313
+ pairedItem: { item: i },
314
+ });
315
+ }
316
+ catch (error) {
317
+ if (this.continueOnFail()) {
318
+ returnData.push({ json: { error: error.message }, pairedItem: { item: i } });
319
+ continue;
320
+ }
321
+ throw error;
322
+ }
323
+ }
324
+ return [returnData];
325
+ }
326
+ }
327
+ exports.Bitrix24Group = Bitrix24Group;