Cludz Storage uses a hierarchical permission system with three levels of access control. To manage permissions, open your drive and click folder settings that has a icon.
Folders marked as Public allow anyone to read files without authentication:
# No token required for public resources
curl -X GET "https://storage.cludz.net/storage/{uuid}/public-folder/image.jpg"
Private folders require authentication and explicit permissions:
| Permission | Capabilities |
|---|---|
| Read | View and download files |
| Write | Upload and modify files (includes Read) |
| Delete | Remove files and folders (includes Read) |
Folders can grant guest access with configurable permissions:
| Setting | Description |
|---|---|
guest_can_read | Allow unauthenticated read |
guest_can_write | Allow unauthenticated upload |
guest_can_delete | Allow unauthenticated delete |
Permissions are inherited from parent folders. If a subfolder doesn't have explicit permissions, it inherits from the nearest parent with defined access.
/storage/{uuid}/
├── public-photos/ ← Public (Read for all)
│ └── events/ ← Inherits Public access
│ └── party.jpg ← Accessible without token
├── private-docs/ ← Private
│ └── contracts/ ← Inherits Private access
Individual users can be granted access to specific folders:
| Permission Level | Read | Write | Delete |
|---|---|---|---|
| Read | ✓ | ✗ | ✗ |
| Write | ✓ | ✓ | ✗ |
| Delete | ✓ | ✗ | ✓ |
Each folder can specify who the uploaded file quota counts against:
| Setting | Description |
|---|---|
owner | Storage owner's quota |
uploader | Uploading user's quota |
When listing directories, folders include a sharingStatus field:
{
"name": "shared-folder",
"isDirectory": true,
"sharingStatus": "shared"
}
| Value | Description |
|---|---|
"public" | Folder is publicly accessible |
"shared" | Folder has user-specific access |
null | Private folder (owner only) |
The API checks permissions in this order:
| Status | Message |
|---|---|
401 | Token required |
403 | Access denied |
403 | No read permission |
403 | No write permission |
403 | No delete permission |
// Public read - no token needed
const response = await fetch('https://storage.cludz.net/storage/{uuid}/public/');
const files = await response.json();
// Private read - token required
const response = await fetch('https://storage.cludz.net/storage/{uuid}/private/', {
headers: { 'Token': 'YOUR_STORAGE_TOKEN' }
});
// Try to upload, handle permission errors
const response = await fetch('https://storage.cludz.net/storage/{uuid}/folder/', {
method: 'POST',
headers: { 'Token': 'YOUR_STORAGE_TOKEN' },
body: formData
});
if (response.status === 403) {
console.error('No write permission for this folder');
}