Folders in Vaulx are hierarchical containers that map directly to logical groupings in the file browser. Every folder tracks its owner and, optionally, a parent folder — enabling arbitrarily deep nesting. Deletions cascade automatically through child folders and their files at the database level. All folder endpoints require an active session cookie.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/noelzappy/vaulx/llms.txt
Use this file to discover all available pages before exploring further.
Data models
File
| Field | Type | Notes |
|---|---|---|
id | UUID | Primary key, auto-generated. |
folder_id | UUID | null | Parent folder. null means root. |
name | text | Display name of the file. |
s3_key | text | Object key in the S3-compatible bucket. |
size_bytes | bigint | File size in bytes. |
mime_type | text | null | MIME type detected at upload time (e.g., image/png). |
uploaded_by | UUID | References users.id. |
status | text | Enum: pending, active, deleted. |
created_at | timestamptz | UTC timestamp set on insert. |
Folder
| Field | Type | Notes |
|---|---|---|
id | UUID | Primary key, auto-generated. |
parent_id | UUID | null | Parent folder. null means root. |
name | text | Display name of the folder. |
owner_id | UUID | References users.id. Set to the creating user. |
created_at | timestamptz | UTC timestamp set on insert. |
The
folders table uses ON DELETE CASCADE on the parent_id foreign key. Deleting a folder automatically removes all of its descendant folders and their associated files from the database. Files’ S3 objects are not cleaned up automatically on a cascade — use the admin trash/hard-delete flow for full cleanup.Create a folder
owner_id. Optionally supply a parent_id to nest the folder inside an existing one; omit it to create a root-level folder.
Authentication: Required (editor+)
Request body (application/x-www-form-urlencoded):
Display name of the new folder. Cannot be empty.
UUID of the parent folder. Omit (or leave blank) to create a root-level folder.
302 Found — redirects to /files/{parent_id} when parent_id was supplied, or /files for a root folder. The response also sets:
| Status | Condition |
|---|---|
400 Bad Request | Form parse error or name is empty. |
403 Forbidden | User is not at least an editor. |
500 Internal Server Error | Database insert failed. |
Delete a folder
UUID of the folder to delete.
200 OK with HX-Trigger:
| Status | Condition |
|---|---|
400 Bad Request | folderID is not a valid UUID. |
403 Forbidden | Authenticated user is neither the folder owner nor an admin. |
404 Not Found | No folder with that ID exists. |
500 Internal Server Error | Database deletion failed. |
Rename a folder
FolderCard HTML partial for HTMX in-place swap.
Authentication: Required (folder owner or admin)
UUID of the folder to rename.
application/x-www-form-urlencoded):
The new display name for the folder. Cannot be empty.
200 OK — FolderCard HTML partial (includes updated item count) with HX-Trigger:
| Status | Condition |
|---|---|
400 Bad Request | folderID invalid, form parse error, or name is empty. |
403 Forbidden | User is neither the folder owner nor an admin. |
404 Not Found | No folder with that ID exists. |
500 Internal Server Error | Database update failed. |