{ "name": "download.update \u2014 refile a task into another category", "description": "Moving saveDir moves the file on disk in the same operation, which is what makes a drag onto the category tree one RPC.", "request": { "jsonrpc": "2.0", "id": 25, "method": "download.update", "params": { "taskId": "$taskId", "patch": { "categoryId": "video", "saveDir": "/home/sami/Downloads/Video", "description": "Ubuntu 26.04 desktop image" } } }, "response": { "jsonrpc": "2.0", "id": 25, "result": { "taskId": "3f7a2b1c-5d6e-4f80-9a1b-2c3d4e5f6071", "filename": "ubuntu-26.04-desktop-amd64.iso", "saveDir": "/home/sami/Downloads/Video", "url": "https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso", "effectiveUrl": "https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso", "sizeBytes": 6228541440, "downloadedBytes": 2941190144, "state": "downloading", "speedBps": 29796556, "etaSeconds": 110, "resumable": true, "segments": 8, "categoryId": "video", "queueId": null, "queuePosition": null, "description": "Ubuntu 26.04 desktop image", "createdAt": "$isoDate", "lastTryAt": "$isoDate", "completedAt": null, "error": null } }, "assertions": [ "the file and its .veloxpart.meta move together, or neither moves", "the new saveDir is canonicalized and checked against the allowed roots first", "a running task is not re-segmented underneath the user" ] }