@docbrasil/api-systemmanager 1.1.76 → 1.1.78

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/api/admin/list.js CHANGED
@@ -128,6 +128,220 @@ class AdminLists {
128
128
  throw ex;
129
129
  }
130
130
  }
131
+
132
+ /**
133
+ * @author Myndware <augusto.pissarra@myndware.com>
134
+ * @description Filter organization lists by name
135
+ * @param {object} params Parameters
136
+ * @param {string} params.orgId Organization ID (required)
137
+ * @param {array} [params.names=[]] Array of list names to filter (empty = all)
138
+ * @param {string} session JWT session token
139
+ * @return {Promise<array>} Array of matching org lists sorted by name
140
+ * @public
141
+ * @async
142
+ * @example
143
+ *
144
+ * const API = require('@docbrasil/api-systemmanager');
145
+ * const api = new API();
146
+ * const params = { orgId: '5edd11c46b6ce9729c2c297c', names: ['Tags', 'Categorias'] };
147
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
148
+ * const lists = await api.admin.list.filterByName(params, session);
149
+ */
150
+ async filterByName(params = {}, session) {
151
+ const self = this;
152
+
153
+ try {
154
+ Joi.assert(params, Joi.object().required());
155
+ Joi.assert(params.orgId, Joi.string().required());
156
+ Joi.assert(session, Joi.string().required());
157
+
158
+ const { orgId, names = [] } = params;
159
+ const payload = { names };
160
+
161
+ const apiCall = self._client.post(
162
+ `/admin/organizations/${orgId}/orgtags/filter`,
163
+ payload,
164
+ self._setHeader(session)
165
+ );
166
+
167
+ return self._returnData(await apiCall);
168
+ } catch (ex) {
169
+ throw ex;
170
+ }
171
+ }
172
+
173
+ /**
174
+ * @author Myndware <augusto.pissarra@myndware.com>
175
+ * @description Create a new organization list
176
+ * @param {object} params Parameters
177
+ * @param {string} params.orgId Organization ID (required)
178
+ * @param {string} params.name List name (required)
179
+ * @param {array} [params.list=[]] Initial list items
180
+ * @param {string} session JWT session token
181
+ * @return {Promise<object>} Created list document
182
+ * @public
183
+ * @async
184
+ * @example
185
+ *
186
+ * const API = require('@docbrasil/api-systemmanager');
187
+ * const api = new API();
188
+ * const params = { orgId: '5edd11c46b6ce9729c2c297c', name: 'My List', list: [] };
189
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
190
+ * const list = await api.admin.list.create(params, session);
191
+ */
192
+ async create(params = {}, session) {
193
+ const self = this;
194
+
195
+ try {
196
+ Joi.assert(params, Joi.object().required());
197
+ Joi.assert(params.orgId, Joi.string().required());
198
+ Joi.assert(params.name, Joi.string().required());
199
+ Joi.assert(session, Joi.string().required());
200
+
201
+ const { orgId, name, list = [] } = params;
202
+ const payload = { orgId, name, list };
203
+
204
+ const apiCall = self._client.put(
205
+ `/admin/organizations/${orgId}/orgtags`,
206
+ payload,
207
+ self._setHeader(session)
208
+ );
209
+
210
+ return self._returnData(await apiCall);
211
+ } catch (ex) {
212
+ throw ex;
213
+ }
214
+ }
215
+
216
+ /**
217
+ * @author Myndware <augusto.pissarra@myndware.com>
218
+ * @description Update an organization list
219
+ * @param {object} params Parameters
220
+ * @param {string} params.orgId Organization ID (required)
221
+ * @param {string} params.id List ID (required)
222
+ * @param {object} params.data Fields to update (name, list, etc.)
223
+ * @param {string} session JWT session token
224
+ * @return {Promise<object>} Updated list document
225
+ * @public
226
+ * @async
227
+ * @example
228
+ *
229
+ * const API = require('@docbrasil/api-systemmanager');
230
+ * const api = new API();
231
+ * const params = { orgId: '5edd11c46b6ce9729c2c297c', id: '55e4a3bd6be6b45210833fae', data: { name: 'Renamed' } };
232
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
233
+ * const list = await api.admin.list.update(params, session);
234
+ */
235
+ async update(params = {}, session) {
236
+ const self = this;
237
+
238
+ try {
239
+ Joi.assert(params, Joi.object().required());
240
+ Joi.assert(params.orgId, Joi.string().required());
241
+ Joi.assert(params.id, Joi.string().required());
242
+ Joi.assert(params.data, Joi.object().required());
243
+ Joi.assert(session, Joi.string().required());
244
+
245
+ const { orgId, id, data } = params;
246
+
247
+ const apiCall = self._client.put(
248
+ `/admin/organizations/${orgId}/orgtags/${id}`,
249
+ data,
250
+ self._setHeader(session)
251
+ );
252
+
253
+ return self._returnData(await apiCall);
254
+ } catch (ex) {
255
+ throw ex;
256
+ }
257
+ }
258
+
259
+ /**
260
+ * @author Myndware <augusto.pissarra@myndware.com>
261
+ * @description Remove an organization list
262
+ * @param {object} params Parameters
263
+ * @param {string} params.orgId Organization ID (required)
264
+ * @param {string} params.id List ID to remove (required)
265
+ * @param {string} session JWT session token
266
+ * @return {Promise<object>} Removal confirmation
267
+ * @public
268
+ * @async
269
+ * @example
270
+ *
271
+ * const API = require('@docbrasil/api-systemmanager');
272
+ * const api = new API();
273
+ * const params = { orgId: '5edd11c46b6ce9729c2c297c', id: '55e4a3bd6be6b45210833fae' };
274
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
275
+ * await api.admin.list.remove(params, session);
276
+ */
277
+ async remove(params = {}, session) {
278
+ const self = this;
279
+
280
+ try {
281
+ Joi.assert(params, Joi.object().required());
282
+ Joi.assert(params.orgId, Joi.string().required());
283
+ Joi.assert(params.id, Joi.string().required());
284
+ Joi.assert(session, Joi.string().required());
285
+
286
+ const { orgId, id } = params;
287
+
288
+ const apiCall = self._client.delete(
289
+ `/admin/organizations/${orgId}/orgtags/${id}`,
290
+ self._setHeader(session)
291
+ );
292
+
293
+ return self._returnData(await apiCall);
294
+ } catch (ex) {
295
+ throw ex;
296
+ }
297
+ }
298
+
299
+ /**
300
+ * @author Myndware <augusto.pissarra@myndware.com>
301
+ * @description Update list items of an organization list
302
+ * @param {object} params Parameters
303
+ * @param {string} params.orgId Organization ID (required)
304
+ * @param {string} params.id List ID (required)
305
+ * @param {array} params.list Updated list items array (required)
306
+ * @param {string} session JWT session token
307
+ * @return {Promise<object>} Updated list document
308
+ * @public
309
+ * @async
310
+ * @example
311
+ *
312
+ * const API = require('@docbrasil/api-systemmanager');
313
+ * const api = new API();
314
+ * const params = {
315
+ * orgId: '5edd11c46b6ce9729c2c297c',
316
+ * id: '55e4a3bd6be6b45210833fae',
317
+ * list: [{ _id: '1', value: 'Item 1', filter: '', order: 0 }]
318
+ * };
319
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
320
+ * const list = await api.admin.list.updateListItems(params, session);
321
+ */
322
+ async updateListItems(params = {}, session) {
323
+ const self = this;
324
+
325
+ try {
326
+ Joi.assert(params, Joi.object().required());
327
+ Joi.assert(params.orgId, Joi.string().required());
328
+ Joi.assert(params.id, Joi.string().required());
329
+ Joi.assert(params.list, Joi.array().required());
330
+ Joi.assert(session, Joi.string().required());
331
+
332
+ const { orgId, id, list } = params;
333
+
334
+ const apiCall = self._client.put(
335
+ `/admin/organizations/${orgId}/orgtags/${id}`,
336
+ { list },
337
+ self._setHeader(session)
338
+ );
339
+
340
+ return self._returnData(await apiCall);
341
+ } catch (ex) {
342
+ throw ex;
343
+ }
344
+ }
131
345
  }
