@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.
- package/.cursor/api-coverage.md +217 -0
- package/.cursor/github-actions-improvements.md +76 -0
- package/.cursor/hardening.md +271 -0
- package/.cursor/linting-fix.md +160 -0
- package/.cursor/mocks.md +100 -0
- package/.cursor/test-coverage.md +841 -0
- package/README.md +87 -315
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-summary.json +43 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +161 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +161 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov-report/src/apiClient.ts.html +199 -0
- package/coverage/lcov-report/src/apiMethods/assetMethods.ts.html +682 -0
- package/coverage/lcov-report/src/apiMethods/batchMethods.ts.html +736 -0
- package/coverage/lcov-report/src/apiMethods/clientInstance.ts.html +403 -0
- package/coverage/lcov-report/src/apiMethods/containerMethods.ts.html +460 -0
- package/coverage/lcov-report/src/apiMethods/contentMethods.ts.html +1183 -0
- package/coverage/lcov-report/src/apiMethods/index.html +266 -0
- package/coverage/lcov-report/src/apiMethods/instanceMethods.ts.html +160 -0
- package/coverage/lcov-report/src/apiMethods/instanceUserMethods.ts.html +268 -0
- package/coverage/lcov-report/src/apiMethods/modelMethods.ts.html +352 -0
- package/coverage/lcov-report/src/apiMethods/pageMethods.ts.html +1276 -0
- package/coverage/lcov-report/src/apiMethods/serverUserMethods.ts.html +196 -0
- package/coverage/lcov-report/src/apiMethods/webhookMethods.ts.html +271 -0
- package/coverage/lcov-report/src/enums/batchItemType.ts.html +106 -0
- package/coverage/lcov-report/src/enums/batchOperationType.ts.html +142 -0
- package/coverage/lcov-report/src/enums/batchState..ts.html +106 -0
- package/coverage/lcov-report/src/enums/index.html +161 -0
- package/coverage/lcov-report/src/enums/workflowOperationType.ts.html +175 -0
- package/coverage/lcov-report/src/index.html +116 -0
- package/coverage/lcov-report/src/models/assetContainer.ts.html +106 -0
- package/coverage/lcov-report/src/models/assetGalleries.ts.html +103 -0
- package/coverage/lcov-report/src/models/assetMediaGrouping.ts.html +136 -0
- package/coverage/lcov-report/src/models/assetMediaGroupingMetaData.ts.html +97 -0
- package/coverage/lcov-report/src/models/batch.ts.html +178 -0
- package/coverage/lcov-report/src/models/batchItem.ts.html +127 -0
- package/coverage/lcov-report/src/models/container.ts.html +232 -0
- package/coverage/lcov-report/src/models/contentDefinitionTypeID.ts.html +142 -0
- package/coverage/lcov-report/src/models/contentItem.ts.html +202 -0
- package/coverage/lcov-report/src/models/contentSectionDefaultModule.ts.html +106 -0
- package/coverage/lcov-report/src/models/contentSectionDefinition.ts.html +196 -0
- package/coverage/lcov-report/src/models/contentViewColumn.ts.html +109 -0
- package/coverage/lcov-report/src/models/exception.ts.html +109 -0
- package/coverage/lcov-report/src/models/index.html +476 -0
- package/coverage/lcov-report/src/models/instanceRole.ts.html +106 -0
- package/coverage/lcov-report/src/models/instanceUser.ts.html +130 -0
- package/coverage/lcov-report/src/models/locales.ts.html +100 -0
- package/coverage/lcov-report/src/models/media.ts.html +178 -0
- package/coverage/lcov-report/src/models/model.ts.html +172 -0
- package/coverage/lcov-report/src/models/notification.ts.html +124 -0
- package/coverage/lcov-report/src/models/options.ts.html +109 -0
- package/coverage/lcov-report/src/models/pageItem.ts.html +268 -0
- package/coverage/lcov-report/src/models/pageModel.ts.html +130 -0
- package/coverage/lcov-report/src/models/sharedModule.ts.html +106 -0
- package/coverage/lcov-report/src/models/sitemap.ts.html +148 -0
- package/coverage/lcov-report/src/models/websiteUser.ts.html +157 -0
- package/coverage/lcov.info +1459 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/src/apiClient.ts.html +199 -0
- package/coverage/src/apiMethods/assetMethods.ts.html +682 -0
- package/coverage/src/apiMethods/batchMethods.ts.html +736 -0
- package/coverage/src/apiMethods/clientInstance.ts.html +403 -0
- package/coverage/src/apiMethods/containerMethods.ts.html +460 -0
- package/coverage/src/apiMethods/contentMethods.ts.html +1183 -0
- package/coverage/src/apiMethods/index.html +266 -0
- package/coverage/src/apiMethods/instanceMethods.ts.html +160 -0
- package/coverage/src/apiMethods/instanceUserMethods.ts.html +268 -0
- package/coverage/src/apiMethods/modelMethods.ts.html +352 -0
- package/coverage/src/apiMethods/pageMethods.ts.html +1276 -0
- package/coverage/src/apiMethods/serverUserMethods.ts.html +196 -0
- package/coverage/src/apiMethods/webhookMethods.ts.html +271 -0
- package/coverage/src/enums/batchItemType.ts.html +106 -0
- package/coverage/src/enums/batchOperationType.ts.html +142 -0
- package/coverage/src/enums/batchState..ts.html +106 -0
- package/coverage/src/enums/index.html +161 -0
- package/coverage/src/enums/workflowOperationType.ts.html +175 -0
- package/coverage/src/index.html +116 -0
- package/coverage/src/models/assetContainer.ts.html +106 -0
- package/coverage/src/models/assetGalleries.ts.html +103 -0
- package/coverage/src/models/assetMediaGrouping.ts.html +136 -0
- package/coverage/src/models/assetMediaGroupingMetaData.ts.html +97 -0
- package/coverage/src/models/batch.ts.html +178 -0
- package/coverage/src/models/batchItem.ts.html +127 -0
- package/coverage/src/models/container.ts.html +232 -0
- package/coverage/src/models/contentDefinitionTypeID.ts.html +142 -0
- package/coverage/src/models/contentItem.ts.html +202 -0
- package/coverage/src/models/contentSectionDefaultModule.ts.html +106 -0
- package/coverage/src/models/contentSectionDefinition.ts.html +196 -0
- package/coverage/src/models/contentViewColumn.ts.html +109 -0
- package/coverage/src/models/exception.ts.html +109 -0
- package/coverage/src/models/index.html +476 -0
- package/coverage/src/models/instanceRole.ts.html +106 -0
- package/coverage/src/models/instanceUser.ts.html +130 -0
- package/coverage/src/models/locales.ts.html +100 -0
- package/coverage/src/models/media.ts.html +178 -0
- package/coverage/src/models/model.ts.html +172 -0
- package/coverage/src/models/notification.ts.html +124 -0
- package/coverage/src/models/options.ts.html +109 -0
- package/coverage/src/models/pageItem.ts.html +268 -0
- package/coverage/src/models/pageModel.ts.html +130 -0
- package/coverage/src/models/sharedModule.ts.html +106 -0
- package/coverage/src/models/sitemap.ts.html +148 -0
- package/coverage/src/models/websiteUser.ts.html +157 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/apiClient.d.ts.map +1 -0
- package/dist/apiClient.js.map +1 -0
- package/dist/apiMethods/assetMethods.d.ts.map +1 -0
- package/dist/apiMethods/assetMethods.js.map +1 -0
- package/dist/apiMethods/batchMethods.d.ts.map +1 -0
- package/dist/apiMethods/batchMethods.js.map +1 -0
- package/dist/apiMethods/clientInstance.d.ts.map +1 -0
- package/dist/apiMethods/clientInstance.js.map +1 -0
- package/dist/apiMethods/containerMethods.d.ts.map +1 -0
- package/dist/apiMethods/containerMethods.js.map +1 -0
- package/dist/apiMethods/contentMethods.d.ts.map +1 -0
- package/dist/apiMethods/contentMethods.js.map +1 -0
- package/dist/apiMethods/instanceMethods.d.ts.map +1 -0
- package/dist/apiMethods/instanceMethods.js.map +1 -0
- package/dist/apiMethods/instanceUserMethods.d.ts.map +1 -0
- package/dist/apiMethods/instanceUserMethods.js.map +1 -0
- package/dist/apiMethods/modelMethods.d.ts.map +1 -0
- package/dist/apiMethods/modelMethods.js.map +1 -0
- package/dist/apiMethods/pageMethods.d.ts +2 -1
- package/dist/apiMethods/pageMethods.d.ts.map +1 -0
- package/dist/apiMethods/pageMethods.js +7 -1
- package/dist/apiMethods/pageMethods.js.map +1 -0
- package/dist/apiMethods/serverUserMethods.d.ts.map +1 -0
- package/dist/apiMethods/serverUserMethods.js.map +1 -0
- package/dist/apiMethods/webhookMethods.d.ts.map +1 -0
- package/dist/apiMethods/webhookMethods.js.map +1 -0
- package/dist/enums/assetGroupingType.d.ts.map +1 -0
- package/dist/enums/assetGroupingType.js.map +1 -0
- package/dist/enums/batchItemType.d.ts.map +1 -0
- package/dist/enums/batchItemType.js.map +1 -0
- package/dist/enums/batchOperationType.d.ts.map +1 -0
- package/dist/enums/batchOperationType.js.map +1 -0
- package/dist/enums/batchState..d.ts.map +1 -0
- package/dist/enums/batchState..js.map +1 -0
- package/dist/enums/pageItemTemplateType.d.ts.map +1 -0
- package/dist/enums/pageItemTemplateType.js.map +1 -0
- package/dist/enums/workflowOperationType.d.ts.map +1 -0
- package/dist/enums/workflowOperationType.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/models/assetContainer.d.ts.map +1 -0
- package/dist/models/assetContainer.js.map +1 -0
- package/dist/models/assetGalleries.d.ts.map +1 -0
- package/dist/models/assetGalleries.js.map +1 -0
- package/dist/models/assetMediaGrouping.d.ts.map +1 -0
- package/dist/models/assetMediaGrouping.js.map +1 -0
- package/dist/models/assetMediaGroupingMetaData.d.ts.map +1 -0
- package/dist/models/assetMediaGroupingMetaData.js.map +1 -0
- package/dist/models/batch.d.ts.map +1 -0
- package/dist/models/batch.js.map +1 -0
- package/dist/models/batchItem.d.ts.map +1 -0
- package/dist/models/batchItem.js.map +1 -0
- package/dist/models/batchTypes.d.ts.map +1 -0
- package/dist/models/batchTypes.js.map +1 -0
- package/dist/models/container.d.ts.map +1 -0
- package/dist/models/container.js.map +1 -0
- package/dist/models/contentDefinitionTypeID.d.ts.map +1 -0
- package/dist/models/contentDefinitionTypeID.js.map +1 -0
- package/dist/models/contentItem.d.ts.map +1 -0
- package/dist/models/contentItem.js.map +1 -0
- package/dist/models/contentItemHistory.d.ts.map +1 -0
- package/dist/models/contentItemHistory.js.map +1 -0
- package/dist/models/contentListFilterModel.d.ts.map +1 -0
- package/dist/models/contentListFilterModel.js.map +1 -0
- package/dist/models/contentSectionDefaultModule.d.ts.map +1 -0
- package/dist/models/contentSectionDefaultModule.js.map +1 -0
- package/dist/models/contentSectionDefinition.d.ts.map +1 -0
- package/dist/models/contentSectionDefinition.js.map +1 -0
- package/dist/models/contentViewColumn.d.ts.map +1 -0
- package/dist/models/contentViewColumn.js.map +1 -0
- package/dist/models/exception.d.ts.map +1 -0
- package/dist/models/exception.js.map +1 -0
- package/dist/models/instanceRole.d.ts.map +1 -0
- package/dist/models/instanceRole.js.map +1 -0
- package/dist/models/instanceUser.d.ts.map +1 -0
- package/dist/models/instanceUser.js.map +1 -0
- package/dist/models/itemComments.d.ts.map +1 -0
- package/dist/models/itemComments.js.map +1 -0
- package/dist/models/listParams.d.ts.map +1 -0
- package/dist/models/listParams.js.map +1 -0
- package/dist/models/locales.d.ts.map +1 -0
- package/dist/models/locales.js.map +1 -0
- package/dist/models/media.d.ts.map +1 -0
- package/dist/models/media.js.map +1 -0
- package/dist/models/model.d.ts.map +1 -0
- package/dist/models/model.js.map +1 -0
- package/dist/models/notification.d.ts.map +1 -0
- package/dist/models/notification.js.map +1 -0
- package/dist/models/options.d.ts.map +1 -0
- package/dist/models/options.js.map +1 -0
- package/dist/models/pageHistory.d.ts.map +1 -0
- package/dist/models/pageHistory.js.map +1 -0
- package/dist/models/pageItem.d.ts.map +1 -0
- package/dist/models/pageItem.js.map +1 -0
- package/dist/models/pageModel.d.ts.map +1 -0
- package/dist/models/pageModel.js.map +1 -0
- package/dist/models/serverUser.d.ts.map +1 -0
- package/dist/models/serverUser.js.map +1 -0
- package/dist/models/sharedModule.d.ts.map +1 -0
- package/dist/models/sharedModule.js.map +1 -0
- package/dist/models/sitemap.d.ts.map +1 -0
- package/dist/models/sitemap.js.map +1 -0
- package/dist/models/webhook.d.ts.map +1 -0
- package/dist/models/webhook.js.map +1 -0
- package/dist/models/websiteListing.d.ts.map +1 -0
- package/dist/models/websiteListing.js.map +1 -0
- package/dist/models/websiteUser.d.ts.map +1 -0
- package/dist/models/websiteUser.js.map +1 -0
- package/docs/asset-methods.md +382 -0
- package/docs/auth-component.md +361 -0
- package/docs/auth.md +594 -0
- package/docs/batch-methods.md +244 -0
- package/docs/cicd.md +607 -0
- package/docs/container-methods.md +268 -0
- package/docs/content-methods.md +423 -0
- package/docs/instance-methods.md +105 -0
- package/docs/instance-user-methods.md +231 -0
- package/docs/model-methods.md +434 -0
- package/docs/multi-instance-operations.md +192 -0
- package/docs/page-methods.md +671 -0
- package/docs/server-user-methods.md +280 -0
- package/docs/webhook-methods.md +452 -0
- 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)
|