Ga naar hoofdinhoud

๐Ÿ•‘ Document Versions

Overviewโ€‹

The Versies (Versions) view surfaces the Nextcloud file-version history of a document โ€” read directly from the platform's files_versions capability. Filinq introduces no version storage of its own: every version is read through Nextcloud's IVersionManager, so retention, deduplication and storage remain Nextcloud's responsibility (ADR-022).

Reached from a document's row action (Versions) in My Documents, the view is a document-scoped page (/versions?fileId=โ€ฆ) in the ADR-001 document-detail family, alongside comparison โ€” not a new top-level menu.

What you can doโ€‹

  • List every version of the document, newest first, showing timestamp, author and size, with the current version distinguished.
  • Open / download the bytes of any specific version.
  • Restore a prior version (requires write access). Nextcloud first preserves the current state as a new version, then rolls back โ€” you confirm before it happens.
  • Compare a version with the current document, handing the fileId + versionTimestamp pair to the existing Document Comparison flow. Compare is offered only for text-extractable documents.

Graceful degradationโ€‹

When the files_versions app is disabled on the instance, the view stays present in the detail-tab family and renders an informative "File versions are not available on this instance" notice rather than an error, keeping the information architecture stable.

Authorizationโ€‹

Both listing and restore are guarded per-object through the requesting user's folder: a document whose underlying Nextcloud file the caller cannot read is indistinguishable from a non-existent one (IDOR-safe, ADR-005). Restore additionally requires write access; a read-only caller is rejected.

Endpointsโ€‹

MethodRoutePurpose
GET/api/documents/{fileId}/versionsList versions (paginated: limit, offset)
GET/api/documents/{fileId}/versions/{versionTimestamp}/downloadDownload a version's bytes (0 = current)
POST/api/documents/{fileId}/versions/{versionTimestamp}/restoreRestore a prior version (write required)