Capabilities Reference
Capabilities control what features CI HUB enables for your adapter — which buttons appear, which actions are allowed, and how the plugin UI behaves. They exist at three levels: integration-wide, per-folder, and per-asset.
Integration-level capabilities
Returned once in the info handler inside capabilities. These are static for the entire connection session.
| Key | Type | UI effect |
|---|---|---|
category | 'DAM' | 'Cloud Filehosting' | 'Stock Provider' | 'Service Provider' | 'Work Management' | 'PIM' | 'Automation' | 'Custom' | Groups the adapter in the connection list |
assetUploadLimitInMB | number | Maximum upload file size. CI HUB rejects files exceeding this before calling createAsset |
enableCustomUpdateFilenames | boolean | When true, allows updating an asset with a file that has a different filename |
directAssetDownload | boolean | When true, the client downloads assets directly from the provider URL without proxying through the server |
directAssetUpload | boolean | When true, files upload directly to the provider instead of through the server |
supportsBrandHub | boolean | When true, shows the Brand Hub tab and calls getBrandConfig/getBrandAssets |
assetHashAlgorithm | 'Md5' | 'Sha1' | 'Sha256Split4MB' | 'Sha256First16MB' | 'Sha256' | 'Sha512' | 'FileAttributes' | 'Crc32' | Hash algorithm for file content checksums. See Download Hashes |
assetSearch | object | false | Search configuration. false disables search entirely |
description | Record<string, string> | Localized description shown in the connection list ({ "en": "...", "de": "..." }) |
uploadWithRelinkOptionEnabled | boolean | Shows the "Upload & Relink" option when placing a local file |
requestHeaders | Record<string, string> | Additional HTTP headers for direct provider requests |
assetComment | boolean | When true, shows a comment field on the upload dialog |
disableDuplicateCheck | boolean | When true, allows uploading even when a file with the same name exists in the target folder |
folderNavigationDisabled | boolean | When true, hides folder navigation — only search is available |
tasking | boolean | When true, enables the Tasks tab and task-related handlers |
restrictSameNameUpdatesOnly | boolean | When true, asset updates are only allowed when the replacement file has the exact same filename |
maxMultipleAssetVersions | number | Maximum assets in a single batch asset versions request |
preferredNavigationMode | 'search' | 'folder' | 'tasks' | Default view when the user connects |
assetSearch sub-options
When assetSearch is an object:
| Key | Type | UI effect |
|---|---|---|
help | Record<string, string> | Localized placeholder text in the search bar |
supportsParentId | boolean | Search can be scoped to a specific folder |
alwaysSearchInFolder | boolean | All searches are scoped to the current folder. Requires supportsParentId: true |
similarSearch | boolean | Enables visual similarity search |
externalUrl | string | Link to external search syntax documentation — shown as a help icon |
autoSearchQuery | string | Default query that runs when search view opens |
canParallelSearch | boolean | Set to false to disable parallel search requests (default true) |
supportsParallelRelink | boolean | Enables multiple concurrent relink operations |
parallelRelinkMax | number | Max concurrent relink operations |
searchByHash | string | Hash algorithm name for hash-based asset search |
Per-folder capabilities
Returned on each folder object in search and getFolder responses. Control what actions are available in the folder context menu.
| Key | Type | Default | UI effect |
|---|---|---|---|
canDeleteFolder | boolean | false | Shows "Delete folder" in context menu |
canAddFolder | boolean | false | Shows "Create folder" button |
canAddAsset | boolean | false | Shows upload button in that folder. In search results, enables uploading without a folder ID |
canRenameFolder | boolean | undefined | Shows "Rename folder" in context menu |
The SDK provides defaultFolderCapabilities with all values set to false:
import { defaultFolderCapabilities } from '@ci-hub/integration-sdk'
const folder = {
id: item.id,
name: item.name,
capabilities: {
...defaultFolderCapabilities,
canAddAsset: item.permissions.includes('upload'),
canAddFolder: item.permissions.includes('create'),
},
}Per-asset capabilities
Returned on each asset object. Control which actions appear in the asset context menu.
| Key | Type | Default | UI effect |
|---|---|---|---|
canDeleteAsset | boolean | false | Shows "Delete" in context menu |
canUpdateAsset | boolean | false | Shows "Update" (replace file) in context menu |
canLockAsset | boolean | false | Shows "Lock" / "Unlock" toggle |
canUnlockAsset | boolean | false | Shows "Unlock" option |
canRenameAsset | boolean | undefined | Shows "Rename" in context menu |
uploadExtensions | string[] | undefined | Restricts which file extensions can be used for updates |
The SDK provides defaultAssetCapabilities with all values set to false:
import { defaultAssetCapabilities } from '@ci-hub/integration-sdk'
const asset = {
id: item.id,
name: item.name,
capabilities: {
...defaultAssetCapabilities,
canUpdateAsset: true,
canDeleteAsset: item.userCanDelete,
},
}Real patterns
Example - some adapters checks per-item permissions from the API:
capabilities: {
...defaultAssetCapabilities,
canDeleteAsset: folderPermissions.canRemoveAsset,
}Example - some adapters disables update/rename for non-file assets:
capabilities: {
...defaultAssetCapabilities,
canUpdateAsset: !isOneNote,
canRenameAsset: !isOneNote,
}See Integration Info for the full info response schema.