Files
webmanager-mvp/project_docs/COPY_V1_CONSOLIDATION.md
2026-03-11 09:39:41 +01:00

1.3 KiB

COPY_V1_CONSOLIDATION.md

Task lifecycle (copy v1)

POST /api/files/copy:

  1. Request wordt gevalideerd.
  2. Bij geldige input wordt direct een task aangemaakt met status queued.
  3. Een achtergrond-runner zet de task op running en vult progress (done_bytes, total_bytes).
  4. Eindstatus:
    • completed bij succesvolle file copy
    • failed bij runtime I/O fout (error_code = io_error)

Validatiefouten vs runtime-fouten

Validatiefouten (voor task-creatie):

  • invalid_request
  • path_traversal_detected
  • path_outside_whitelist
  • invalid_root_alias
  • path_not_found
  • type_conflict
  • already_exists

Gedrag:

  • request faalt direct met error response
  • er wordt geen task aangemaakt

Runtime-fouten (na task-creatie):

  • io_error

Gedrag:

  • request zelf retourneert 202 met task_id
  • task gaat naar failed
  • foutdetails verschijnen via GET /api/tasks/{task_id}

Copy metadata in v1 (copy_file(...))

V1 kopieert:

  • file-inhoud (byte stream)
  • basic filesystem metadata via copystat (mtime/atime/mode waar ondersteund)

V1 doet niet expliciet:

  • ownership/ACL normalisatie
  • extended attributes beleid

Destination-semantiek (expliciet)

destination blijft in v1 altijd het volledige doelpad.

  • Geen impliciete "copy into existing directory" interpretatie.
  • Als destination al bestaat: already_exists.