Optionalargs: { client?: Client; key?: string }Create a new folder.
This endpoint creates a folder or folder hierarchy under a specified parent container, which may be a Project
or another Folder. The client must supply either a name (for single folder creation) or a path (for hierarchy creation).
Create a new project.
This endpoint creates a new CC Project within the organization's ESM shared storage, provided the user has the necessary permissions.
Delete file by ID
This endpoint deletes(soft deletion) or permanently deletes(hard deletion) an existing file, identified by its assetId, from the organization’s ESM shared storage.
NOTE:
- In order to perform hard delete, the file must be in DELETED state.
- The requester must have sufficient permissions to perform destructive actions on the file.
- If the file is not found or access is denied, appropriate error responses will be returned.
Delete folder by ID
This endpoint deletes(soft deletion) or permanently deletes(hard deletion) an existing folder, identified by its assetId, along with
all its descendant assets, from the organization’s ESM shared storage.
NOTE:
- In order to perform hard deletion, the folder must be in DELETED state.
- The requester must have sufficient permission to perform destructive actions on the folder.
- If the folder is not found or access is denied, appropriate error responses will be returned.
Delete project by ID
This endpoint deletes(soft deletion) or permanently deletes(hard deletion) an existing CC Project, identified by its assetId, along with
all its descendant assets, from the organization’s ESM shared storage.
NOTE:
- In order to perform hard deletion, the project must be in DELETED state.
- The requester must have sufficient permission to perform destructive actions on the project.
- If the project is not found or access is denied, appropriate error responses will be returned.
Range Based Download of a file through a Pre-signed URL
This endpoint returns metadata and pre-signed URLs that can be used to download large files in chunks using range-based access.
The response includes the following:
NOTE:
- The pre-signed URL is valid for a limited time and must be used within that timeframe.
- The requester must have at least read-level access to the file.
Finalize a block based file replacement job
This endpoint finalizes the block replacement process by initiating an asynchronous job that will merge all uploaded
blocks and replace the existing file's content. The file's assetId, permissions, and metadata are preserved.
NOTE:
Validation and Behavior for Finalize (Block-Based Replacement)
The following rules govern how the server interprets the finalization request for a block-based replacement:
File Size in Initialization
- The size provided during the initiate request is treated as an estimate, not a strict validation boundary.
- Clients are not penalized if the actual uploaded content size differs from the declared size.
- In future, clients will be able to extend block sets if their initial estimate is too low (see Future Enhancements).
Skipped Blocks
- Clients are allowed to skip any block from the original transferLinks list, as long as part numbers remain ordered and are accurately reported in the
usedTransferLinksarray during finalize.- Skipped parts should simply be omitted from
usedTransferLinks.
Finalization is based on:
- The used part numbers explicitly listed in the
usedTransferLinksarray.- The server will stitch together content in the order of these part numbers.
- Any parts not listed will be ignored even if data was uploaded to them.
Finalize a block based file upload job
This endpoint finalizes the block upload process by initiating an asynchronous job that will merge all uploaded blocks and creates the final file asset. In case of asynchronous operation success, the asset field will contain the newly created file's metadata as defined by File Schema.
NOTE:
Validation and Behavior for Finalize (Block-Based Upload)
The following rules govern how the server interprets the finalization request for a block-based upload:
File Size in Initialization
- The size provided during the initiate request is treated as an estimate, not a strict validation boundary.
- Clients are not penalized if the actual uploaded content size differs from the declared size.
- In future, clients will be able to extend block sets if their initial estimate is too low (see Future Enhancements).
Skipped Blocks
- Clients are allowed to skip any block from the original transferLinks list, as long as part numbers remain ordered and are accurately reported in the
usedTransferLinksarray during finalize.- Skipped parts should simply be omitted from
usedTransferLinks.
Finalization is based on:
- The used part numbers explicitly listed in the
usedTransferLinksarray.- The server will stitch together content in the order of these part numbers.
- Any parts not listed will be ignored even if data was uploaded to them.
Get a file by ID
This endpoint retrieves full metadata for a specific File identified by its assetId. This includes file attributes such as name, type, creation details, and permissions.
NOTE:
- The file must exist and the requester must have at least read-level access.
- If the file is not found or access is denied, appropriate error responses will be returned.
- Discarded files can be retrieved using this endpoint.
- If the file exists, but the requester does not have the requisite permissions:
- The API will behave as if the file does not exist.
- It will return a 404 Not Found response, even though the asset technically exists in the system.
Get User's Effective Permissions for a File
The endpoint retrieves the effective permission (role) assigned to the user for a specific file,
identified by its assetId. It evaluates the users access based on:
orgEverybody or group-based access rules.Get an image rendition of a file by ID
This endpoint returns an image rendition of the specified file, suitable for display in previews, thumbnails, or alternate resolution downloads.
NOTE:
- The file must exist and the requester must have at least read-level access.
- If the file is not found or access is denied, appropriate error responses will be returned.
- Image renditions of discarded files can be retrieved using this endpoint.
- If the file exists, but the requester does not have the requisite permissions:
- The API will behave as if the file does not exist.
- It will return a 404 Not Found response, even though the asset technically exists in the system.
Get All roles for a File
This endpoint is deprecated and will be removed on 3/31/2025. Please use the /files/{assetId}/roles endpoint instead.
The endpoint retrieves the explicit roles assigned to all users and groups for a specific file,
identified by its assetId. This includes only the direct access control entries defined on the file itself
and does not include any roles that are inherited from parent folders or the containing project.
NOTE:
- The response lists all users and groups that have direct access to the file, along with their respective roles (e.g., comment, edit).
- This data is useful for auditing and role management but does not represent the full effective access unless inheritance is also considered.
- The file must exist and the requester must have at least read-level access. If the file is not found or access is denied, appropriate error responses will be returned.
Get All roles for a File
The endpoint retrieves the explicit roles assigned to all users and groups for a specific file,
identified by its assetId. This includes only the direct access control entries defined on the file itself
and does not include any roles that are inherited from parent folders or the containing project.
NOTE:
- The response lists all users and groups that have direct access to the file, along with their respective roles (e.g., comment, edit).
- This data is useful for auditing and role management but does not represent the full effective access unless inheritance is also considered.
- The file must exist and the requester must have at least read-level access. If the file is not found or access is denied, appropriate error responses will be returned.
Get a folder by ID
This endpoint retrieves full metadata for a specific Folder identified by its assetId. This includes folder attributes such as name, type, creation details, and permissions.
NOTE:
- The folder must exist and the requester must have at least read-level access.
- If the folder is not found or access is denied, appropriate error responses will be returned.
- Discarded folders can be retrieved using this endpoint.
- If the folder exists, but the requester does not have the requisite permissions:
- The API will behave as if the folder does not exist.
- It will return a 404 Not Found response, even though the asset technically exists in the system.
Get Paginated List of Children of a Folder
This endpoint retrieves a paginated list of top-level assets (folders, files, or other resources) contained within
a specified folder, identified by its assetId. This allows clients to explore the immediate children of the
folder, supporting use cases like folder browsing and navigation.
The response includes all assets that the requester is authorized to view — regardless of asset type — excluding any that are hidden or discarded. Each item in the list contains basic metadata about the asset such as name, type, path, and identifiers.
NOTE:
- The response supports cursor-based pagination and includes a
nextUrlfield when additional pages are available.- If there are no further results, the
nextUrlfield is omitted.- The requester must have at least read-level access to the folder.
- Assets are returned with basic metadata such as name, type, and hierarchy position.
Get User's Effective Permissions for a Folder
The endpoint retrieves the effective permission (role) assigned to the user for a specific folder,
identified by its assetId. It evaluates the users access based on:
orgEverybody or group-based access rules.Get the status of an asynchronous job
This endpoint retrieves the current status of an asynchronous job identified by its jobId.
NOTE:
- The job must exist.
- If the job is not found, appropriate error responses will be returned.
- The job status is updated periodically, and the client should poll this endpoint to get the latest status, based on the retry-after header.
Get a project by ID
This endpoint retrieves full metadata for a specific Project identified by its assetId. This includes project attributes such as name, type, creation details, and permissions.
NOTE:
- The project must exist and the requester must have at least read-level access.
- If the project is not found or access is denied, appropriate error responses will be returned.
- Discarded projects can be retrieved using this endpoint.
- If the project exists, but the requester does not have the requisite permissions:
- The API will behave as if the project does not exist.
- It will return a 404 Not Found response, even though the asset technically exists in the system.
Get Paginated List of Children of a Project
This endpoint retrieves a paginated list of top-level assets (folders, files, or other resources) contained within
a specified project, identified by its assetId. This allows clients to explore the immediate children of the
project, supporting use cases like project browsing and navigation.
The response includes all assets that the requester is authorized to view — regardless of asset type — excluding any that are hidden or discarded. Each item in the list contains basic metadata about the asset such as name, type, path, and identifiers.
NOTE:
- The response supports cursor-based pagination and includes a
nextUrlfield when additional pages are available.- If there are no further results, the
nextUrlfield is omitted.- The requester must have at least read-level access to the project.
- Assets are returned with basic metadata such as name, type, and hierarchy position.
Get User's Effective Permissions for a Project
The endpoint retrieves the effective permission (role) assigned to the user for a specific project,
identified by its assetId. It evaluates the users access based on:
orgEverybody or group-based access rules.Get All roles for a Project
This endpoint is deprecated and will be removed on 3/31/2025. Please use the /projects/{assetId}/roles endpoint instead.
The endpoint retrieves the explicit roles assigned to all users and groups for a specific project,
identified by its assetId. This includes only the direct access control entries defined on the project itself
and does not include any roles that are inherited from parent folders or collections.
NOTE:
- The response lists all users and groups that have direct access to the project, along with their respective roles (e.g., comment, edit).
- This data is useful for auditing and role management but does not represent the full effective access unless inheritance is also considered.
- The project must exist and the requester must have at least read-level access. If the project is not found or access is denied, appropriate error responses will be returned.
Get All roles for a Project
The endpoint retrieves the explicit roles assigned to all users and groups for a specific project,
identified by its assetId. This includes only the direct access control entries defined on the project itself
and does not include any roles that are inherited from parent folders or collections.
NOTE:
- The response lists all users and groups that have direct access to the project, along with their respective roles (e.g., comment, edit).
- This data is useful for auditing and role management but does not represent the full effective access unless inheritance is also considered.
- The project must exist and the requester must have at least read-level access. If the project is not found or access is denied, appropriate error responses will be returned.
Get Paginated List of Projects
This endpoint returns a paginated list of all Projects within the organization's ESM shared storage that the requester is authorized to access.
NOTE:
- Includes only CC Projects.
- The response supports cursor-based pagination and includes a
nextUrlfield when additional pages are available.- If there are no further results, the
nextUrlfield is omitted.- Each item in the response provides basic metadata about the project.
Optionaloptions: Options<GetProjectsData, ThrowOnError>Initialize a block based file replacement job
Initializes a block based replacement job for an existing file. The init response provides a set of pre-signed URLs for uploading individual blocks, transferred over separate requests. Once the replacement file content is uploaded, the finalize endpoint is called to finalize the replacement.
The file's assetId, permissions, and metadata are preserved while the content is replaced.
NOTE: For files 10 MB or larger, direct replacement is not supported. Clients must use this block-based replacement workflow. block-based transfer is allowed for any size
Client sends a POST request to initiate the block replacement and receives a response with URLs for uploading individual blocks and finalizing the transfer.
Client issues PUT requests to the provided Block Transfer URLs, sending file data in chunks. These can be uploaded in parallel.
NOTE: ####Uploading File Blocks After receiving
transferLinks, clients can use them to upload individual blocks: PUT
- Authorization Header: Must NOT be included in the request.
- Success Response: 200 OK indicates successful block upload.
- Expiration Handling: Each upload session is time-bound. If blocks are not uploaded within the specified expiration window (urlExpirationDate field from the initiation response), the operation may fail.
- Always check and respect the urlExpirationDate timestamp in the response from the Block Upload Init endpoint.
After all blocks are uploaded, the client calls the Block Finalize URL to trigger the replacement.
Finalize operation's response includes a Monitor URL to check the final status.
This endpoint allows clients to initiate the replacement of an existing file's content using block-based transfer.
NOTE:
- The expiration duration of transfer URLs is explicitly provided to the client in the response
- The Content-Type must match the existing file's media type. Attempting to change the content type will result in a 415 Unsupported Media Type error.
Initialize a block based file upload job
This, along with the set of related APIs enables the upload of large files by splitting the content into multiple blocks, transferred over separate requests. This method is ideal for files larger than 10 MB, offering parallelism, resumability, and efficient error recovery.
NOTE: For files 10 MB or larger, direct upload is not supported. Clients must use this block-based upload workflow. block-based transfer is allowed for any size
Client sends a POST request to initiate the block upload and receives a response with URLs for uploading individual blocks and finalizing the transfer.
Client issues PUT requests to the provided Block Transfer URLs, sending file data in chunks. These can be uploaded in parallel.
NOTE: ####Uploading File Blocks After receiving
transferLinks, clients can use them to upload individual blocks: PUT
- Authorization Header: Must NOT be included in the request.
- Success Response: 200 OK indicates successful block upload.
- Expiration Handling: Each upload session is time-bound. If blocks are not uploaded within the specified expiration window (urlExpirationDate field from the initiation response), the operation may fail.
- Always check and respect the urlExpirationDate timestamp in the response from the Block Upload Init endpoint.
After all blocks are uploaded, the client calls the Block Finalize URL to trigger the upload to the destination location.
Finalize operation's response includes a Monitor URL to check the final status.
This endpoint allows clients to initiate the creation of a new file using block-based transfer.
NOTE: The expiration duration of transfer URLs is explicitly provided to the client in the response
Move a file to a new location.
This endpoint performs an asynchronous move of an existing file asset, identified by its assetId, into another
folder or project. The operation requires the requester to have, at minimum, the following roles:
| Location | Role(s) |
|---|---|
| Source | comment |
| Source's parent | edit |
| Target | edit |
NOTE:
- If the requester lacks the required roles or the file does not exist, an appropriate error response will be returned.
Patch Roles for a File
This endpoint is deprecated and will be removed on 3/31/2025. Please use the /files/{assetId}/roles endpoint instead.
This endpoint is used to manage the direct roles of a specific file, identified by its assetId. It allows
clients to perform multiple types of role changes in a single request, including:
NOTE:
- The request body supports three arrays:
additions,updates, anddeletions.- Multiple principals can be included across each action type.
- Each principal must be mentioned only once across the entire request body.
- Role changes apply directly to the file.
Validation Rules
Action Behavior additions Must include users/groups that do not already exist in the current ACL. updates Must target users/groups that already exist in the current ACL. deletions Must target users/groups that already exist in the current ACL.
Patch Roles for a File
This endpoint is used to manage the direct roles of a specific file, identified by its assetId. It allows
clients to perform multiple types of role changes in a single request, including:
NOTE:
- The request body supports three arrays:
additions,updates, anddeletions.- Multiple principals can be included across each action type.
- Each principal must be mentioned only once across the entire request body.
- Role changes apply directly to the file.
Validation Rules
Action Behavior additions Must include users/groups that do not already exist in the current ACL. updates Must target users/groups that already exist in the current ACL. deletions Must target users/groups that already exist in the current ACL.
Patch Roles for a Project
This endpoint is deprecated and will be removed on 3/31/2025. Please use the /projects/{assetId}/roles endpoint instead.
This endpoint is used to manage the direct roles of a specific project, identified by its assetId. It allows
clients to perform multiple types of role changes in a single request, including:
NOTE:
- The request body supports three arrays:
additions,updates, anddeletions.- Multiple principals can be included across each action type.
- Each principal must be mentioned only once across the entire request body.
- Role changes are deeply inherited — they apply to the project and all of its descendant assets.
Validation Rules
Action Behavior additions Must include users/groups that do not already exist in the current ACL. updates Must target users/groups that already exist in the current ACL. deletions Must target users/groups that already exist in the current ACL.
Patch Roles for a Project
This endpoint is used to manage the direct roles of a specific project, identified by its assetId. It allows
clients to perform multiple types of role changes in a single request, including:
NOTE:
- The request body supports three arrays:
additions,updates, anddeletions.- Multiple principals can be included across each action type.
- Each principal must be mentioned only once across the entire request body.
- Role changes are deeply inherited — they apply to the project and all of its descendant assets.
Validation Rules
Action Behavior additions Must include users/groups that do not already exist in the current ACL. updates Must target users/groups that already exist in the current ACL. deletions Must target users/groups that already exist in the current ACL.
Rename a file.
This endpoint updates the name of an existing File, identified by its assetId. This operation is only permitted if the requester has appropriate write-level permissions
on the file.
NOTE:
- Only the name of the file can be modified using this endpoint.
- All other file metadata remains unchanged.
- If the requester lacks the required permissions or the file does not exist, an appropriate error response will be returned.
Rename a folder.
This endpoint updates the name of an existing Folder, identified by its assetId. This operation is only permitted if the requester has appropriate write-level permissions
on the folder.
NOTE:
- Only the name of the folder can be modified using this endpoint.
- All other folder metadata remains unchanged.
- If the requester lacks the required permissions or the folder does not exist, an appropriate error response will be returned.
Rename a project.
This endpoint updates the name of an existing Project, identified by its assetId, within the organization's
ESM shared storage. This operation is only permitted if the requester has appropriate write-level permissions
on the project.
NOTE:
- Only the name of the project can be modified using this endpoint.
- All other project metadata remains unchanged.
- If the requester lacks the required permissions or the project does not exist, an appropriate error response will be returned.
Restore a soft-deleted file.
This endpoint restores an existing file, identified by its assetId, within the organization's ESM shared storage
to an ACTIVE state. This operation is only permitted if the requester has appropriate write-level permissions on the file.
NOTE:
- Files already in an ACTIVE state will remain ACTIVE and return 200 OK.
- Restore calls made on assets in a DELETED_PARENT state will return a 409 Conflict error.
- Hard-deleted files will return a 404 Not Found error.
- If an asset with the same path already exists, the restored file will be renamed automatically.
- If the requester lacks the required permissions or the file does not exist, an appropriate error response will be returned.
Restore a soft-deleted folder.
This endpoint restores an existing folder, identified by its assetId, within the organization's ESM shared storage
to an ACTIVE state. Descendants of the folder will have their states recomputed to their previous state. This operation
is only permitted if the requester has appropriate write-level permissions on the folder.
NOTE:
- Folders already in an ACTIVE state will remain ACTIVE and return 200 OK.
- Restore operations can only be invoked on roots of DELETED trees. Restore calls made on assets in a DELETED_PARENT state will return a 409 Conflict error.
- Descendants of this folder that were in a DELETED state prior its deletion will remain DELETED. Their respective descendants will also remain in a DELETED_PARENT or DELETED state as before.
- Hard-deleted folders will return a 404 Not Found error.
- If an asset with the same path already exists, the restored folder will be renamed automatically.
- If the requester lacks the required permissions or the folder does not exist, an appropriate error response will be returned.
Restore a soft-deleted project.
This endpoint restores an existing project, identified by its assetId, within the organization's ESM shared storage
to an ACTIVE state. Descendants of the project will have their states recomputed to their previous state. This operation
is only permitted if the requester has appropriate write-level permissions on the project.
NOTE:
- Projects already in an ACTIVE state will remain ACTIVE and return 200 OK.
- Descendants that were in a DELETED state prior to the deletion of this project will remain DELETED. Their respective descendants will also remain in the DELETED_PARENT or DELETED state as before.
- Hard-deleted projects will return a 404 Not Found error.
- If the requester lacks the required permissions or the project does not exist, an appropriate error response will be returned.
Copies a file to a new location.
This endpoint performs an asynchronous copy of an existing file asset, identified by its
assetId, into another folder or project. The operation requires the requester to have, at minimum, the following roles: