Skip to main content

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:

ParameterTypeDescription
forcebooleanDelete 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"
}
}