Storage reference
S3-compatible buckets backed by MinIO. Uploads go direct to MinIO via presigned URLs.
Endpoints
| Method | Path | Scope | Description |
|---|---|---|---|
| POST | /dashboard/storage/buckets | storage:write | Create a bucket. |
| POST | /dashboard/storage/buckets/{name}/presign-put | storage:write | Request a presigned PUT URL for a single-part upload. |
| POST | /dashboard/storage/buckets/{name}/multipart/start | storage:write | Start a multipart upload (files > 100 MB). |
Quickstart
# 1. Presign
curl -X POST https://api.valienz.io/dashboard/storage/buckets/my-bucket/presign-put \
-H "Authorization: Bearer $VALIENZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{"key":"hello.txt","contentType":"text/plain","size":5}'
# 2. Upload to the returned URL
curl -X PUT --data-binary @hello.txt \
-H "Content-Type: text/plain" \
"<url-from-step-1>"Notes
S3-compatible access keys
Issue from /storage/access-keys. Use any S3 client (aws-cli, boto3, mc). The reveal dialog ships ready-to-paste config snippets for each.
Multipart threshold
Files > 100 MB switch to multipart automatically when using the dashboard or our SDK. Direct API callers should call /multipart/start when their file exceeds the threshold.
Errors
| Code | HTTP | Description | Resolution |
|---|---|---|---|
| E_BUCKET_EXISTS | 409 | Bucket name already taken (S3 naming rules). | Pick another name. Names are tenant-scoped but globally unique within the underlying MinIO. |
| E_OBJECT_NOT_FOUND | 404 | Object not in the bucket. | Check the key (case-sensitive) or list the prefix. |