UNPKG

@agility/management-sdk

Version:
268 lines (205 loc) 9.31 kB
# 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)