@docbrasil/api-systemmanager 1.1.77 → 1.1.79

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/dist/bundle.cjs CHANGED
@@ -14416,6 +14416,46 @@ class AdminUser {
14416
14416
  const self = this;
14417
14417
  self.parent = options.parent;
14418
14418
  self.client = self.parent.dispatch.getClient();
14419
+ self._orgId = null;
14420
+ }
14421
+
14422
+ /**
14423
+ * @description Set the organization ID for org-scoped API calls
14424
+ * @param {string} orgId - Organization ID
14425
+ * @return {AdminUser} this instance for chaining
14426
+ * @public
14427
+ */
14428
+ setOrgId(orgId) {
14429
+ this._orgId = orgId;
14430
+ return this;
14431
+ }
14432
+
14433
+ /**
14434
+ * @description Get the base path for user admin API calls.
14435
+ * When orgId is set, uses org-scoped endpoints.
14436
+ * When orgId is not set, falls back to legacy admin endpoints.
14437
+ * @return {string} base path
14438
+ * @private
14439
+ */
14440
+ _basePath() {
14441
+ if (this._orgId) {
14442
+ return `/api/organizations/${this._orgId}/adminusers`;
14443
+ }
14444
+ return '/admin/users';
14445
+ }
14446
+
14447
+ /**
14448
+ * @description Get the base path for org-specific operations (groups, orgchart).
14449
+ * When orgId is set, uses org-scoped endpoints.
14450
+ * @param {string} orgId - Organization ID for the operation
14451
+ * @return {string} base path
14452
+ * @private
14453
+ */
14454
+ _orgPath(orgId) {
14455
+ if (this._orgId) {
14456
+ return `/api/organizations/${orgId}/adminusers`;
14457
+ }
14458
+ return `/admin/organizations/${orgId}`;
14419
14459
  }
14420
14460
 
