Every meaningful action taken in a Vaulx instance — from user logins and file uploads to permanent deletions and password changes — is recorded as an immutable row in theDocumentation 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.
audit_log table. The log is append-only and admin-only: no user can delete or alter entries, and no non-admin can view them. This gives operators a complete, tamper-resistant trail of everything that happened and who did it.
Recorded Actions
Each audit entry carries anaction string that identifies the operation. The full set of actions emitted by Vaulx handlers is:
| Action | Trigger |
|---|---|
auth.login | A user successfully authenticates and a session is established |
file.upload | A file upload completes and the file’s status transitions to active |
file.delete | A file is soft-deleted (status set to deleted); recoverable from trash |
file.hard_delete | An admin permanently deletes a file via DELETE /files/{fileID}?permanent=true |
file.rename | A file’s display name is updated |
file.move | A file is moved to a different folder |
file.restore | An admin restores a soft-deleted file from trash via POST /admin/trash/{fileID}/restore |
folder.create | A new folder is created |
folder.delete | A folder is deleted |
folder.rename | A folder’s display name is updated |
folder.zip_download | A folder is downloaded as a ZIP archive |
share.revoke | A share link is revoked |
profile.name_updated | A user updates their display name |
profile.password_updated | A user changes their password |
Database Schema
Theaudit_log table is defined in migrations/001_initial.up.sql:
user_id— The user who performed the action. Nullable so that system-generated events can be logged without an actor.resource_type— The kind of resource affected (file,folder, etc.). Nullable for actions without a specific resource (e.g.,auth.login).resource_id— The UUID of the affected resource. Nullable for the same reason.meta— An optionalJSONBblob for action-specific context (e.g., old and new names on a rename).created_at— The wall-clock timestamp of when the action occurred, defaulting toNOW().
Viewing the Audit Log
The audit log viewer is available exclusively to admins atGET /admin/audit.
Paginated view
By default, the page displays 50 entries per page, sorted newest-first. Use the?page= query parameter to navigate:
ListAuditLogPage) joins on the users table to surface the actor’s name and email alongside each entry:
Filtering by action
Append?action=<action> to narrow results to a single action type. When an action filter is present, pagination is disabled and up to 100 entries are returned:
action column (WHERE al.action = $1), so the value must match one of the action strings from the table above exactly.
The audit log is append-only — there is no delete or truncate endpoint exposed via the API or admin panel. Entries remain permanently in the database. The table is indexed on both
user_id and created_at DESC, keeping paginated and user-scoped queries fast even as the log grows: