Storage shares let you expose a directory from one container to another container or to an entire project. The source container controls what path is shared; the target mount path is determined automatically by the server infrastructure. Shares support read-only and read-write modes, optional expiration, and can be toggled on the receiving side.
Use the endpoints on this page to create, list, inspect, update, and delete shares, as well as to view and accept incoming shares targeted at your containers.
Incoming shares are the receiver view — storage that other containers are sharing with a specific target. They include both 1:1 container shares and project-wide shares, deduplicated so that direct shares take priority over project shares. Self-shares and expired shares are excluded.
Get all shares targeting this container (both direct shares and project-level shares). Shows what storage this container is configured to receive. Includes deduplication (direct shares take priority over project shares) and filters out self-shares and expired shares.
Name In Type Required Description idpath string Yes Container ID
"message" : " Incoming shares retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"source_container_id" : " 507f1f77bcf86cd799439022 " ,
"source_path" : " /etc/app/config " ,
"target_container_id" : " 507f1f77bcf86cd799439033 " ,
"target_project_id" : null ,
"target_type" : " container " ,
"created_by" : " 507f1f77bcf86cd799439044 " ,
"created_at" : " 2025-01-15T10:30:00.000Z " ,
"updated_at" : " 2025-01-15T10:30:00.000Z "
"id" : " 507f1f77bcf86cd799439077 " ,
"source_container_id" : " 507f1f77bcf86cd799439088 " ,
"source_path" : " /opt/shared-libs " ,
"target_project_id" : " 507f1f77bcf86cd799439055 " ,
"target_container_id" : null ,
"target_type" : " project " ,
"created_by" : " 507f1f77bcf86cd799439044 " ,
"created_at" : " 2025-01-01T00:00:00.000Z " ,
"updated_at" : " 2025-01-01T00:00:00.000Z "
"message" : " Authentication token required "
"message" : " Insufficient permissions "
"message" : " Container not found "
const { data } = await client . api . storageShares . listIncoming ( {
id: " 507f1f77bcf86cd799439033 "
Get all shares targeting your containers across all projects. Shows what storage you are receiving from others.
Name In Type Required Description realm_idquery string No Filter by realm ID. Alternative to using realm subdomain in URL.
"message" : " All incoming shares retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"source_container_id" : " 507f1f77bcf86cd799439022 " ,
"source_path" : " /home/app/shared-data " ,
"target_container_id" : " 507f1f77bcf86cd799439033 " ,
"target_project_id" : null ,
"target_type" : " container " ,
"expires_at" : 1735689599 ,
"created_by" : " 507f1f77bcf86cd799439044 " ,
"created_at" : " 2025-01-15T10:30:00.000Z " ,
"updated_at" : " 2025-01-15T10:30:00.000Z "
"message" : " Authentication token required "
const { data } = await client . api . storageShares . listIncomingGlobalIterator ( {} );
Enable or disable mounting of an incoming share. Allows the target container owner to accept or reject incoming shares. Both the creator’s enabled flag and the receiver’s mount flag must be true for the share to appear in container configuration.
Name In Type Required Description idpath string Yes Target container ID (receiver container) shareIdpath string Yes Share ID to toggle
Field Type Required Description mountboolean Yes Set to true to accept and mount the share, false to reject/unmount it
"message" : " Share enabled for mounting successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"source_container_id" : " 507f1f77bcf86cd799439022 " ,
"source_path" : " /home/app/shared-data " ,
"target_container_id" : " 507f1f77bcf86cd799439033 " ,
"target_project_id" : null ,
"target_type" : " container " ,
"alias" : " prod-data-share " ,
"description" : " Shared application data directory " ,
"expires_at" : 1735689599 ,
"expiry_notified" : false ,
"created_by" : " 507f1f77bcf86cd799439044 " ,
"created_at" : " 2025-01-15T10:30:00.000Z " ,
"updated_at" : " 2025-01-15T14:45:00.000Z "
"id" : " 507f1f77bcf86cd799439099 " ,
"share_id" : " 507f1f77bcf86cd799439011 " ,
"container_id" : " 507f1f77bcf86cd799439033 " ,
"created_at" : " 2025-01-15T14:45:00.000Z " ,
"updated_at" : " 2025-01-15T14:45:00.000Z "
"error" : " VALIDATION_ERROR " ,
"message" : " This share does not target the specified container " ,
"share_id" : " 507f1f77bcf86cd799439011 " ,
"container_id" : " 507f1f77bcf86cd799439099 " ,
"target_container_id" : " 507f1f77bcf86cd799439033 " ,
"target_project_id" : null
"message" : " Authentication token required "
"message" : " Insufficient permissions "
"message" : " Share not found "
await client . api . storageShares . toggleIncomingMount ({
id: " 507f1f77bcf86cd799439033 " ,
shareId: " 507f1f77bcf86cd799439011 " ,
Outgoing shares are what your containers are exposing to others. The endpoints below let you list, inspect, create, update, and delete shares. Share IDs are globally unique.
List all shares originating from this source container. Use query parameters to narrow results by target type, label, status, or enabled state.
Name In Type Required Description idpath string Yes Source container ID target_typequery string No Filter by target type. Allowed values: container, project. labelquery string No Filter by label statusquery string No Filter by status. Allowed values: active, failed. enabledquery string No Filter by enabled status. Allowed values: true, false. include_expiredquery string No Include expired shares. Allowed values: true, false. Default: false. realm_idquery string No Filter by realm ID. Alternative to using realm subdomain in URL.
"message" : " Storage shares retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"source_container_id" : " 507f1f77bcf86cd799439022 " ,
"source_path" : " /home/app/shared-data " ,
"target_container_id" : " 507f1f77bcf86cd799439033 " ,
"target_project_id" : null ,
"target_type" : " container " ,
"alias" : " prod-data-share " ,
"description" : " Shared application data directory " ,
"expires_at" : 1735689599 ,
"expiry_notified" : false ,
"created_by" : " 507f1f77bcf86cd799439044 " ,
"created_at" : " 2025-01-15T10:30:00.000Z " ,
"updated_at" : " 2025-01-15T10:30:00.000Z "
"id" : " 507f1f77bcf86cd799439066 " ,
"source_container_id" : " 507f1f77bcf86cd799439022 " ,
"source_path" : " /var/log/app " ,
"target_project_id" : " 507f1f77bcf86cd799439055 " ,
"target_container_id" : null ,
"target_type" : " project " ,
"description" : " Application logs shared with project " ,
"expiry_notified" : false ,
"created_by" : " 507f1f77bcf86cd799439044 " ,
"created_at" : " 2025-01-10T08:00:00.000Z " ,
"updated_at" : " 2025-01-10T08:00:00.000Z "
"message" : " Authentication token required "
"message" : " Insufficient permissions "
const { data } = await client . api . storageShares . listIterator ( {
id: " 507f1f77bcf86cd799439022 " ,
target_type: " container " ,
List all storage shares you have created across all your containers (what you are sharing with others).
Name In Type Required Description realm_idquery string No Filter by realm ID. Alternative to using realm subdomain in URL.
"message" : " All storage shares retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"source_container_id" : " 507f1f77bcf86cd799439022 " ,
"source_path" : " /home/app/shared-data " ,
"target_container_id" : " 507f1f77bcf86cd799439033 " ,
"target_project_id" : null ,
"target_type" : " container " ,
"alias" : " prod-data-share " ,
"description" : " Shared application data directory " ,
"expires_at" : 1735689599 ,
"expiry_notified" : false ,
"created_by" : " 507f1f77bcf86cd799439044 " ,
"created_at" : " 2025-01-15T10:30:00.000Z " ,
"updated_at" : " 2025-01-15T10:30:00.000Z "
"message" : " Authentication token required "
const { data } = await client . api . storageShares . listGlobalIterator ( {} );
Retrieve details of a specific storage share.
Name In Type Required Description idpath string Yes Source container ID shareIdpath string Yes Share ID
"message" : " Storage share retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"source_container_id" : " 507f1f77bcf86cd799439022 " ,
"source_path" : " /home/app/shared-data " ,
"target_container_id" : " 507f1f77bcf86cd799439033 " ,
"target_project_id" : null ,
"target_type" : " container " ,
"alias" : " prod-data-share " ,
"description" : " Shared application data directory " ,
"expires_at" : 1735689599 ,
"expiry_notified" : false ,
"created_by" : " 507f1f77bcf86cd799439044 " ,
"created_at" : " 2025-01-15T10:30:00.000Z " ,
"updated_at" : " 2025-01-15T10:30:00.000Z "
"message" : " Authentication token required "
"message" : " Insufficient permissions "
"message" : " Storage share not found "
const { data } = await client . api . storageShares . get ( {
id: " 507f1f77bcf86cd799439022 " ,
shareId: " 507f1f77bcf86cd799439011 "
Share a directory from a source container with a target container or an entire project. The share is automatically mounted on the target(s).
Caution
Source paths are security-hardened: character whitelist is a-z A-Z 0-9 / - _ ., system paths under /proc, /sys, /dev, /boot, /run, and /var/run are blocked, and path traversal (..) is rejected. The target mount path is determined by server infrastructure and cannot be specified by the caller.
Name In Type Required Description idpath string Yes Source container ID
Field Type Required Description source_pathstring Yes Absolute path in the source container to share target_container_idstring No 1:1 container share target. Mutually exclusive with target_project_id. target_project_idstring No Project-wide share target. Auto-mounts on all containers in the project. Mutually exclusive with target_container_id. modestring Yes Mount mode. Allowed values: readonly, readwrite. aliasstring No Optional human-friendly alias (lowercase alphanumeric, hyphens, underscores; 3–63 chars) labelstring No Optional label for grouping shares (3–63 chars) descriptionstring No Optional description (max 1000 chars) enabledboolean No Whether to enable the share (default: true) expires_atnumber No Unix timestamp (seconds) when the share should expire
"source_path" : " /home/shared/documents " ,
"target_container_id" : " 507f1f77bcf86cd799439033 " ,
"label" : " documentation " ,
"description" : " Read-only access to team documentation "
"message" : " Storage share created successfully " ,
"id" : " 507f1f77bcf86cd799439020 " ,
"source_container_id" : " 507f1f77bcf86cd799439012 " ,
"source_path" : " /data/shared " ,
"target_project_id" : " 507f1f77bcf86cd799439010 " ,
"target_container_id" : null ,
"target_type" : " project " ,
"alias" : " team-shared-data " ,
"description" : " Shared project files for team collaboration " ,
"expires_at" : 1738252800 ,
"expiry_notified" : false ,
"created_by" : " 507f1f77bcf86cd799439001 " ,
"created_at" : " 2025-01-29T15:00:00.000Z " ,
"updated_at" : " 2025-01-29T15:00:00.000Z "
"message" : " A container cannot share a directory with itself. "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input parameters One or more request parameters failed validation Check the error message for specific field requirements and correct your input INVALID_PATHInvalid Path The provided source or destination path is invalid. Kernel paths like /proc, /sys, /dev are not allowed. Provide a valid, non-kernel path for the storage share. SELF_SHARECannot Share to Self A container cannot share a directory with itself. Choose a different target container or project.
"message" : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request Include a valid JWT token in the Authorization header as Bearer <token> INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid Obtain a new token by logging in again or using a valid auth token
"message" : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action Contact the resource owner or administrator to request access
"message" : " Container not found "
Error Code Title Description Resolution CONTAINER_NOT_FOUNDContainer not found The requested container does not exist or you do not have permission to access it. Verify the container ID is correct and that you have access to the project it belongs to. RESOURCE_NOT_FOUNDResource not found The requested resource does not exist or has been deleted Verify the resource ID and ensure it exists
"message" : " Storage share already exists. "
Error Code Title Description Resolution SHARE_ALREADY_EXISTSShare Already Exists A share with the same source path and target already exists. Update the existing share or choose a different target.
"error" : " Too Many Requests " ,
"message" : " Rate limit exceeded "
Error Code Title Description Resolution RATE_LIMIT_EXCEEDEDRate limit exceeded You have exceeded the rate limit for this endpoint Wait before making additional requests, or upgrade your plan for higher limits
await client . api . storageShares . create ({
id: " 507f1f77bcf86cd799439012 " ,
source_path: " /home/shared/documents " ,
target_container_id: " 507f1f77bcf86cd799439033 " ,
description: " Read-only access to team documentation "
Update share properties such as mode, alias, label, description, enabled state, and expiration. Only the fields provided in the request body are updated; omit a field to leave it unchanged. Pass null for an explicit clear (where supported).
Name In Type Required Description idpath string Yes Source container ID shareIdpath string Yes Share ID
Field Type Required Description modestring No Mount mode. Allowed values: readonly, readwrite. aliasstring | null No Alias (null to remove) labelstring | null No Label (null to remove) descriptionstring | null No Description (null to remove) enabledboolean No Enable or disable the share expires_atnumber | null No Unix timestamp (seconds) when the share expires (null to never expire)
"description" : " Updated to read-write access " ,
"message" : " Storage share updated successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"source_container_id" : " 507f1f77bcf86cd799439022 " ,
"source_path" : " /home/app/shared-data " ,
"target_container_id" : " 507f1f77bcf86cd799439033 " ,
"target_project_id" : null ,
"target_type" : " container " ,
"description" : " Updated to read-write access " ,
"expiry_notified" : false ,
"created_by" : " 507f1f77bcf86cd799439044 " ,
"created_at" : " 2025-01-15T10:30:00.000Z " ,
"updated_at" : " 2025-01-15T14:45:00.000Z "
"message" : " Validation failed "
"message" : " Authentication token required "
"message" : " Insufficient permissions "
"message" : " Storage share not found "
await client . api . storageShares . update ({
id: " 507f1f77bcf86cd799439022 " ,
shareId: " 507f1f77bcf86cd799439011 " ,
description: " Updated to read-write access "
Remove a storage share by ID. Share IDs are globally unique, so the source container ID is not required. The share is automatically unmounted from its target(s).
Name In Type Required Description shareIdpath string Yes Share ID (globally unique, no container ID needed)
"message" : " Storage share deleted successfully "
"message" : " Authentication token required "
"message" : " Insufficient permissions "
"message" : " Storage share not found "
await client . api . storageShares . delete ({
shareId: " 507f1f77bcf86cd799439011 "