14421
14461
  /**
@@ -14472,7 +14512,7 @@ class AdminUser {
14472
14512
  Joi__default["default"].assert(userId, Joi__default["default"].string().required());
14473
14513
  Joi__default["default"].assert(session, Joi__default["default"].string().required());
14474
14514
 
14475
- const apiCall = self.client.get(`/admin/users/${userId}`, self._setHeader(session));
14515
+ const apiCall = self.client.get(`${self._basePath()}/${userId}`, self._setHeader(session));
14476
14516
  return self._returnData(await apiCall);
14477
14517
  } catch (ex) {
14478
14518
  throw ex;
@@ -14543,7 +14583,7 @@ class AdminUser {
14543
14583
  Joi__default["default"].assert(session, Joi__default["default"].string().required());
14544
14584
 
14545
14585
  const { userId, ...payload } = params;
14546
- const apiCall = self.client.put(`/admin/users/${userId}/password`, payload, self._setHeader(session));
14586
+ const apiCall = self.client.put(`${self._basePath()}/${userId}/password`, payload, self._setHeader(session));
14547
14587
  return self._returnData(await apiCall);
14548
14588
  } catch (ex) {
14549
14589
  throw ex;
@@ -14573,7 +14613,7 @@ class AdminUser {
14573
14613
  Joi__default["default"].assert(session, Joi__default["default"].string().required());
14574
14614
 
14575
14615
  const payload = { email };
14576
- const apiCall = self.client.post(`/admin/users/email/exist`, payload, self._setHeader(session));
14616
+ const apiCall = self.client.post(`${self._basePath()}/email/exist`, payload, self._setHeader(session));
14577
14617
  return self._returnData(await apiCall);
14578
14618
  } catch (ex) {
14579
14619
  throw ex;
@@ -14605,7 +14645,84 @@ class AdminUser {
14605
14645
  Joi__default["default"].assert(payload, Joi__default["default"].object().required(), 'Payload to update');
14606
14646
  Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session user admin');
14607
14647
 
14608
- const apiCall = self.client.put(`/admin/users/${userId}`, payload, self._setHeader(session));
14648
+ const apiCall = self.client.put(`${self._basePath()}/${userId}`, payload, self._setHeader(session));
14649
+ return self._returnData(await apiCall);
14650
+ } catch (ex) {
14651
+ throw ex;
14652
+ }
14653
+ }
14654
+
14655
+ /**
14656
+ * @author Myndware <augusto.pissarra@myndware.com>
14657
+ * @description Create a new user
14658
+ * @param {object} payload User data to create
14659
+ * @param {string} payload.name Full name (required)
14660
+ * @param {string} payload.username Username (required)
14661
+ * @param {string} payload.email Email (required)
14662
+ * @param {string} payload.orgId Primary organization ID (required)
14663
+ * @param {array} [payload.orgIds] Organization IDs
14664
+ * @param {array} [payload.role=[2]] Security roles
14665
+ * @param {string} [payload.password] Initial password
14666
+ * @param {string} session JWT session token
14667
+ * @return {Promise<object>} Created user document
14668
+ * @public
14669
+ * @async
14670
+ * @example
14671
+ *
14672
+ * const API = require('@docbrasil/api-systemmanager');
14673
+ * const api = new API();
14674
+ * const payload = {
14675
+ * name: 'Maria Silva',
14676
+ * username: 'maria.silva',
14677
+ * email: 'maria@example.com',
14678
+ * orgId: '5edd11c46b6ce9729c2c297c',
14679
+ * role: [2]
14680
+ * };
14681
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
14682
+ * await api.admin.user.create(payload, session);
14683
+ */
14684
+ async create(payload, session) {
14685
+ const self = this;
14686
+
14687
+ try {
14688
+ Joi__default["default"].assert(payload, Joi__default["default"].object().required(), 'User data to create');
14689
+ Joi__default["default"].assert(payload.name, Joi__default["default"].string().required(), 'Full name');
14690
+ Joi__default["default"].assert(payload.username, Joi__default["default"].string().required(), 'Username');
14691
+ Joi__default["default"].assert(payload.email, Joi__default["default"].string().email().required(), 'Email');
14692
+ Joi__default["default"].assert(payload.orgId, Joi__default["default"].string().required(), 'Primary organization ID');
14693
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
14694
+
14695
+ const apiCall = self.client.put(self._basePath(), payload, self._setHeader(session));
14696
+ return self._returnData(await apiCall);
14697
+ } catch (ex) {
14698
+ throw ex;
14699
+ }
14700
+ }
14701
+
14702
+ /**
14703
+ * @author Myndware <augusto.pissarra@myndware.com>
14704
+ * @description Remove a user
14705
+ * @param {string} userId User ID to remove (required)
14706
+ * @param {string} session JWT session token
14707
+ * @return {Promise<object>} Removal confirmation
14708
+ * @public
14709
+ * @async
14710
+ * @example
14711
+ *
14712
+ * const API = require('@docbrasil/api-systemmanager');
14713
+ * const api = new API();
14714
+ * const userId = '55e4a3bd6be6b45210833fae';
14715
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
14716
+ * await api.admin.user.remove(userId, session);
14717
+ */
14718
+ async remove(userId, session) {
14719
+ const self = this;
14720
+
14721
+ try {
14722
+ Joi__default["default"].assert(userId, Joi__default["default"].string().required(), 'User ID');
14723
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
14724
+
14725
+ const apiCall = self.client.delete(`${self._basePath()}/${userId}`, self._setHeader(session));
14609
14726
  return self._returnData(await apiCall);
14610
14727
  } catch (ex) {
14611
14728
  throw ex;
@@ -14633,7 +14750,7 @@ class AdminUser {
14633
14750
  Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session user admin');
14634
14751
 
14635
14752
  const payload = { email };
14636
- const apiCall = self.client.post('/admin/users/change/password', payload, self._setHeader(session));
14753
+ const apiCall = self.client.post(`${self._basePath()}/change/password`, payload, self._setHeader(session));
14637
14754
 
14638
14755
  return self._returnData(await apiCall);
14639
14756
  } catch (ex) {
@@ -14666,7 +14783,7 @@ class AdminUser {
14666
14783
  Joi__default["default"].assert(payload.newPassword, Joi__default["default"].string().required(), 'New password');
14667
14784
  Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session user admin');
14668
14785
 
14669
- const apiCall = self.client.put('/admin/users/change/password', payload, self._setHeader(session));
14786
+ const apiCall = self.client.put(`${self._basePath()}/change/password`, payload, self._setHeader(session));
14670
14787
 
14671
14788
  return self._returnData(await apiCall);
14672
14789
  } catch (ex) {
@@ -14714,13 +14831,14 @@ class AdminUser {
14714
14831
  page = 1,
14715
14832
  perPage = 200,
14716
14833
  project = PROJECTION_DEFAULT,
14717
- sort = SORT_DEFAULT
14834
+ sort = SORT_DEFAULT,
14835
+ filter = {}
14718
14836
  } = params;
14719
14837
 
14720
- const payloadToSend = {$project: project, sort};
14838
+ const payloadToSend = {$project: project, sort, ...filter};
14721
14839
 
14722
- const apiCall = self._client
14723
- .post(`/admin/users?page=${page}&perPage=${perPage}`, payloadToSend, self._setHeader(session));
14840
+ const apiCall = self.client
14841
+ .post(`${self._basePath()}?page=${page}&perPage=${perPage}`, payloadToSend, self._setHeader(session));
14724
14842
 
14725
14843
  return self._returnData(await apiCall);
14726
14844
 
@@ -14728,6 +14846,291 @@ class AdminUser {
14728
14846
  throw ex;
14729
14847
  }
14730
14848
  }
14849
+
14850
+ /**
14851
+ * @author Myndware <augusto.pissarra@myndware.com>
14852
+ * @description Block a user (prevent login)
14853
+ * @param {string} userId User ID to block (required)
14854
+ * @param {string} session JWT session token
14855
+ * @return {Promise<object>} Updated user
14856
+ * @public
14857
+ * @async
14858
+ * @example
14859
+ *
14860
+ * const API = require('@docbrasil/api-systemmanager');
14861
+ * const api = new API();
14862
+ * const userId = '55e4a3bd6be6b45210833fae';
14863
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
14864
+ * await api.admin.user.block(userId, session);
14865
+ */
14866
+ async block(userId, session) {
14867
+ const self = this;
14868
+
14869
+ try {
14870
+ Joi__default["default"].assert(userId, Joi__default["default"].string().required(), 'User ID');
14871
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
14872
+
14873
+ const apiCall = self.client.put(`${self._basePath()}/${userId}/block`, {}, self._setHeader(session));
14874
+ return self._returnData(await apiCall);
14875
+ } catch (ex) {
14876
+ throw ex;
14877
+ }
14878
+ }
14879
+
14880
+ /**
14881
+ * @author Myndware <augusto.pissarra@myndware.com>
14882
+ * @description Unblock a user (allow login)
14883
+ * @param {string} userId User ID to unblock (required)
14884
+ * @param {string} session JWT session token
14885
+ * @return {Promise<object>} Updated user
14886
+ * @public
14887
+ * @async
14888
+ * @example
14889
+ *
14890
+ * const API = require('@docbrasil/api-systemmanager');
14891
+ * const api = new API();
14892
+ * const userId = '55e4a3bd6be6b45210833fae';
14893
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
14894
+ * await api.admin.user.unblock(userId, session);
14895
+ */
14896
+ async unblock(userId, session) {
14897
+ const self = this;
14898
+
14899
+ try {
14900
+ Joi__default["default"].assert(userId, Joi__default["default"].string().required(), 'User ID');
14901
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
14902
+
14903
+ const apiCall = self.client.put(`${self._basePath()}/${userId}/unblock`, {}, self._setHeader(session));
14904
+ return self._returnData(await apiCall);
14905
+ } catch (ex) {
14906
+ throw ex;
14907
+ }
14908
+ }
14909
+
14910
+ /**
14911
+ * @author Myndware <augusto.pissarra@myndware.com>
14912
+ * @description Block email notifications for a user
14913
+ * @param {string} userId User ID (required)
14914
+ * @param {string} session JWT session token
14915
+ * @return {Promise<object>} Updated user
14916
+ * @public
14917
+ * @async
14918
+ */
14919
+ async blockEmail(userId, session) {
14920
+ const self = this;
14921
+
14922
+ try {
14923
+ Joi__default["default"].assert(userId, Joi__default["default"].string().required(), 'User ID');
14924
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
14925
+
14926
+ const apiCall = self.client.put(`${self._basePath()}/${userId}/blockemail`, {}, self._setHeader(session));
14927
+ return self._returnData(await apiCall);
14928
+ } catch (ex) {
14929
+ throw ex;
14930
+ }
14931
+ }
14932
+
14933
+ /**
14934
+ * @author Myndware <augusto.pissarra@myndware.com>
14935
+ * @description Unblock email notifications for a user
14936
+ * @param {string} userId User ID (required)
14937
+ * @param {string} session JWT session token
14938
+ * @return {Promise<object>} Updated user
14939
+ * @public
14940
+ * @async
14941
+ */
14942
+ async unblockEmail(userId, session) {
14943
+ const self = this;
14944
+
14945
+ try {
14946
+ Joi__default["default"].assert(userId, Joi__default["default"].string().required(), 'User ID');
14947
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
14948
+
14949
+ const apiCall = self.client.put(`${self._basePath()}/${userId}/unblockemail`, {}, self._setHeader(session));
14950
+ return self._returnData(await apiCall);
14951
+ } catch (ex) {
14952
+ throw ex;
14953
+ }
14954
+ }
14955
+
14956
+ /**
14957
+ * @author Myndware <augusto.pissarra@myndware.com>
14958
+ * @description Update user type classification
14959
+ * @param {object} params Parameters
14960
+ * @param {string} params.userId User ID (required)
14961
+ * @param {string} params.userType New user type (required)
14962
+ * @param {string} session JWT session token
14963
+ * @return {Promise<object>} Updated user
14964
+ * @public
14965
+ * @async
14966
+ * @example
14967
+ *
14968
+ * const API = require('@docbrasil/api-systemmanager');
14969
+ * const api = new API();
14970
+ * const params = { userId: '55e4a3bd6be6b45210833fae', userType: 'USER' };
14971
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
14972
+ * await api.admin.user.updateUserType(params, session);
14973
+ */
14974
+ async updateUserType(params, session) {
14975
+ const self = this;
14976
+
14977
+ try {
14978
+ Joi__default["default"].assert(params, Joi__default["default"].object().required(), 'Parameters');
14979
+ Joi__default["default"].assert(params.userId, Joi__default["default"].string().required(), 'User ID');
14980
+ Joi__default["default"].assert(params.userType, Joi__default["default"].string().required(), 'User type');
14981
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
14982
+
14983
+ const { userId, userType } = params;
14984
+ const apiCall = self.client.put(`${self._basePath()}/${userId}/type/${userType}`, {}, self._setHeader(session));
14985
+ return self._returnData(await apiCall);
14986
+ } catch (ex) {
14987
+ throw ex;
14988
+ }
14989
+ }
14990
+
14991
+ /**
14992
+ * @author Myndware <augusto.pissarra@myndware.com>
14993
+ * @description Get organization groups with their permissions
14994
+ * @param {string} orgId Organization ID (required)
14995
+ * @param {string} session JWT session token
14996
+ * @return {Promise<array>} Array of groups with permissions
14997
+ * @public
14998
+ * @async
14999
+ * @example
15000
+ *
15001
+ * const API = require('@docbrasil/api-systemmanager');
15002
+ * const api = new API();
15003
+ * const orgId = '5edd11c46b6ce9729c2c297c';
15004
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
15005
+ * const groups = await api.admin.user.getGroupsPermissions(orgId, session);
15006
+ */
15007
+ async getGroupsPermissions(orgId, session) {
15008
+ const self = this;
15009
+
15010
+ try {
15011
+ Joi__default["default"].assert(orgId, Joi__default["default"].string().required(), 'Organization ID');
15012
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
15013
+
15014
+ const apiCall = self.client.get(
15015
+ `${self._orgPath(orgId)}/groups/permissions`,
15016
+ self._setHeader(session)
15017
+ );
15018
+ return self._returnData(await apiCall);
15019
+ } catch (ex) {
15020
+ throw ex;
15021
+ }
15022
+ }
15023
+
15024
+ /**
15025
+ * @author Myndware <augusto.pissarra@myndware.com>
15026
+ * @description Update user's group memberships in an organization
15027
+ * @param {object} params Parameters
15028
+ * @param {string} params.orgId Organization ID (required)
15029
+ * @param {string} params.userId User ID (required)
15030
+ * @param {array} params.groups Array of group IDs (required)
15031
+ * @param {string} session JWT session token
15032
+ * @return {Promise<object>} Updated groups
15033
+ * @public
15034
+ * @async
15035
+ * @example
15036
+ *
15037
+ * const API = require('@docbrasil/api-systemmanager');
15038
+ * const api = new API();
15039
+ * const params = {
15040
+ * orgId: '5edd11c46b6ce9729c2c297c',
15041
+ * userId: '55e4a3bd6be6b45210833fae',
15042
+ * groups: ['groupId1', 'groupId2']
15043
+ * };
15044
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
15045
+ * await api.admin.user.updateUserGroups(params, session);
15046
+ */
15047
+ async updateUserGroups(params, session) {
15048
+ const self = this;
15049
+
15050
+ try {
15051
+ Joi__default["default"].assert(params, Joi__default["default"].object().required(), 'Parameters');
15052
+ Joi__default["default"].assert(params.orgId, Joi__default["default"].string().required(), 'Organization ID');
15053
+ Joi__default["default"].assert(params.userId, Joi__default["default"].string().required(), 'User ID');
15054
+ Joi__default["default"].assert(params.groups, Joi__default["default"].array().required(), 'Group IDs');
15055
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
15056
+
15057
+ const { orgId, userId, groups } = params;
15058
+ const apiCall = self.client.put(
15059
+ `${self._orgPath(orgId)}/groups/${userId}`,
15060
+ { groups },
15061
+ self._setHeader(session)
15062
+ );
15063
+ return self._returnData(await apiCall);
15064
+ } catch (ex) {
15065
+ throw ex;
15066
+ }
15067
+ }
15068
+
15069
+ /**
15070
+ * @author Myndware <augusto.pissarra@myndware.com>
15071
+ * @description Get organizations the admin user can manage
15072
+ * @param {string} session JWT session token
15073
+ * @return {Promise<array>} Array of organizations
15074
+ * @public
15075
+ * @async
15076
+ * @example
15077
+ *
15078
+ * const API = require('@docbrasil/api-systemmanager');
15079
+ * const api = new API();
15080
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
15081
+ * const orgs = await api.admin.user.getOrganizations(session);
15082
+ */
15083
+ async getOrganizations(session) {
15084
+ const self = this;
15085
+
15086
+ try {
15087
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
15088
+
15089
+ const apiCall = self.client.get(`${self._basePath()}/organizations`, self._setHeader(session));
15090
+ return self._returnData(await apiCall);
15091
+ } catch (ex) {
15092
+ throw ex;
15093
+ }
15094
+ }
15095
+
15096
+ /**
15097
+ * @author Myndware <augusto.pissarra@myndware.com>
15098
+ * @description Get users belonging to an organization
15099
+ * @param {object} params Parameters
15100
+ * @param {string} params.orgId Organization ID (required)
15101
+ * @param {array} [params.userIds] Optional array of user IDs to filter
15102
+ * @param {string} session JWT session token
15103
+ * @return {Promise<array>} Array of users with id, name, email, title
15104
+ * @public
15105
+ * @async
15106
+ * @example
15107
+ *
15108
+ * const API = require('@docbrasil/api-systemmanager');
15109
+ * const api = new API();
15110
+ * const params = { orgId: '5edd11c46b6ce9729c2c297c' };
15111
+ * const session = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
15112
+ * const users = await api.admin.user.getOrgUsers(params, session);
15113
+ */
15114
+ async getOrgUsers(params, session) {
15115
+ const self = this;
15116
+
15117
+ try {
15118
+ Joi__default["default"].assert(params, Joi__default["default"].object().required(), 'Parameters');
15119
+ Joi__default["default"].assert(params.orgId, Joi__default["default"].string().required(), 'Organization ID');
15120
+ Joi__default["default"].assert(session, Joi__default["default"].string().required(), 'Session token');
15121
+
15122
+ const { orgId, userIds } = params;
15123
+ let url = this._orgId ? `${self._orgPath(orgId)}/orgusers` : `/admin/organizations/${orgId}/orgusers`;
15124
+ if (userIds && userIds.length > 0) {
15125
+ url += `?userIds=${JSON.stringify(userIds)}`;
15126
+ }
15127
+
15128
+ const apiCall = self.client.get(url, self._setHeader(session));
15129
+ return self._returnData(await apiCall);
15130
+ } catch (ex) {
15131
+ throw ex;
15132
+ }
15133
+ }
14731
15134
  }
14732
15135
 
14733
15136
  /**