Confluye
Platform

Recently deleted

Trash, 30-day labels, restore, and what is not durable.

Settings → Recently Deleted (/confluye/{slug}/settings/recently-deleted) lists workspace items with trashedAt set. Types: workflows, folders, tables, knowledge bases, and docs. Search matches name, detail, owner, type, expiry ISO string, and the retention label. Sort: deleted newest/oldest, expires soon, name A–Z. Type tabs filter the table.

Retention display uses 30 days from trashedAt. Labels are {n} days left or Expired. Restore remains clickable after expiry — there is no purge job that hard-deletes these rows when the label says Expired.

Restore

Restore calls tRPC (same as resource PATCH trashed: false):

KindCall
Documentresources.documents.update({ id, trashed: false })
Folderresources.documentFolders.update({ id, trashed: false })
Tableresources.databases.updateTable({ tableId, trashed: false })
Knowledge baseresources.knowledgeBases.update({ id, trashed: false })
Workflowworkflows.update({ workflowId, trashed: false })

Equivalent REST: PATCH /api/v1/documents/{id}, /document-folders/{id}, /databases/{tableId}, /knowledge-bases/{id}, /workflows/{id} with { "trashed": false }. Trash uses trashed: true.

Trashed workflows are omitted from list/execute paths and throw “Workflow not found” on run. Deployed workflows are set to disabled when trashed.

Audit actions: workflow.trash / workflow.restore, folder.trash / folder.restore, table.trash / table.restore (and the knowledge-base/document equivalents). Severity is warning for workflow trash, info for restore.

Persistence caveats (incomplete)

Trash audit events currently record actor usr_javier / user rather than the authenticated caller.

Credentials, API keys, integrations, and AI providers are not in Recently Deleted — those deletes are immediate.

Workspace file backups use a separate 30-day deletion after deletionRequestedAt (storage GC), unrelated to this UI.

Next steps