@agility/management-sdk 0.1.33 → 0.1.35

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 (239) hide show
  1. package/.cursor/api-coverage.md +217 -0
  2. package/.cursor/github-actions-improvements.md +76 -0
  3. package/.cursor/hardening.md +271 -0
  4. package/.cursor/linting-fix.md +160 -0
  5. package/.cursor/mocks.md +100 -0
  6. package/.cursor/test-coverage.md +841 -0
  7. package/README.md +87 -315
  8. package/coverage/base.css +224 -0
  9. package/coverage/block-navigation.js +87 -0
  10. package/coverage/coverage-summary.json +43 -0
  11. package/coverage/favicon.png +0 -0
  12. package/coverage/index.html +161 -0
  13. package/coverage/lcov-report/base.css +224 -0
  14. package/coverage/lcov-report/block-navigation.js +87 -0
  15. package/coverage/lcov-report/favicon.png +0 -0
  16. package/coverage/lcov-report/index.html +161 -0
  17. package/coverage/lcov-report/prettify.css +1 -0
  18. package/coverage/lcov-report/prettify.js +2 -0
  19. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  20. package/coverage/lcov-report/sorter.js +210 -0
  21. package/coverage/lcov-report/src/apiClient.ts.html +199 -0
  22. package/coverage/lcov-report/src/apiMethods/assetMethods.ts.html +682 -0
  23. package/coverage/lcov-report/src/apiMethods/batchMethods.ts.html +736 -0
  24. package/coverage/lcov-report/src/apiMethods/clientInstance.ts.html +403 -0
  25. package/coverage/lcov-report/src/apiMethods/containerMethods.ts.html +460 -0
  26. package/coverage/lcov-report/src/apiMethods/contentMethods.ts.html +1183 -0
  27. package/coverage/lcov-report/src/apiMethods/index.html +266 -0
  28. package/coverage/lcov-report/src/apiMethods/instanceMethods.ts.html +160 -0
  29. package/coverage/lcov-report/src/apiMethods/instanceUserMethods.ts.html +268 -0
  30. package/coverage/lcov-report/src/apiMethods/modelMethods.ts.html +352 -0
  31. package/coverage/lcov-report/src/apiMethods/pageMethods.ts.html +1276 -0
  32. package/coverage/lcov-report/src/apiMethods/serverUserMethods.ts.html +196 -0
  33. package/coverage/lcov-report/src/apiMethods/webhookMethods.ts.html +271 -0
  34. package/coverage/lcov-report/src/enums/batchItemType.ts.html +106 -0
  35. package/coverage/lcov-report/src/enums/batchOperationType.ts.html +142 -0
  36. package/coverage/lcov-report/src/enums/batchState..ts.html +106 -0
  37. package/coverage/lcov-report/src/enums/index.html +161 -0
  38. package/coverage/lcov-report/src/enums/workflowOperationType.ts.html +175 -0
  39. package/coverage/lcov-report/src/index.html +116 -0
  40. package/coverage/lcov-report/src/models/assetContainer.ts.html +106 -0
  41. package/coverage/lcov-report/src/models/assetGalleries.ts.html +103 -0
  42. package/coverage/lcov-report/src/models/assetMediaGrouping.ts.html +136 -0
  43. package/coverage/lcov-report/src/models/assetMediaGroupingMetaData.ts.html +97 -0
  44. package/coverage/lcov-report/src/models/batch.ts.html +178 -0
  45. package/coverage/lcov-report/src/models/batchItem.ts.html +127 -0
  46. package/coverage/lcov-report/src/models/container.ts.html +232 -0
  47. package/coverage/lcov-report/src/models/contentDefinitionTypeID.ts.html +142 -0
  48. package/coverage/lcov-report/src/models/contentItem.ts.html +202 -0
  49. package/coverage/lcov-report/src/models/contentSectionDefaultModule.ts.html +106 -0
  50. package/coverage/lcov-report/src/models/contentSectionDefinition.ts.html +196 -0
  51. package/coverage/lcov-report/src/models/contentViewColumn.ts.html +109 -0
  52. package/coverage/lcov-report/src/models/exception.ts.html +109 -0
  53. package/coverage/lcov-report/src/models/index.html +476 -0
  54. package/coverage/lcov-report/src/models/instanceRole.ts.html +106 -0
  55. package/coverage/lcov-report/src/models/instanceUser.ts.html +130 -0
  56. package/coverage/lcov-report/src/models/locales.ts.html +100 -0
  57. package/coverage/lcov-report/src/models/media.ts.html +178 -0
  58. package/coverage/lcov-report/src/models/model.ts.html +172 -0
  59. package/coverage/lcov-report/src/models/notification.ts.html +124 -0
  60. package/coverage/lcov-report/src/models/options.ts.html +109 -0
  61. package/coverage/lcov-report/src/models/pageItem.ts.html +268 -0
  62. package/coverage/lcov-report/src/models/pageModel.ts.html +130 -0
  63. package/coverage/lcov-report/src/models/sharedModule.ts.html +106 -0
  64. package/coverage/lcov-report/src/models/sitemap.ts.html +148 -0
  65. package/coverage/lcov-report/src/models/websiteUser.ts.html +157 -0
  66. package/coverage/lcov.info +1459 -0
  67. package/coverage/prettify.css +1 -0
  68. package/coverage/prettify.js +2 -0
  69. package/coverage/sort-arrow-sprite.png +0 -0
  70. package/coverage/sorter.js +210 -0
  71. package/coverage/src/apiClient.ts.html +199 -0
  72. package/coverage/src/apiMethods/assetMethods.ts.html +682 -0
  73. package/coverage/src/apiMethods/batchMethods.ts.html +736 -0
  74. package/coverage/src/apiMethods/clientInstance.ts.html +403 -0
  75. package/coverage/src/apiMethods/containerMethods.ts.html +460 -0
  76. package/coverage/src/apiMethods/contentMethods.ts.html +1183 -0
  77. package/coverage/src/apiMethods/index.html +266 -0
  78. package/coverage/src/apiMethods/instanceMethods.ts.html +160 -0
  79. package/coverage/src/apiMethods/instanceUserMethods.ts.html +268 -0
  80. package/coverage/src/apiMethods/modelMethods.ts.html +352 -0
  81. package/coverage/src/apiMethods/pageMethods.ts.html +1276 -0
  82. package/coverage/src/apiMethods/serverUserMethods.ts.html +196 -0
  83. package/coverage/src/apiMethods/webhookMethods.ts.html +271 -0
  84. package/coverage/src/enums/batchItemType.ts.html +106 -0
  85. package/coverage/src/enums/batchOperationType.ts.html +142 -0
  86. package/coverage/src/enums/batchState..ts.html +106 -0
  87. package/coverage/src/enums/index.html +161 -0
  88. package/coverage/src/enums/workflowOperationType.ts.html +175 -0
  89. package/coverage/src/index.html +116 -0
  90. package/coverage/src/models/assetContainer.ts.html +106 -0
  91. package/coverage/src/models/assetGalleries.ts.html +103 -0
  92. package/coverage/src/models/assetMediaGrouping.ts.html +136 -0
  93. package/coverage/src/models/assetMediaGroupingMetaData.ts.html +97 -0
  94. package/coverage/src/models/batch.ts.html +178 -0
  95. package/coverage/src/models/batchItem.ts.html +127 -0
  96. package/coverage/src/models/container.ts.html +232 -0
  97. package/coverage/src/models/contentDefinitionTypeID.ts.html +142 -0
  98. package/coverage/src/models/contentItem.ts.html +202 -0
  99. package/coverage/src/models/contentSectionDefaultModule.ts.html +106 -0
  100. package/coverage/src/models/contentSectionDefinition.ts.html +196 -0
  101. package/coverage/src/models/contentViewColumn.ts.html +109 -0
  102. package/coverage/src/models/exception.ts.html +109 -0
  103. package/coverage/src/models/index.html +476 -0
  104. package/coverage/src/models/instanceRole.ts.html +106 -0
  105. package/coverage/src/models/instanceUser.ts.html +130 -0
  106. package/coverage/src/models/locales.ts.html +100 -0
  107. package/coverage/src/models/media.ts.html +178 -0
  108. package/coverage/src/models/model.ts.html +172 -0
  109. package/coverage/src/models/notification.ts.html +124 -0
  110. package/coverage/src/models/options.ts.html +109 -0
  111. package/coverage/src/models/pageItem.ts.html +268 -0
  112. package/coverage/src/models/pageModel.ts.html +130 -0
  113. package/coverage/src/models/sharedModule.ts.html +106 -0
  114. package/coverage/src/models/sitemap.ts.html +148 -0
  115. package/coverage/src/models/websiteUser.ts.html +157 -0
  116. package/dist/.tsbuildinfo +1 -0
  117. package/dist/apiClient.d.ts.map +1 -0
  118. package/dist/apiClient.js.map +1 -0
  119. package/dist/apiMethods/assetMethods.d.ts.map +1 -0
  120. package/dist/apiMethods/assetMethods.js.map +1 -0
  121. package/dist/apiMethods/batchMethods.d.ts.map +1 -0
  122. package/dist/apiMethods/batchMethods.js.map +1 -0
  123. package/dist/apiMethods/clientInstance.d.ts.map +1 -0
  124. package/dist/apiMethods/clientInstance.js.map +1 -0
  125. package/dist/apiMethods/containerMethods.d.ts.map +1 -0
  126. package/dist/apiMethods/containerMethods.js.map +1 -0
  127. package/dist/apiMethods/contentMethods.d.ts.map +1 -0
  128. package/dist/apiMethods/contentMethods.js.map +1 -0
  129. package/dist/apiMethods/instanceMethods.d.ts.map +1 -0
  130. package/dist/apiMethods/instanceMethods.js.map +1 -0
  131. package/dist/apiMethods/instanceUserMethods.d.ts.map +1 -0
  132. package/dist/apiMethods/instanceUserMethods.js.map +1 -0
  133. package/dist/apiMethods/modelMethods.d.ts.map +1 -0
  134. package/dist/apiMethods/modelMethods.js.map +1 -0
  135. package/dist/apiMethods/pageMethods.d.ts +2 -1
  136. package/dist/apiMethods/pageMethods.d.ts.map +1 -0
  137. package/dist/apiMethods/pageMethods.js +7 -1
  138. package/dist/apiMethods/pageMethods.js.map +1 -0
  139. package/dist/apiMethods/serverUserMethods.d.ts.map +1 -0
  140. package/dist/apiMethods/serverUserMethods.js.map +1 -0
  141. package/dist/apiMethods/webhookMethods.d.ts.map +1 -0
  142. package/dist/apiMethods/webhookMethods.js.map +1 -0
  143. package/dist/enums/assetGroupingType.d.ts.map +1 -0
  144. package/dist/enums/assetGroupingType.js.map +1 -0
  145. package/dist/enums/batchItemType.d.ts.map +1 -0
  146. package/dist/enums/batchItemType.js.map +1 -0
  147. package/dist/enums/batchOperationType.d.ts.map +1 -0
  148. package/dist/enums/batchOperationType.js.map +1 -0
  149. package/dist/enums/batchState..d.ts.map +1 -0
  150. package/dist/enums/batchState..js.map +1 -0
  151. package/dist/enums/pageItemTemplateType.d.ts.map +1 -0
  152. package/dist/enums/pageItemTemplateType.js.map +1 -0
  153. package/dist/enums/workflowOperationType.d.ts.map +1 -0
  154. package/dist/enums/workflowOperationType.js.map +1 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js.map +1 -0
  157. package/dist/models/assetContainer.d.ts.map +1 -0
  158. package/dist/models/assetContainer.js.map +1 -0
  159. package/dist/models/assetGalleries.d.ts.map +1 -0
  160. package/dist/models/assetGalleries.js.map +1 -0
  161. package/dist/models/assetMediaGrouping.d.ts.map +1 -0
  162. package/dist/models/assetMediaGrouping.js.map +1 -0
  163. package/dist/models/assetMediaGroupingMetaData.d.ts.map +1 -0
  164. package/dist/models/assetMediaGroupingMetaData.js.map +1 -0
  165. package/dist/models/batch.d.ts.map +1 -0
  166. package/dist/models/batch.js.map +1 -0
  167. package/dist/models/batchItem.d.ts.map +1 -0
  168. package/dist/models/batchItem.js.map +1 -0
  169. package/dist/models/batchTypes.d.ts.map +1 -0
  170. package/dist/models/batchTypes.js.map +1 -0
  171. package/dist/models/container.d.ts.map +1 -0
  172. package/dist/models/container.js.map +1 -0
  173. package/dist/models/contentDefinitionTypeID.d.ts.map +1 -0
  174. package/dist/models/contentDefinitionTypeID.js.map +1 -0
  175. package/dist/models/contentItem.d.ts.map +1 -0
  176. package/dist/models/contentItem.js.map +1 -0
  177. package/dist/models/contentItemHistory.d.ts.map +1 -0
  178. package/dist/models/contentItemHistory.js.map +1 -0
  179. package/dist/models/contentListFilterModel.d.ts.map +1 -0
  180. package/dist/models/contentListFilterModel.js.map +1 -0
  181. package/dist/models/contentSectionDefaultModule.d.ts.map +1 -0
  182. package/dist/models/contentSectionDefaultModule.js.map +1 -0
  183. package/dist/models/contentSectionDefinition.d.ts.map +1 -0
  184. package/dist/models/contentSectionDefinition.js.map +1 -0
  185. package/dist/models/contentViewColumn.d.ts.map +1 -0
  186. package/dist/models/contentViewColumn.js.map +1 -0
  187. package/dist/models/exception.d.ts.map +1 -0
  188. package/dist/models/exception.js.map +1 -0
  189. package/dist/models/instanceRole.d.ts.map +1 -0
  190. package/dist/models/instanceRole.js.map +1 -0
  191. package/dist/models/instanceUser.d.ts.map +1 -0
  192. package/dist/models/instanceUser.js.map +1 -0
  193. package/dist/models/itemComments.d.ts.map +1 -0
  194. package/dist/models/itemComments.js.map +1 -0
  195. package/dist/models/listParams.d.ts.map +1 -0
  196. package/dist/models/listParams.js.map +1 -0
  197. package/dist/models/locales.d.ts.map +1 -0
  198. package/dist/models/locales.js.map +1 -0
  199. package/dist/models/media.d.ts.map +1 -0
  200. package/dist/models/media.js.map +1 -0
  201. package/dist/models/model.d.ts.map +1 -0
  202. package/dist/models/model.js.map +1 -0
  203. package/dist/models/notification.d.ts.map +1 -0
  204. package/dist/models/notification.js.map +1 -0
  205. package/dist/models/options.d.ts.map +1 -0
  206. package/dist/models/options.js.map +1 -0
  207. package/dist/models/pageHistory.d.ts.map +1 -0
  208. package/dist/models/pageHistory.js.map +1 -0
  209. package/dist/models/pageItem.d.ts.map +1 -0
  210. package/dist/models/pageItem.js.map +1 -0
  211. package/dist/models/pageModel.d.ts.map +1 -0
  212. package/dist/models/pageModel.js.map +1 -0
  213. package/dist/models/serverUser.d.ts.map +1 -0
  214. package/dist/models/serverUser.js.map +1 -0
  215. package/dist/models/sharedModule.d.ts.map +1 -0
  216. package/dist/models/sharedModule.js.map +1 -0
  217. package/dist/models/sitemap.d.ts.map +1 -0
  218. package/dist/models/sitemap.js.map +1 -0
  219. package/dist/models/webhook.d.ts.map +1 -0
  220. package/dist/models/webhook.js.map +1 -0
  221. package/dist/models/websiteListing.d.ts.map +1 -0
  222. package/dist/models/websiteListing.js.map +1 -0
  223. package/dist/models/websiteUser.d.ts.map +1 -0
  224. package/dist/models/websiteUser.js.map +1 -0
  225. package/docs/asset-methods.md +382 -0
  226. package/docs/auth-component.md +361 -0
  227. package/docs/auth.md +594 -0
  228. package/docs/batch-methods.md +244 -0
  229. package/docs/cicd.md +607 -0
  230. package/docs/container-methods.md +268 -0
  231. package/docs/content-methods.md +423 -0
  232. package/docs/instance-methods.md +105 -0
  233. package/docs/instance-user-methods.md +231 -0
  234. package/docs/model-methods.md +434 -0
  235. package/docs/multi-instance-operations.md +192 -0
  236. package/docs/page-methods.md +671 -0
  237. package/docs/server-user-methods.md +280 -0
  238. package/docs/webhook-methods.md +452 -0
  239. package/package.json +1 -1
