@agility/management-sdk
Version:
Agility CMS Tyescript SDK for Management API.
268 lines (205 loc) • 9.31 kB
Markdown
# Agility CMS & Management API TypeScript SDK
## ContainerMethods
This class provides comprehensive container management operations for organizing and managing content within Agility CMS. Containers are used to group related content items and control access permissions.
**Important Notes:**
- Containers organize content items by their definition types
- Each container has security settings that control user access
- Containers can have notification settings for workflow events
- Reference names must be unique within the instance
- Containers cannot be deleted if they contain content items
### Function List
- [getContainerByID](#getcontainerbyid) - Retrieves a specific container by ID
- [getContainersByModel](#getcontainersbymodel) - Retrieves containers associated with a content model
- [getContainerByReferenceName](#getcontainerbyreferencename) - Retrieves a container by reference name
- [getContainerSecurity](#getcontainersecurity) - Retrieves security settings for a container
- [getContainerList](#getcontainerlist) - Retrieves list of all containers
- [getNotificationList](#getnotificationlist) - Retrieves notification settings for a container
- [saveContainer](#savecontainer) - Creates or updates a container
- [deleteContainer](#deletecontainer) - Deletes a container by ID
---
### getContainerByID
Retrieves a specific container by its unique ID.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | `number` | Yes | The container ID to retrieve |
| `guid` | `string` | Yes | Current website GUID |
**Returns:** `Container` - Container object with complete configuration
**Usage Example:**
```typescript
const container = await apiClient.containerMethods.getContainerByID(123, guid);
console.log('Container name:', container.displayName);
console.log('Reference name:', container.referenceName);
console.log('Model ID:', container.modelId);
```
**Error Handling:**
- Throws `Exception` when container not found
### getContainersByModel
Retrieves all containers associated with a specific content model.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `modelId` | `number` | Yes | The content model ID |
| `guid` | `string` | Yes | Current website GUID |
**Returns:** `Container[]` - Array of containers using the specified model
**Usage Example:**
```typescript
const containers = await apiClient.containerMethods.getContainersByModel(456, guid);
console.log(`Found ${containers.length} containers for this model`);
// Process each container
containers.forEach(container => {
console.log(`Container: ${container.displayName} (${container.referenceName})`);
});
```
**Error Handling:**
- Throws `Exception` when model not found or retrieval fails
### getContainerByReferenceName
Retrieves a container by its reference name. Returns null if the container doesn't exist.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `referenceName` | `string` | Yes | The reference name of the container |
| `guid` | `string` | Yes | Current website GUID |
**Returns:** `Container | null` - Container object or null if not found
**Usage Example:**
```typescript
const container = await apiClient.containerMethods.getContainerByReferenceName('blog-posts', guid);
if (container) {
console.log('Container found:', container.displayName);
console.log('Container ID:', container.id);
} else {
console.log('Container not found');
}
```
**Error Handling:**
- Returns `null` for 404 errors (container not found)
- Throws `Exception` for other errors
### getContainerSecurity
Retrieves the security settings for a specific container.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | `number` | Yes | The container ID |
| `guid` | `string` | Yes | Current website GUID |
**Returns:** `Container` - Container object with security information
**Usage Example:**
```typescript
const security = await apiClient.containerMethods.getContainerSecurity(123, guid);
console.log('Security settings:', security.securitySettings);
// Check if container has specific permissions
if (security.securitySettings) {
console.log('Container has custom security settings');
} else {
console.log('Container uses default security settings');
}
```
**Error Handling:**
- Throws `Exception` when container not found or access denied
### getContainerList
Retrieves a list of all containers in the current website.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `guid` | `string` | Yes | Current website GUID |
**Returns:** `Container[]` - Array of all containers
**Usage Example:**
```typescript
const containers = await apiClient.containerMethods.getContainerList(guid);
console.log(`Total containers: ${containers.length}`);
// Filter by content type
const blogContainers = containers.filter(c => c.referenceName.includes('blog'));
console.log(`Blog-related containers: ${blogContainers.length}`);
// Group by model
const containersByModel = containers.reduce((acc, container) => {
const modelId = container.modelId;
if (!acc[modelId]) acc[modelId] = [];
acc[modelId].push(container);
return acc;
}, {});
```
**Error Handling:**
- Throws `Exception` when retrieval fails
### getNotificationList
Retrieves the notification settings for a specific container.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | `number` | Yes | The container ID |
| `guid` | `string` | Yes | Current website GUID |
**Returns:** `Notification[]` - Array of notification configurations
**Usage Example:**
```typescript
const notifications = await apiClient.containerMethods.getNotificationList(123, guid);
console.log(`Container has ${notifications.length} notification rules`);
notifications.forEach(notification => {
console.log(`Notification: ${notification.name}`);
console.log(`Type: ${notification.type}`);
console.log(`Recipients: ${notification.recipients}`);
});
```
**Error Handling:**
- Throws `Exception` when container not found or access denied
### saveContainer
Creates a new container or updates an existing one.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `container` | `Container` | Yes | Container object to save |
| `guid` | `string` | Yes | Current website GUID |
| `forceReferenceName` | `boolean` | No | Force reference name validation *(Optional, default: false)* |
**Returns:** `Container` - Saved container object with updated metadata
**Usage Example:**
```typescript
// Create a new container
const newContainer = {
referenceName: 'product-reviews',
displayName: 'Product Reviews',
modelId: 789,
isPublicListing: true,
description: 'Container for product review content items'
};
const savedContainer = await apiClient.containerMethods.saveContainer(
newContainer,
guid,
true
);
console.log('Container saved with ID:', savedContainer.id);
// Update existing container
const existingContainer = await apiClient.containerMethods.getContainerByID(123, guid);
existingContainer.displayName = 'Updated Display Name';
const updatedContainer = await apiClient.containerMethods.saveContainer(existingContainer, guid);
```
**Error Handling:**
- Throws `Exception` when validation fails or save operation fails
### deleteContainer
Deletes a container by its ID.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | `number` | Yes | The container ID to delete |
| `guid` | `string` | Yes | Current website GUID |
**Returns:** `string` - Confirmation message of successful deletion
**Usage Example:**
```typescript
try {
const result = await apiClient.containerMethods.deleteContainer(123, guid);
console.log(result); // "Container deleted successfully"
} catch (error) {
if (error.message.includes('contains content')) {
console.log('Cannot delete container: still contains content items');
// Handle by moving or deleting content first
} else {
console.error('Failed to delete container:', error.message);
}
}
```
**Error Handling:**
- Throws `Exception` when container not found, has content, or deletion fails
**Note:** Containers cannot be deleted if they contain content items. Remove all content first.
---
## Navigation
- [← Back to Main Documentation](../README.md)
- [Authentication & Setup](./auth.md)
- [CI/CD & Automated Environments](./cicd.md)
- [AssetMethods](./asset-methods.md)
- [BatchMethods](./batch-methods.md)
- [ContentMethods](./content-methods.md)
- [InstanceMethods](./instance-methods.md)
- [InstanceUserMethods](./instance-user-methods.md)
- [ModelMethods](./model-methods.md)
- [PageMethods](./page-methods.md)
- [ServerUserMethods](./server-user-methods.md)
- [WebhookMethods](./webhook-methods.md)
- [Multi-Instance Operations](./multi-instance-operations.md)