Storage API
Manage S3-compatible object storage buckets via the API.
List Buckets
GET /v1/storage
Response:
{
"data": [
{
"id": "bkt_abc123",
"name": "my-assets",
"status": "active",
"public": false,
"region": "us-east",
"endpoint": "https://s3.sparbz.cloud",
"size_bytes": 1073741824,
"object_count": 150,
"created_at": "2024-01-15T10:30:00Z"
}
],
"meta": {
"total": 1,
"page": 1,
"per_page": 20
}
}
Get Bucket
GET /v1/storage/:id
Response:
{
"data": {
"id": "bkt_abc123",
"name": "my-assets",
"status": "active",
"public": false,
"region": "us-east",
"endpoint": "https://s3.sparbz.cloud",
"size_bytes": 1073741824,
"object_count": 150,
"versioning": false,
"lifecycle_rules": [],
"cors_rules": [],
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
}
Create Bucket
POST /v1/storage
Request Body:
{
"name": "my-assets",
"public": false,
"region": "us-east"
}
Response: 201 Created
{
"data": {
"id": "bkt_abc123",
"name": "my-assets",
"status": "creating",
"public": false,
"region": "us-east",
"endpoint": "https://s3.sparbz.cloud"
}
}
Update Bucket
PATCH /v1/storage/:id
Request Body:
{
"public": true,
"versioning": true
}
Response:
{
"data": {
"id": "bkt_abc123",
"name": "my-assets",
"public": true,
"versioning": true
}
}
Delete Bucket
DELETE /v1/storage/:id
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
| force | boolean | Delete bucket even if not empty |
Response: 204 No Content
Get Credentials
GET /v1/storage/:id/credentials
Response:
{
"data": {
"access_key": "AKIAIOSFODNN7EXAMPLE",
"secret_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"endpoint": "https://s3.sparbz.cloud",
"bucket": "my-assets",
"region": "us-east"
}
}
Rotate Credentials
POST /v1/storage/:id/rotate-credentials
Response:
{
"data": {
"access_key": "AKIAIOSFODNN7NEWKEY",
"secret_key": "newSecretKeyGeneratedHere"
}
}
CORS Configuration
Get CORS Rules
GET /v1/storage/:id/cors
Set CORS Rules
PUT /v1/storage/:id/cors
Request Body:
{
"rules": [
{
"allowed_origins": ["https://example.com"],
"allowed_methods": ["GET", "PUT", "POST"],
"allowed_headers": ["*"],
"max_age_seconds": 3600
}
]
}
Lifecycle Rules
Get Lifecycle Rules
GET /v1/storage/:id/lifecycle
Set Lifecycle Rules
PUT /v1/storage/:id/lifecycle
Request Body:
{
"rules": [
{
"id": "delete-old-logs",
"prefix": "logs/",
"expiration_days": 30,
"enabled": true
}
]
}
Presigned URLs
Generate Upload URL
POST /v1/storage/:id/presign
Request Body:
{
"key": "uploads/file.pdf",
"method": "PUT",
"expires_in": 3600,
"content_type": "application/pdf"
}
Response:
{
"data": {
"url": "https://s3.sparbz.cloud/my-assets/uploads/file.pdf?X-Amz-...",
"expires_at": "2024-01-15T11:30:00Z"
}
}