{ "name": "download.add \u2014 start an ISO now, into the Programs category", "description": "The ordinary add path. saveDir is canonicalized and checked against the allowed roots before anything is written.", "request": { "jsonrpc": "2.0", "id": 11, "method": "download.add", "params": { "url": "https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso", "filename": "ubuntu-26.04-desktop-amd64.iso", "saveDir": "/home/sami/Downloads/Programs", "categoryId": "programs", "segments": 8, "startMode": "now" } }, "response": { "jsonrpc": "2.0", "id": 11, "result": { "taskId": "$uuid", "state": "connecting", "duplicate": null } }, "assertions": [ "the .veloxpart file is created sparse and preallocated at the final size", "saveDir resolves inside saveTo.allowedRoots, or the call fails -32011 having written nothing", "event.task.added is emitted to every subscriber before this reply is sent" ] }