@agility/management-sdk 0.1.3 → 0.1.4-beta.1
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-documentation-manifest.md +275 -0
- package/.cursor/api-functions-analysis.md +111 -0
- package/.cursor/docs-final-check.md +269 -0
- package/.cursor/manifest.md +153 -0
- package/.env +92 -0
- package/README.md +219 -352
- package/dist/apiClient.d.ts +86 -0
- package/dist/apiClient.js +229 -0
- package/dist/apiClient.js.map +1 -0
- package/dist/apiMethods/assetMethods.d.ts +28 -6
- package/dist/apiMethods/assetMethods.js +224 -29
- package/dist/apiMethods/assetMethods.js.map +1 -0
- package/dist/apiMethods/authMethods.d.ts +239 -0
- package/dist/apiMethods/authMethods.js +604 -0
- package/dist/apiMethods/batchMethods.d.ts +32 -1
- package/dist/apiMethods/batchMethods.js +241 -11
- package/dist/apiMethods/batchMethods.js.map +1 -0
- package/dist/apiMethods/clientInstance.d.ts +58 -4
- package/dist/apiMethods/clientInstance.js +311 -44
- package/dist/apiMethods/clientInstance.js.map +1 -0
- package/dist/apiMethods/containerMethods.d.ts +15 -7
- package/dist/apiMethods/containerMethods.js +70 -38
- package/dist/apiMethods/containerMethods.js.map +1 -0
- package/dist/apiMethods/contentMethods.d.ts +17 -10
- package/dist/apiMethods/contentMethods.js +169 -70
- package/dist/apiMethods/contentMethods.js.map +1 -0
- package/dist/apiMethods/instanceMethods.d.ts +9 -0
- package/dist/apiMethods/instanceMethods.js +69 -0
- package/dist/apiMethods/instanceMethods.js.map +1 -0
- package/dist/apiMethods/instanceUserMethods.d.ts +3 -3
- package/dist/apiMethods/instanceUserMethods.js +18 -18
- package/dist/apiMethods/instanceUserMethods.js.map +1 -0
- package/dist/apiMethods/modelMethods.d.ts +6 -5
- package/dist/apiMethods/modelMethods.js +46 -26
- package/dist/apiMethods/modelMethods.js.map +1 -0
- package/dist/apiMethods/pageMethods.d.ts +21 -9
- package/dist/apiMethods/pageMethods.js +278 -76
- package/dist/apiMethods/pageMethods.js.map +1 -0
- package/dist/apiMethods/serverUserMethods.d.ts +10 -0
- package/dist/apiMethods/serverUserMethods.js +89 -0
- package/dist/apiMethods/serverUserMethods.js.map +1 -0
- package/dist/apiMethods/webhookMethods.d.ts +12 -0
- package/dist/apiMethods/webhookMethods.js +131 -0
- package/dist/apiMethods/webhookMethods.js.map +1 -0
- package/dist/enums/assetGroupingType.d.ts +3 -0
- package/dist/enums/assetGroupingType.js +7 -0
- package/dist/enums/assetGroupingType.js.map +1 -0
- package/dist/enums/batchItemType.d.ts +7 -0
- package/dist/enums/batchItemType.js +11 -0
- package/dist/enums/batchOperationType.js +1 -1
- package/dist/enums/batchOperationType.js.map +1 -0
- package/dist/enums/batchState..js +1 -1
- package/dist/enums/batchState.d.ts +7 -0
- package/dist/enums/batchState.js +12 -0
- package/dist/enums/batchState.js.map +1 -0
- package/dist/enums/pageItemTemplateType.d.ts +4 -0
- package/dist/enums/pageItemTemplateType.js +8 -0
- package/dist/enums/pageItemTemplateType.js.map +1 -0
- package/dist/enums/workflowOperationType.d.ts +26 -0
- package/dist/enums/workflowOperationType.js +30 -0
- package/dist/errors/exception.d.ts +4 -0
- package/dist/errors/exception.js +11 -0
- package/dist/errors/exception.js.map +1 -0
- package/dist/index.d.ts +41 -9
- package/dist/index.js +48 -10
- package/dist/index.js.map +1 -0
- package/dist/models/assetContainer.d.ts +7 -0
- package/dist/models/assetContainer.js +9 -0
- package/dist/models/assetGalleries.d.ts +5 -0
- package/dist/models/assetGalleries.js +9 -0
- package/dist/models/assetMediaGrouping.d.ts +17 -0
- package/dist/models/assetMediaGrouping.js +9 -0
- package/dist/models/assetMediaGroupingMetaData.d.ts +4 -0
- package/dist/models/assetMediaGroupingMetaData.js +9 -0
- package/dist/models/authTokens.d.ts +73 -0
- package/dist/models/authTokens.js +2 -0
- package/dist/models/batchItem.d.ts +1 -0
- package/dist/models/batchRequests.d.ts +67 -0
- package/dist/models/batchRequests.js +2 -0
- package/dist/models/batchTypes.d.ts +34 -0
- package/dist/models/batchTypes.js +2 -0
- package/dist/models/container.d.ts +2 -1
- package/dist/models/contentDefinitionTypeID.d.ts +17 -0
- package/dist/models/contentDefinitionTypeID.js +21 -0
- package/dist/models/contentItemHistory.d.ts +20 -0
- package/dist/models/contentItemHistory.js +15 -0
- package/dist/models/contentListFilterModel.d.ts +26 -0
- package/dist/models/contentListFilterModel.js +33 -0
- package/dist/models/contentSectionDefaultModule.d.ts +7 -0
- package/dist/models/contentSectionDefaultModule.js +9 -0
- package/dist/models/contentSectionDefinition.d.ts +35 -0
- package/dist/models/contentSectionDefinition.js +9 -0
- package/dist/models/exception.js +2 -0
- package/dist/models/itemComments.d.ts +14 -0
- package/dist/models/itemComments.js +15 -0
- package/dist/models/listParams.d.ts +9 -0
- package/dist/models/listParams.js +16 -0
- package/dist/models/locales.d.ts +3 -0
- package/dist/models/locales.js +30 -0
- package/dist/models/options.d.ts +2 -5
- package/dist/models/options.js +0 -19
- package/dist/models/pageHistory.d.ts +21 -0
- package/dist/models/pageHistory.js +15 -0
- package/dist/models/pageModel.d.ts +14 -0
- package/dist/models/pageModel.js +9 -0
- package/dist/models/serverUser.d.ts +21 -0
- package/dist/models/serverUser.js +9 -0
- package/dist/models/sharedModule.d.ts +7 -0
- package/dist/models/sharedModule.js +9 -0
- package/dist/models/webhook.d.ts +9 -0
- package/dist/models/webhook.js +9 -0
- package/dist/models/websiteListing.d.ts +16 -0
- package/dist/models/websiteListing.js +9 -0
- package/dist/tests/authHelper.d.ts +2 -0
- package/dist/tests/authHelper.js +14 -0
- package/dist/tests/authHelper.js.map +1 -0
- package/dist/tests/config/apiClient.config.d.ts +16 -0
- package/dist/tests/config/apiClient.config.js +84 -0
- package/dist/tests/config/apiClient.config.js.map +1 -0
- package/dist/tests/config/test.config.d.ts +24 -0
- package/dist/tests/config/test.config.js +47 -0
- package/dist/tests/config/test.config.js.map +1 -0
- package/dist/tokenStorage.d.ts +72 -0
- package/dist/tokenStorage.js +366 -0
- package/dist/types/apiResponse.d.ts +13 -0
- package/dist/types/apiResponse.js +3 -0
- package/dist/types/apiResponse.js.map +1 -0
- package/dist/types/assetContainer.d.ts +7 -0
- package/dist/types/assetContainer.js +3 -0
- package/dist/types/assetContainer.js.map +1 -0
- package/dist/types/assetGalleries.d.ts +5 -0
- package/dist/types/assetGalleries.js +3 -0
- package/dist/types/assetGalleries.js.map +1 -0
- package/dist/types/assetMediaGrouping.d.ts +17 -0
- package/dist/types/assetMediaGrouping.js +3 -0
- package/dist/types/assetMediaGrouping.js.map +1 -0
- package/dist/types/assetMediaGroupingMetaData.d.ts +4 -0
- package/dist/types/assetMediaGroupingMetaData.js +3 -0
- package/dist/types/assetMediaGroupingMetaData.js.map +1 -0
- package/dist/types/batch.d.ts +29 -0
- package/dist/types/batch.js +3 -0
- package/dist/types/batch.js.map +1 -0
- package/dist/types/batchItem.d.ts +13 -0
- package/dist/types/batchItem.js +3 -0
- package/dist/types/batchItem.js.map +1 -0
- package/dist/types/container.d.ts +47 -0
- package/dist/types/container.js +3 -0
- package/dist/types/container.js.map +1 -0
- package/dist/types/contentItem.d.ts +37 -0
- package/dist/types/contentItem.js +3 -0
- package/dist/types/contentItem.js.map +1 -0
- package/dist/types/contentItemHistory.d.ts +20 -0
- package/dist/types/contentItemHistory.js +3 -0
- package/dist/types/contentItemHistory.js.map +1 -0
- package/dist/types/contentListFilterModel.d.ts +26 -0
- package/dist/types/contentListFilterModel.js +3 -0
- package/dist/types/contentListFilterModel.js.map +1 -0
- package/dist/types/contentSectionDefaultModule.d.ts +7 -0
- package/dist/types/contentSectionDefaultModule.js +3 -0
- package/dist/types/contentSectionDefaultModule.js.map +1 -0
- package/dist/types/contentSectionDefinition.d.ts +35 -0
- package/dist/types/contentSectionDefinition.js +3 -0
- package/dist/types/contentSectionDefinition.js.map +1 -0
- package/dist/types/contentViewColumn.d.ts +8 -0
- package/dist/types/contentViewColumn.js +3 -0
- package/dist/types/contentViewColumn.js.map +1 -0
- package/dist/types/instanceRole.d.ts +7 -0
- package/dist/types/instanceRole.js +3 -0
- package/dist/types/instanceRole.js.map +1 -0
- package/dist/types/instanceUser.d.ts +14 -0
- package/dist/types/instanceUser.js +3 -0
- package/dist/types/instanceUser.js.map +1 -0
- package/dist/types/itemComments.d.ts +14 -0
- package/dist/types/itemComments.js +3 -0
- package/dist/types/itemComments.js.map +1 -0
- package/dist/types/listParams.d.ts +9 -0
- package/dist/types/listParams.js +3 -0
- package/dist/types/listParams.js.map +1 -0
- package/dist/types/locales.d.ts +1 -0
- package/dist/types/locales.js +3 -0
- package/dist/types/locales.js.map +1 -0
- package/dist/types/media.d.ts +30 -0
- package/dist/types/media.js +3 -0
- package/dist/types/media.js.map +1 -0
- package/dist/types/model.d.ts +30 -0
- package/dist/types/model.js +3 -0
- package/dist/types/model.js.map +1 -0
- package/dist/types/notification.d.ts +13 -0
- package/dist/types/notification.js +3 -0
- package/dist/types/notification.js.map +1 -0
- package/dist/types/options.d.ts +7 -0
- package/dist/types/options.js +3 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/pageHistory.d.ts +21 -0
- package/dist/types/pageHistory.js +3 -0
- package/dist/types/pageHistory.js.map +1 -0
- package/dist/types/pageItem.d.ts +56 -0
- package/dist/types/pageItem.js +3 -0
- package/dist/types/pageItem.js.map +1 -0
- package/dist/types/pageModel.d.ts +14 -0
- package/dist/types/pageModel.js +3 -0
- package/dist/types/pageModel.js.map +1 -0
- package/dist/types/serverUser.d.ts +21 -0
- package/dist/types/serverUser.js +3 -0
- package/dist/types/serverUser.js.map +1 -0
- package/dist/types/sharedModule.d.ts +7 -0
- package/dist/types/sharedModule.js +3 -0
- package/dist/types/sharedModule.js.map +1 -0
- package/dist/types/sitemap.d.ts +20 -0
- package/dist/types/sitemap.js +3 -0
- package/dist/types/sitemap.js.map +1 -0
- package/dist/types/tokenResponseData.d.ts +10 -0
- package/dist/types/tokenResponseData.js +3 -0
- package/dist/types/tokenResponseData.js.map +1 -0
- package/dist/types/webhook.d.ts +9 -0
- package/dist/types/webhook.js +3 -0
- package/dist/types/webhook.js.map +1 -0
- package/dist/types/websiteListing.d.ts +16 -0
- package/dist/types/websiteListing.js +3 -0
- package/dist/types/websiteListing.js.map +1 -0
- package/dist/types/websiteUser.d.ts +22 -0
- package/dist/types/websiteUser.js +3 -0
- package/dist/types/websiteUser.js.map +1 -0
- package/docs/asset-methods.md +382 -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 +14 -10
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# Agility CMS & Management API TypeScript SDK
|
|
2
|
+
|
|
3
|
+
## ServerUserMethods
|
|
4
|
+
|
|
5
|
+
This class provides server-level user management operations for Agility CMS. These methods handle user accounts at the server level, which is different from instance-level users and provides broader administrative capabilities.
|
|
6
|
+
|
|
7
|
+
**Important Notes:**
|
|
8
|
+
- Server user methods typically require server-level administrative privileges
|
|
9
|
+
- These operations affect user accounts across multiple instances
|
|
10
|
+
- Server users have elevated permissions compared to instance users
|
|
11
|
+
- Server user management is typically used for system administration
|
|
12
|
+
- Changes to server users may affect access to multiple instances
|
|
13
|
+
|
|
14
|
+
### Function List
|
|
15
|
+
- [me](#me) - Retrieves current server user information
|
|
16
|
+
- [you](#you) - Retrieves specific server user information
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
### me
|
|
21
|
+
|
|
22
|
+
Retrieves current authenticated server user information.
|
|
23
|
+
|
|
24
|
+
| Parameter | Type | Required | Description |
|
|
25
|
+
|-----------|------|----------|-------------|
|
|
26
|
+
| `guid` | `string` | Yes | Current website GUID |
|
|
27
|
+
|
|
28
|
+
**Returns:** `ServerUser` - Complete server user object with roles and permissions
|
|
29
|
+
|
|
30
|
+
**Usage Example:**
|
|
31
|
+
```typescript
|
|
32
|
+
const serverUser = await apiClient.serverUserMethods.me(guid);
|
|
33
|
+
console.log(`Server User: ${serverUser.firstName} ${serverUser.lastName}`);
|
|
34
|
+
console.log(`Email: ${serverUser.emailAddress}`);
|
|
35
|
+
console.log(`Role: ${serverUser.roleName}`);
|
|
36
|
+
console.log(`Status: ${serverUser.isActive ? 'Active' : 'Inactive'}`);
|
|
37
|
+
console.log(`Last Login: ${serverUser.lastLoginDate}`);
|
|
38
|
+
console.log(`Created: ${serverUser.createdDate}`);
|
|
39
|
+
|
|
40
|
+
// Check server-level permissions
|
|
41
|
+
if (serverUser.permissions && serverUser.permissions.length > 0) {
|
|
42
|
+
console.log('Server permissions:');
|
|
43
|
+
serverUser.permissions.forEach(permission => {
|
|
44
|
+
console.log(` - ${permission}`);
|
|
45
|
+
});
|
|
46
|
+
} else {
|
|
47
|
+
console.log('User has no specific server permissions assigned');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Check if user is a server administrator
|
|
51
|
+
const isServerAdmin = serverUser.roleName === 'Server Administrator' ||
|
|
52
|
+
serverUser.roleName === 'System Administrator';
|
|
53
|
+
console.log(`Is Server Administrator: ${isServerAdmin}`);
|
|
54
|
+
|
|
55
|
+
// Display instance access
|
|
56
|
+
if (serverUser.instanceAccess && serverUser.instanceAccess.length > 0) {
|
|
57
|
+
console.log('Instance access:');
|
|
58
|
+
serverUser.instanceAccess.forEach(access => {
|
|
59
|
+
console.log(` - Instance: ${access.instanceName} (${access.role})`);
|
|
60
|
+
});
|
|
61
|
+
} else {
|
|
62
|
+
console.log('User has no instance access assigned');
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Response Properties:**
|
|
67
|
+
The `ServerUser` object includes:
|
|
68
|
+
- `userID`: Unique identifier for the server user
|
|
69
|
+
- `firstName`: User's first name
|
|
70
|
+
- `lastName`: User's last name
|
|
71
|
+
- `emailAddress`: User's email address
|
|
72
|
+
- `roleName`: The user's server-level role
|
|
73
|
+
- `isActive`: Whether the user account is active
|
|
74
|
+
- `lastLoginDate`: Date of the user's last login
|
|
75
|
+
- `createdDate`: Date the user account was created
|
|
76
|
+
- `permissions`: Array of server-level permissions
|
|
77
|
+
- `instanceAccess`: Array of instance access configurations
|
|
78
|
+
|
|
79
|
+
**Server User Roles:**
|
|
80
|
+
Common server-level roles include:
|
|
81
|
+
- `Server Administrator`: Full server-level access
|
|
82
|
+
- `System Administrator`: Complete system control
|
|
83
|
+
- `Instance Manager`: Can manage multiple instances
|
|
84
|
+
- `Support User`: Limited access for support purposes
|
|
85
|
+
|
|
86
|
+
**Error Handling:**
|
|
87
|
+
- Throws `Exception` when server user not found
|
|
88
|
+
- Throws `Exception` when insufficient permissions to view server user details
|
|
89
|
+
|
|
90
|
+
### you
|
|
91
|
+
|
|
92
|
+
Retrieves specific server user information by server user ID.
|
|
93
|
+
|
|
94
|
+
| Parameter | Type | Required | Description |
|
|
95
|
+
|-----------|------|----------|-------------|
|
|
96
|
+
| `guid` | `string` | Yes | Current website GUID |
|
|
97
|
+
| `serverUserID` | `number` | Yes | The server user ID to retrieve |
|
|
98
|
+
|
|
99
|
+
**Returns:** `any` - Server user information and data
|
|
100
|
+
|
|
101
|
+
**Usage Example:**
|
|
102
|
+
```typescript
|
|
103
|
+
// Create a new server user
|
|
104
|
+
const newServerUser = {
|
|
105
|
+
firstName: 'John',
|
|
106
|
+
lastName: 'Admin',
|
|
107
|
+
emailAddress: 'john.admin@company.com',
|
|
108
|
+
roleName: 'Server Administrator',
|
|
109
|
+
isActive: true,
|
|
110
|
+
password: 'SecureServerPassword123!', // Only required for new users
|
|
111
|
+
permissions: [
|
|
112
|
+
'server.read',
|
|
113
|
+
'server.write',
|
|
114
|
+
'instance.create',
|
|
115
|
+
'instance.manage'
|
|
116
|
+
],
|
|
117
|
+
instanceAccess: [
|
|
118
|
+
{
|
|
119
|
+
instanceGUID: 'instance-guid-1',
|
|
120
|
+
instanceName: 'Production Instance',
|
|
121
|
+
role: 'Administrator'
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
instanceGUID: 'instance-guid-2',
|
|
125
|
+
instanceName: 'Staging Instance',
|
|
126
|
+
role: 'Editor'
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
const savedServerUser = await apiClient.serverUserMethods.saveServerUser(
|
|
132
|
+
newServerUser,
|
|
133
|
+
guid
|
|
134
|
+
);
|
|
135
|
+
console.log('Server user created with ID:', savedServerUser.userID);
|
|
136
|
+
|
|
137
|
+
// Update existing server user
|
|
138
|
+
const existingServerUser = await apiClient.serverUserMethods.getServerUser(123, guid);
|
|
139
|
+
existingServerUser.firstName = 'Jane';
|
|
140
|
+
existingServerUser.roleName = 'Instance Manager';
|
|
141
|
+
existingServerUser.isActive = true;
|
|
142
|
+
|
|
143
|
+
// Add new instance access
|
|
144
|
+
existingServerUser.instanceAccess.push({
|
|
145
|
+
instanceGUID: 'new-instance-guid',
|
|
146
|
+
instanceName: 'New Instance',
|
|
147
|
+
role: 'Publisher'
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
const updatedServerUser = await apiClient.serverUserMethods.saveServerUser(
|
|
151
|
+
existingServerUser,
|
|
152
|
+
guid
|
|
153
|
+
);
|
|
154
|
+
console.log('Server user updated:', updatedServerUser.emailAddress);
|
|
155
|
+
|
|
156
|
+
// Grant server-level permissions
|
|
157
|
+
const grantServerPermissions = async (userID, permissions) => {
|
|
158
|
+
const user = await apiClient.serverUserMethods.getServerUser(userID, guid);
|
|
159
|
+
user.permissions = [...new Set([...user.permissions, ...permissions])];
|
|
160
|
+
return await apiClient.serverUserMethods.saveServerUser(user, guid);
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// Promote user to server administrator
|
|
164
|
+
const promoteToServerAdmin = async (userID) => {
|
|
165
|
+
const user = await apiClient.serverUserMethods.getServerUser(userID, guid);
|
|
166
|
+
user.roleName = 'Server Administrator';
|
|
167
|
+
user.permissions = [
|
|
168
|
+
'server.read',
|
|
169
|
+
'server.write',
|
|
170
|
+
'instance.create',
|
|
171
|
+
'instance.manage',
|
|
172
|
+
'user.manage'
|
|
173
|
+
];
|
|
174
|
+
return await apiClient.serverUserMethods.saveServerUser(user, guid);
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
// Manage instance access
|
|
178
|
+
const updateInstanceAccess = async (userID, instanceGUID, role) => {
|
|
179
|
+
const user = await apiClient.serverUserMethods.getServerUser(userID, guid);
|
|
180
|
+
|
|
181
|
+
// Find existing access or create new
|
|
182
|
+
const existingAccess = user.instanceAccess.find(
|
|
183
|
+
access => access.instanceGUID === instanceGUID
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
if (existingAccess) {
|
|
187
|
+
existingAccess.role = role;
|
|
188
|
+
} else {
|
|
189
|
+
user.instanceAccess.push({
|
|
190
|
+
instanceGUID: instanceGUID,
|
|
191
|
+
instanceName: 'Instance Name', // You'd get this from instance details
|
|
192
|
+
role: role
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
return await apiClient.serverUserMethods.saveServerUser(user, guid);
|
|
197
|
+
};
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Server User Structure:**
|
|
201
|
+
```typescript
|
|
202
|
+
interface ServerUser {
|
|
203
|
+
userID?: number; // Auto-generated for new users
|
|
204
|
+
firstName: string; // User's first name (required)
|
|
205
|
+
lastName: string; // User's last name (required)
|
|
206
|
+
emailAddress: string; // User's email address (required, unique)
|
|
207
|
+
roleName: string; // Server-level role (required)
|
|
208
|
+
isActive: boolean; // Whether the account is active
|
|
209
|
+
password?: string; // Required for new users only
|
|
210
|
+
permissions: string[]; // Array of server-level permissions
|
|
211
|
+
instanceAccess: InstanceAccess[]; // Array of instance access configurations
|
|
212
|
+
lastLoginDate?: string; // Auto-generated
|
|
213
|
+
createdDate?: string; // Auto-generated
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
interface InstanceAccess {
|
|
217
|
+
instanceGUID: string; // Instance identifier
|
|
218
|
+
instanceName: string; // Human-readable instance name
|
|
219
|
+
role: string; // Role within that instance
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Server-Level Permissions:**
|
|
224
|
+
Common server permissions include:
|
|
225
|
+
- `server.read`: Read server configuration
|
|
226
|
+
- `server.write`: Modify server configuration
|
|
227
|
+
- `instance.create`: Create new instances
|
|
228
|
+
- `instance.manage`: Manage existing instances
|
|
229
|
+
- `user.manage`: Manage server users
|
|
230
|
+
- `system.admin`: Full system administration
|
|
231
|
+
|
|
232
|
+
**Instance Access Configuration:**
|
|
233
|
+
- Each server user can have access to multiple instances
|
|
234
|
+
- Access is granted with specific roles per instance
|
|
235
|
+
- Instance access can be managed independently of server-level permissions
|
|
236
|
+
- Common instance roles: Administrator, Editor, Publisher, Contributor
|
|
237
|
+
|
|
238
|
+
**Validation Rules:**
|
|
239
|
+
- `emailAddress` must be unique across all server users
|
|
240
|
+
- `password` is required for new users (not needed for updates)
|
|
241
|
+
- `firstName` and `lastName` are required
|
|
242
|
+
- `roleName` must be a valid server-level role
|
|
243
|
+
- `instanceAccess` entries must reference valid instances
|
|
244
|
+
|
|
245
|
+
**Error Handling:**
|
|
246
|
+
- Throws `Exception` when validation fails (duplicate email, invalid role, etc.)
|
|
247
|
+
- Throws `Exception` when save operation fails
|
|
248
|
+
- Throws `Exception` when insufficient permissions to create/update server users
|
|
249
|
+
- Throws `Exception` when instance access references invalid instances
|
|
250
|
+
|
|
251
|
+
**Security Considerations:**
|
|
252
|
+
- Server user operations require the highest level of permissions
|
|
253
|
+
- Changes to server users can affect multiple instances
|
|
254
|
+
- Always validate instance access before granting permissions
|
|
255
|
+
- Consider using role-based access control for server users
|
|
256
|
+
- Monitor server user activity for security compliance
|
|
257
|
+
|
|
258
|
+
**Best Practices:**
|
|
259
|
+
- Use principle of least privilege when assigning server permissions
|
|
260
|
+
- Regularly review and audit server user accounts
|
|
261
|
+
- Implement strong password policies for server users
|
|
262
|
+
- Deactivate unused server user accounts
|
|
263
|
+
- Log all server user management activities
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Navigation
|
|
268
|
+
- [← Back to Main Documentation](../README.md)
|
|
269
|
+
- [Authentication & Setup](./auth.md)
|
|
270
|
+
- [Multi-Instance Operations](./multi-instance-operations.md)
|
|
271
|
+
- [AssetMethods](./asset-methods.md)
|
|
272
|
+
- [BatchMethods](./batch-methods.md)
|
|
273
|
+
- [ContainerMethods](./container-methods.md)
|
|
274
|
+
- [ContentMethods](./content-methods.md)
|
|
275
|
+
- [InstanceMethods](./instance-methods.md)
|
|
276
|
+
- [InstanceUserMethods](./instance-user-methods.md)
|
|
277
|
+
- [ModelMethods](./model-methods.md)
|
|
278
|
+
- [PageMethods](./page-methods.md)
|
|
279
|
+
- **ServerUserMethods** *(current)*
|
|
280
|
+
- [WebhookMethods](./webhook-methods.md)
|