Update storage access protocols
Send only the fields to change. Turning one off is always allowed and ends its open\nsessions; turning WebDAV or SMB on needs a plan that includes it (400,\ndetails.code: not_in_plan). An empty body changes nothing and returns the box.
apiToken storage:writeAuthorizationBearer <token>A personal API token: Authorization: Bearer dh_live_…. See Authentication for scopes.
Scope: storage:write
id*integerThe service id, as returned by GET /v1/services.
application/json- body
sftp?booleanwebdav?booleansmb?booleanThe box after the change.
application/json- response
status*stringcreating | active | suspended | error | deleting
errorCode*|Why the box is in error. Null in every other status.
"node_unreachable""out_of_capacity""unknown"nullquotaGb*integerThe plan's quota, which the node enforces, in GiB (2^30 bytes). More space means a bigger plan.
usedBytes*integerusagePercent*number0–100, one decimal.
protocols*What the plan lets you switch on. sftp is always true.
protocolsInPlan*What the plan lets you switch on. sftp is always true.
connection*location*passwordSetAt*|date-timemigrating*booleanThe box is being moved to another server and is unreachable for the cut-over. Every write answers 400 box_not_ready until it clears; connection then already carries the new host and SSH host key fingerprint.
curl -X PATCH 'https://api.deluxhost.net/v1/services/0/storage/protocols' \ -H "Authorization: Bearer $DELUXHOST_TOKEN" \ -H 'Content-Type: application/json' \ -d '{}'{ "status": "string", "errorCode": "node_unreachable", "quotaGb": 0, "usedBytes": 0, "usagePercent": 0, "protocols": { "sftp": true, "webdav": true, "smb": true }, "protocolsInPlan": { "sftp": true, "webdav": true, "smb": true }, "connection": { "host": "string", "username": "string", "sftpPort": 0, "webdavUrl": "string", "smbPath": "string", "sshHostKeyFingerprint": "string" }, "location": { "name": "string", "country": "string", "countryCode": "string" }, "passwordSetAt": "2019-08-24T14:15:22Z", "migrating": true}Get Storage Box details GET
Status, quota and usage, the protocols switched on and those the plan allows, everything a\nclient needs to connect (host, username, ports, WebDAV URL, SMB path, SSH host key\nfingerprint) and where the data physically is. **Never the password** — it is not stored\nanywhere it could be read back; `POST …/storage/password` sets a new one.\n\n`usedBytes` is refreshed by the node periodically, not on this call. Readable while the\nservice is suspended. Any id that is not one of your storage services is a `404`.
Reset the Storage Box password POST
Generates a new password for the box login and returns it **once**. Nothing keeps a copy:\nlose it and the only way back is another reset. Clients connected with the old password\nhave to reconnect.\n\nFive resets per 15 minutes per account, shared with the dashboard.