@@ -0,0 +1,105 @@
1
+ # InstanceMethods API Documentation
2
+
3
+ The `InstanceMethods` class provides instance-level operations for retrieving configuration and settings.
4
+
5
+ ## Function List
6
+
7
+ | Function | Description |
8
+ |----------|-------------|
9
+ | [getLocales](#getlocales) | Retrieves all available locales for the instance |
10
+
11
+ ---
12
+
13
+ ## getLocales
14
+
15
+ Retrieves all available locales configured for the current Agility CMS instance.
16
+
17
+ ### Parameters
18
+
19
+ | Parameter | Type | Required | Description |
20
+ |-----------|------|----------|-------------|
21
+ | guid | string | Yes | The website GUID |
22
+
23
+ ### Returns
24
+
25
+ `Promise<Locales[]>` - Array of locale objects with language configuration
26
+
27
+ ### Usage Example
28
+
29
+ ```typescript
30
+ const locales = await client.instanceMethods.getLocales('your-guid');
31
+
32
+ // Display available locales
33
+ locales.forEach(locale => {
34
+ console.log(`${locale.name} (${locale.code})`);
35
+ });
36
+
37
+ // Find default locale
38
+ const defaultLocale = locales.find(locale => locale.isDefault);
39
+ console.log('Default locale:', defaultLocale.code);
40
+
41
+ // Get all enabled locales
42
+ const enabledLocales = locales.filter(locale => locale.isEnabled);
43
+ console.log(`${enabledLocales.length} locales are enabled`);
44
+ ```
45
+
46
+ ### Locale Object Structure
47
+
48
+ ```typescript
49
+ interface Locales {
50
+ code: string; // Language code (e.g., 'en-us', 'fr-ca')
51
+ name: string; // Display name (e.g., 'English (United States)')
52
+ isDefault: boolean; // Whether this is the default locale
53
+ isEnabled: boolean; // Whether this locale is enabled
54
+ // Additional locale properties may be available
55
+ }
56
+ ```
57
+
58
+ ### Common Use Cases
59
+
60
+ ```typescript
61
+ // Get locale codes for content operations
62
+ const locales = await client.instanceMethods.getLocales(guid);
63
+ const localeCodes = locales.map(locale => locale.code);
64
+
65
+ // Use with content operations
66
+ for (const localeCode of localeCodes) {
67
+ const content = await client.contentMethods.getContentItem(123, guid, localeCode);
68
+ console.log(`Content in ${localeCode}:`, content.fields.title);
69
+ }
70
+
71
+ // Check if a specific locale is available
72
+ const hasSpanish = locales.some(locale => locale.code === 'es-es');
73
+ if (hasSpanish) {
74
+ console.log('Spanish locale is available');
75
+ }
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Error Handling
81
+
82
+ The method throws `Exception` objects on failure:
83
+
84
+ ```typescript
85
+ try {
86
+ const locales = await client.instanceMethods.getLocales('your-guid');
87
+ } catch (error) {
88
+ console.error('Failed to retrieve locales:', error.message);
89
+ }
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Navigation
95
+ - [← Back to Main Documentation](../README.md)
96
+ - [Authentication & Setup](./auth.md)
97
+ - [AssetMethods](./asset-methods.md)
98
+ - [BatchMethods](./batch-methods.md)
99
+ - [ContainerMethods](./container-methods.md)
100
+ - [ContentMethods](./content-methods.md)
101
+ - [InstanceUserMethods](./instance-user-methods.md)
102
+ - [ModelMethods](./model-methods.md)
103
+ - [PageMethods](./page-methods.md)
104
+ - [ServerUserMethods](./server-user-methods.md)
105
+ - [WebhookMethods](./webhook-methods.md)
@@ -0,0 +1,231 @@
1
+ # Agility CMS & Management API TypeScript SDK
2
+
3
+ ## InstanceUserMethods
4
+
5
+ This class provides comprehensive user management operations for Agility CMS instances. These methods allow you to manage user accounts, roles, and permissions within your instance.
6
+
7
+ **Important Notes:**
8
+ - Instance user methods typically require administrative privileges
9
+ - These operations affect user accounts across the entire instance
10
+ - Role assignments control user access to different areas of the CMS
11
+ - User management changes may affect website permissions and access
12
+
13
+ ### Function List
14
+ - [getUsers](#getusers) - Retrieves all instance users
15
+ - [saveUser](#saveuser) - Creates or updates an instance user
16
+ - [deleteUser](#deleteuser) - Deletes an instance user by ID
17
+
18
+ ---
19
+
20
+ ### getUsers
21
+
22
+ Retrieves all instance users for the current website.
23
+
24
+ | Parameter | Type | Required | Description |
25
+ |-----------|------|----------|-------------|
26
+ | `guid` | `string` | Yes | Current website GUID |
27
+
28
+ **Returns:** `WebsiteUser` - Complete list of users with roles and permissions
29
+
30
+ **Usage Example:**
31
+ ```typescript
32
+ const users = await apiClient.instanceUserMethods.getUsers(guid);
33
+ console.log(`User: ${user.firstName} ${user.lastName}`);
34
+ console.log(`Email: ${user.emailAddress}`);
35
+ console.log(`Role: ${user.roleName}`);
36
+ console.log(`Status: ${user.isActive ? 'Active' : 'Inactive'}`);
37
+ console.log(`Last Login: ${user.lastLoginDate}`);
38
+
39
+ // Check user permissions
40
+ if (user.permissions && user.permissions.length > 0) {
41
+ console.log('User permissions:');
42
+ user.permissions.forEach(permission => {
43
+ console.log(` - ${permission}`);
44
+ });
45
+ } else {
46
+ console.log('User has no specific permissions assigned');
47
+ }
48
+
49
+ // Check if user is an administrator
50
+ const isAdmin = user.roleName === 'Administrator' ||
51
+ user.roleName === 'Instance Administrator';
52
+ console.log(`Is Administrator: ${isAdmin}`);
53
+ ```
54
+
55
+ **Response Properties:**
56
+ The `InstanceUser` object includes:
57
+ - `userID`: Unique identifier for the user
58
+ - `firstName`: User's first name
59
+ - `lastName`: User's last name
60
+ - `emailAddress`: User's email address
61
+ - `roleName`: The user's role within the instance
62
+ - `isActive`: Whether the user account is active
63
+ - `lastLoginDate`: Date of the user's last login
64
+ - `createdDate`: Date the user account was created
65
+ - `permissions`: Array of specific permissions assigned to the user
66
+
67
+ **Error Handling:**
68
+ - Throws `Exception` when user not found
69
+ - Throws `Exception` when insufficient permissions to view user details
70
+
71
+ ### saveUser
72
+
73
+ Creates a new instance user or updates an existing one.
74
+
75
+ | Parameter | Type | Required | Description |
76
+ |-----------|------|----------|-------------|
77
+ | `emailAddress` | `string` | Yes | User's email address |
78
+ | `roles` | `InstanceRole[]` | Yes | Array of roles to assign to user |
79
+ | `guid` | `string` | Yes | Current website GUID |
80
+ | `firstName` | `string` | No | User's first name |
81
+ | `lastName` | `string` | No | User's last name |
82
+
83
+ **Returns:** `InstanceUser` - Saved user object with updated metadata
84
+
85
+ **Usage Example:**
86
+ ```typescript
87
+ // Create a new user
88
+ const roles = [
89
+ { roleID: 1, roleName: 'Editor' },
90
+ { roleID: 2, roleName: 'Contributor' }
91
+ ];
92
+
93
+ const savedUser = await apiClient.instanceUserMethods.saveUser(
94
+ 'john.doe@company.com',
95
+ roles,
96
+ guid,
97
+ 'John',
98
+ 'Doe'
99
+ );
100
+ console.log('User created with ID:', savedUser.userID);
101
+
102
+ // Update existing user
103
+ const existingUser = await apiClient.instanceUserMethods.getInstanceUser(123, guid);
104
+ existingUser.firstName = 'Jane';
105
+ existingUser.roleName = 'Administrator';
106
+ existingUser.isActive = false; // Deactivate user
107
+
108
+ const updatedUser = await apiClient.instanceUserMethods.saveInstanceUser(existingUser, guid);
109
+ console.log('User updated:', updatedUser.emailAddress);
110
+
111
+ // Bulk user role update
112
+ const updateUserRole = async (userID, newRole) => {
113
+ const user = await apiClient.instanceUserMethods.getInstanceUser(userID, guid);
114
+ user.roleName = newRole;
115
+ return await apiClient.instanceUserMethods.saveInstanceUser(user, guid);
116
+ };
117
+
118
+ // Promote user to administrator
119
+ await updateUserRole(123, 'Administrator');
120
+ ```
121
+
122
+ **User Roles:**
123
+ Common role names include:
124
+ - `Administrator`: Full access to all instance features
125
+ - `Instance Administrator`: Instance-level administrative access
126
+ - `Editor`: Content creation and editing permissions
127
+ - `Publisher`: Content publishing permissions
128
+ - `Contributor`: Limited content creation permissions
129
+ - `Viewer`: Read-only access
130
+
131
+ **Validation Rules:**
132
+ - `emailAddress` must be unique within the instance
133
+ - `password` is required for new users (not needed for updates)
134
+ - `firstName` and `lastName` are required
135
+ - `roleName` must be a valid role within the instance
136
+
137
+ **Error Handling:**
138
+ - Throws `Exception` when validation fails (duplicate email, invalid role, etc.)
139
+ - Throws `Exception` when save operation fails
140
+ - Throws `Exception` when insufficient permissions to create/update users
141
+
142
+ ### deleteUser
143
+
144
+ Deletes an instance user by their unique ID.
145
+
146
+ | Parameter | Type | Required | Description |
147
+ |-----------|------|----------|-------------|
148
+ | `userId` | `number` | Yes | The user ID to delete |
149
+ | `guid` | `string` | Yes | Current website GUID |
150
+
151
+ **Returns:** `string` - Confirmation message of successful deletion
152
+
153
+ **Usage Example:**
154
+ ```typescript
155
+ try {
156
+ const result = await apiClient.instanceUserMethods.deleteUser(123, guid);
157
+ console.log(result); // "User deleted successfully"
158
+ } catch (error) {
159
+ if (error.message.includes('owns content')) {
160
+ console.log('Cannot delete user: user owns content items');
161
+ // Handle by reassigning content or archiving user instead
162
+ } else if (error.message.includes('last administrator')) {
163
+ console.log('Cannot delete user: last administrator in instance');
164
+ } else {
165
+ console.error('Failed to delete user:', error.message);
166
+ }
167
+ }
168
+
169
+ // Safe user deletion with checks
170
+ const safeDeleteUser = async (userID) => {
171
+ try {
172
+ // Get user details first
173
+ const user = await apiClient.instanceUserMethods.getInstanceUser(userID, guid);
174
+ console.log(`Attempting to delete user: ${user.emailAddress}`);
175
+
176
+ // Check if user is active
177
+ if (user.isActive) {
178
+ console.log('Warning: Deleting active user');
179
+ }
180
+
181
+ // Perform deletion
182
+ const result = await apiClient.instanceUserMethods.deleteInstanceUser(userID, guid);
183
+ console.log('User deleted successfully');
184
+ return result;
185
+ } catch (error) {
186
+ console.error('Failed to delete user:', error.message);
187
+ throw error;
188
+ }
189
+ };
190
+
191
+ // Alternative: Deactivate instead of delete
192
+ const deactivateUser = async (userID) => {
193
+ const user = await apiClient.instanceUserMethods.getInstanceUser(userID, guid);
194
+ user.isActive = false;
195
+ return await apiClient.instanceUserMethods.saveInstanceUser(user, guid);
196
+ };
197
+ ```
198
+
199
+ **Deletion Restrictions:**
200
+ - Cannot delete a user who owns content items (reassign content first)
201
+ - Cannot delete the last administrator in the instance
202
+ - Cannot delete your own user account
203
+ - Cannot delete users with active sessions (in some cases)
204
+
205
+ **Best Practices:**
206
+ - Consider deactivating users instead of deleting them to preserve audit trails
207
+ - Reassign content ownership before deleting users
208
+ - Ensure at least one administrator remains in the instance
209
+ - Log user deletions for security auditing
210
+
211
+ **Error Handling:**
212
+ - Throws `Exception` when user not found
213
+ - Throws `Exception` when user cannot be deleted (owns content, last admin, etc.)
214
+ - Throws `Exception` when insufficient permissions to delete users
215
+
216
+ ---
217
+
218
+ ## Navigation
219
+ - [← Back to Main Documentation](../README.md)
220
+ - [Authentication & Setup](./auth.md)
221
+ - [Multi-Instance Operations](./multi-instance-operations.md)
222
+ - [AssetMethods](./asset-methods.md)
223
+ - [BatchMethods](./batch-methods.md)
224
+ - [ContainerMethods](./container-methods.md)
225
+ - [ContentMethods](./content-methods.md)
226
+ - [InstanceMethods](./instance-methods.md)
227
+ - **InstanceUserMethods** *(current)*
228
+ - [ModelMethods](./model-methods.md)
229
+ - [PageMethods](./page-methods.md)
230
+ - [ServerUserMethods](./server-user-methods.md)
231
+ - [WebhookMethods](./webhook-methods.md)