132
346
 
133
347
  export default AdminLists;
package/api/admin/user.js CHANGED
@@ -211,6 +211,83 @@ class AdminUser {
211
211
  }
212
212
  }
213
213
 
214
+ /**
215
+ * @author Myndware <augusto.pissarra@myndware.com>
216
+ * @description Create a new user
217
+ * @param {object} payload User data to create
218
+ * @param {string} payload.name Full name (required)
219
+ * @param {string} payload.username Username (required)
220
+ * @param {string} payload.email Email (required)
221
+ * @param {string} payload.orgId Primary organization ID (required)
222
+ * @param {array} [payload.orgIds] Organization IDs
223
+ * @param {array} [payload.role=[2]] Security roles
224
+ * @param {string} [payload.password] Initial password
225
+ * @param {string} session JWT session token
226
+ * @return {Promise<object>} Created user document
227
+ * @public
228
+ * @async
229
+ * @example
230
+ *
231
+ * const API = require('@docbrasil/api-systemmanager');
232
+ * const api = new API();
233
+ * const payload = {
234
+ * name: 'Maria Silva',
235
+ * username: 'maria.silva',
236
+ * email: 'maria@example.com',
237
+ * orgId: '5edd11c46b6ce9729c2c297c',
238
+ * role: [2]
239
+ * };
240
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
241
+ * await api.admin.user.create(payload, session);
242
+ */
243
+ async create(payload, session) {
244
+ const self = this;
245
+
246
+ try {
247
+ Joi.assert(payload, Joi.object().required(), 'User data to create');
248
+ Joi.assert(payload.name, Joi.string().required(), 'Full name');
249
+ Joi.assert(payload.username, Joi.string().required(), 'Username');
250
+ Joi.assert(payload.email, Joi.string().email().required(), 'Email');
251
+ Joi.assert(payload.orgId, Joi.string().required(), 'Primary organization ID');
252
+ Joi.assert(session, Joi.string().required(), 'Session token');
253
+
254
+ const apiCall = self.client.post('/admin/users', payload, self._setHeader(session));
255
+ return self._returnData(await apiCall);
256
+ } catch (ex) {
257
+ throw ex;
258
+ }
259
+ }
260
+
261
+ /**
262
+ * @author Myndware <augusto.pissarra@myndware.com>
263
+ * @description Remove a user
264
+ * @param {string} userId User ID to remove (required)
265
+ * @param {string} session JWT session token
266
+ * @return {Promise<object>} Removal confirmation
267
+ * @public
268
+ * @async
269
+ * @example
270
+ *
271
+ * const API = require('@docbrasil/api-systemmanager');
272
+ * const api = new API();
273
+ * const userId = '55e4a3bd6be6b45210833fae';
274
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
275
+ * await api.admin.user.remove(userId, session);
276
+ */
277
+ async remove(userId, session) {
278
+ const self = this;
279
+
280
+ try {
281
+ Joi.assert(userId, Joi.string().required(), 'User ID');
282
+ Joi.assert(session, Joi.string().required(), 'Session token');
283
+
284
+ const apiCall = self.client.delete(`/admin/users/${userId}`, self._setHeader(session));
285
+ return self._returnData(await apiCall);
286
+ } catch (ex) {
287
+ throw ex;
288
+ }
289
+ }
290
+
214
291
  /**
215
292
  * @description Request GUID to change the password
216
293
  * @param {string} email - User email
@@ -318,7 +395,7 @@ class AdminUser {
318
395
 
319
396
  const payloadToSend = {$project: project, sort};
320
397
 
321
- const apiCall = self._client
398
+ const apiCall = self.client
322
399
  .post(`/admin/users?page=${page}&perPage=${perPage}`, payloadToSend, self._setHeader(session));
323
400
 
324
401
  return self._returnData(await apiCall);
@@ -327,6 +404,291 @@ class AdminUser {
327
404
  throw ex;
328
405
  }
329
406
  }
407
+
408
+ /**
409
+ * @author Myndware <augusto.pissarra@myndware.com>
410
+ * @description Block a user (prevent login)
411
+ * @param {string} userId User ID to block (required)
412
+ * @param {string} session JWT session token
413
+ * @return {Promise<object>} Updated user
414
+ * @public
415
+ * @async
416
+ * @example
417
+ *
418
+ * const API = require('@docbrasil/api-systemmanager');
419
+ * const api = new API();
420
+ * const userId = '55e4a3bd6be6b45210833fae';
421
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
422
+ * await api.admin.user.block(userId, session);
423
+ */
424
+ async block(userId, session) {
425
+ const self = this;
426
+
427
+ try {
428
+ Joi.assert(userId, Joi.string().required(), 'User ID');
429
+ Joi.assert(session, Joi.string().required(), 'Session token');
430
+
431
+ const apiCall = self.client.put(`/admin/users/${userId}/block`, {}, self._setHeader(session));
432
+ return self._returnData(await apiCall);
433
+ } catch (ex) {
434
+ throw ex;
435
+ }
436
+ }
437
+
438
+ /**
439
+ * @author Myndware <augusto.pissarra@myndware.com>
440
+ * @description Unblock a user (allow login)
441
+ * @param {string} userId User ID to unblock (required)
442
+ * @param {string} session JWT session token
443
+ * @return {Promise<object>} Updated user
444
+ * @public
445
+ * @async
446
+ * @example
447
+ *
448
+ * const API = require('@docbrasil/api-systemmanager');
449
+ * const api = new API();
450
+ * const userId = '55e4a3bd6be6b45210833fae';
451
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
452
+ * await api.admin.user.unblock(userId, session);
453
+ */
454
+ async unblock(userId, session) {
455
+ const self = this;
456
+
457
+ try {
458
+ Joi.assert(userId, Joi.string().required(), 'User ID');
459
+ Joi.assert(session, Joi.string().required(), 'Session token');
460
+
461
+ const apiCall = self.client.put(`/admin/users/${userId}/unblock`, {}, self._setHeader(session));
462
+ return self._returnData(await apiCall);
463
+ } catch (ex) {
464
+ throw ex;
465
+ }
466
+ }
467
+
468
+ /**
469
+ * @author Myndware <augusto.pissarra@myndware.com>
470
+ * @description Block email notifications for a user
471
+ * @param {string} userId User ID (required)
472
+ * @param {string} session JWT session token
473
+ * @return {Promise<object>} Updated user
474
+ * @public
475
+ * @async
476
+ */
477
+ async blockEmail(userId, session) {
478
+ const self = this;
479
+
480
+ try {
481
+ Joi.assert(userId, Joi.string().required(), 'User ID');
482
+ Joi.assert(session, Joi.string().required(), 'Session token');
483
+
484
+ const apiCall = self.client.put(`/admin/users/${userId}/blockemail`, {}, self._setHeader(session));
485
+ return self._returnData(await apiCall);
486
+ } catch (ex) {
487
+ throw ex;
488
+ }
489
+ }
490
+
491
+ /**
492
+ * @author Myndware <augusto.pissarra@myndware.com>
493
+ * @description Unblock email notifications for a user
494
+ * @param {string} userId User ID (required)
495
+ * @param {string} session JWT session token
496
+ * @return {Promise<object>} Updated user
497
+ * @public
498
+ * @async
499
+ */
500
+ async unblockEmail(userId, session) {
501
+ const self = this;
502
+
503
+ try {
504
+ Joi.assert(userId, Joi.string().required(), 'User ID');
505
+ Joi.assert(session, Joi.string().required(), 'Session token');
506
+
507
+ const apiCall = self.client.put(`/admin/users/${userId}/unblockemail`, {}, self._setHeader(session));
508
+ return self._returnData(await apiCall);
509
+ } catch (ex) {
510
+ throw ex;
511
+ }
512
+ }
513
+
514
+ /**
515
+ * @author Myndware <augusto.pissarra@myndware.com>
516
+ * @description Update user type classification
517
+ * @param {object} params Parameters
518
+ * @param {string} params.userId User ID (required)
519
+ * @param {string} params.userType New user type (required)
520
+ * @param {string} session JWT session token
521
+ * @return {Promise<object>} Updated user
522
+ * @public
523
+ * @async
524
+ * @example
525
+ *
526
+ * const API = require('@docbrasil/api-systemmanager');
527
+ * const api = new API();
528
+ * const params = { userId: '55e4a3bd6be6b45210833fae', userType: 'USER' };
529
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
530
+ * await api.admin.user.updateUserType(params, session);
531
+ */
532
+ async updateUserType(params, session) {
533
+ const self = this;
534
+
535
+ try {
536
+ Joi.assert(params, Joi.object().required(), 'Parameters');
537
+ Joi.assert(params.userId, Joi.string().required(), 'User ID');
538
+ Joi.assert(params.userType, Joi.string().required(), 'User type');
539
+ Joi.assert(session, Joi.string().required(), 'Session token');
540
+
541
+ const { userId, userType } = params;
542
+ const apiCall = self.client.put(`/admin/users/${userId}/type/${userType}`, {}, self._setHeader(session));
543
+ return self._returnData(await apiCall);
544
+ } catch (ex) {
545
+ throw ex;
546
+ }
547
+ }
548
+
549
+ /**
550
+ * @author Myndware <augusto.pissarra@myndware.com>
551
+ * @description Get organization groups with their permissions
552
+ * @param {string} orgId Organization ID (required)
553
+ * @param {string} session JWT session token
554
+ * @return {Promise<array>} Array of groups with permissions
555
+ * @public
556
+ * @async
557
+ * @example
558
+ *
559
+ * const API = require('@docbrasil/api-systemmanager');
560
+ * const api = new API();
561
+ * const orgId = '5edd11c46b6ce9729c2c297c';
562
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
563
+ * const groups = await api.admin.user.getGroupsPermissions(orgId, session);
564
+ */
565
+ async getGroupsPermissions(orgId, session) {
566
+ const self = this;
567
+
568
+ try {
569
+ Joi.assert(orgId, Joi.string().required(), 'Organization ID');
570
+ Joi.assert(session, Joi.string().required(), 'Session token');
571
+
572
+ const apiCall = self.client.get(
573
+ `/admin/organizations/${orgId}/orgchart/groups/permissions`,
574
+ self._setHeader(session)
575
+ );
576
+ return self._returnData(await apiCall);
577
+ } catch (ex) {
578
+ throw ex;
579
+ }
580
+ }
581
+
582
+ /**
583
+ * @author Myndware <augusto.pissarra@myndware.com>
584
+ * @description Update user's group memberships in an organization
585
+ * @param {object} params Parameters
586
+ * @param {string} params.orgId Organization ID (required)
587
+ * @param {string} params.userId User ID (required)
588
+ * @param {array} params.groups Array of group IDs (required)
589
+ * @param {string} session JWT session token
590
+ * @return {Promise<object>} Updated groups
591
+ * @public
592
+ * @async
593
+ * @example
594
+ *
595
+ * const API = require('@docbrasil/api-systemmanager');
596
+ * const api = new API();
597
+ * const params = {
598
+ * orgId: '5edd11c46b6ce9729c2c297c',
599
+ * userId: '55e4a3bd6be6b45210833fae',
600
+ * groups: ['groupId1', 'groupId2']
601
+ * };
602
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
603
+ * await api.admin.user.updateUserGroups(params, session);
604
+ */
605
+ async updateUserGroups(params, session) {
606
+ const self = this;
607
+
608
+ try {
609
+ Joi.assert(params, Joi.object().required(), 'Parameters');
610
+ Joi.assert(params.orgId, Joi.string().required(), 'Organization ID');
611
+ Joi.assert(params.userId, Joi.string().required(), 'User ID');
612
+ Joi.assert(params.groups, Joi.array().required(), 'Group IDs');
613
+ Joi.assert(session, Joi.string().required(), 'Session token');
614
+
615
+ const { orgId, userId, groups } = params;
616
+ const apiCall = self.client.put(
617
+ `/admin/organizations/${orgId}/orgchart/groups/${userId}`,
618
+ { groups },
619
+ self._setHeader(session)
620
+ );
621
+ return self._returnData(await apiCall);
622
+ } catch (ex) {
623
+ throw ex;
624
+ }
625
+ }
626
+
627
+ /**
628
+ * @author Myndware <augusto.pissarra@myndware.com>
629
+ * @description Get organizations the admin user can manage
630
+ * @param {string} session JWT session token
631
+ * @return {Promise<array>} Array of organizations
632
+ * @public
633
+ * @async
634
+ * @example
635
+ *
636
+ * const API = require('@docbrasil/api-systemmanager');
637
+ * const api = new API();
638
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
639
+ * const orgs = await api.admin.user.getOrganizations(session);
640
+ */
641
+ async getOrganizations(session) {
642
+ const self = this;
643
+
644
+ try {
645
+ Joi.assert(session, Joi.string().required(), 'Session token');
646
+
647
+ const apiCall = self.client.get('/admin/users/organizations', self._setHeader(session));
648
+ return self._returnData(await apiCall);
649
+ } catch (ex) {
650
+ throw ex;
651
+ }
652
+ }
653
+
654
+ /**
655
+ * @author Myndware <augusto.pissarra@myndware.com>
656
+ * @description Get users belonging to an organization
657
+ * @param {object} params Parameters
658
+ * @param {string} params.orgId Organization ID (required)
659
+ * @param {array} [params.userIds] Optional array of user IDs to filter
660
+ * @param {string} session JWT session token
661
+ * @return {Promise<array>} Array of users with id, name, email, title
662
+ * @public
663
+ * @async
664
+ * @example
665
+ *
666
+ * const API = require('@docbrasil/api-systemmanager');
667
+ * const api = new API();
668
+ * const params = { orgId: '5edd11c46b6ce9729c2c297c' };
669
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
670
+ * const users = await api.admin.user.getOrgUsers(params, session);
671
+ */
672
+ async getOrgUsers(params, session) {
673
+ const self = this;
674
+
675
+ try {
676
+ Joi.assert(params, Joi.object().required(), 'Parameters');
677
+ Joi.assert(params.orgId, Joi.string().required(), 'Organization ID');
678
+ Joi.assert(session, Joi.string().required(), 'Session token');
679
+
680
+ const { orgId, userIds } = params;
681
+ let url = `/admin/organizations/${orgId}/orgusers`;
682
+ if (userIds && userIds.length > 0) {
683
+ url += `?userIds=${JSON.stringify(userIds)}`;
684
+ }
685
+
686
+ const apiCall = self.client.get(url, self._setHeader(session));
687
+ return self._returnData(await apiCall);
688
+ } catch (ex) {
689
+ throw ex;
690
+ }
691
+ }
330
692
  }
331
693
 
332
694
  export default AdminUser;