Documentation Index
Fetch the complete documentation index at: https://docs.gateways.app/llms.txt
Use this file to discover all available pages before exploring further.
Storage Bucket Management Endpoints
Storage buckets are created in the customer’s cloud account. Supported providers:
- AWS: S3 buckets
- GCP: Cloud Storage buckets
- Azure: Storage Accounts (each “bucket” = one Storage Account in a resource group
deplo-rg-<name>)
The project’s connected cloud provider determines which is used. Create, list, get, patch, and delete work for all three.
Create Storage Bucket
POST /api/:projectSlug/:environmentSlug/storage-buckets - Create a new storage bucket (AWS S3, GCP GCS, or Azure Storage Account)
Description: The name is used as the bucket/account name. It must follow the provider’s naming rules.
Important:
- AWS: 3–63 characters, lowercase, alphanumeric, hyphens, periods; globally unique.
- GCP: 3–63 characters, lowercase letters, numbers, hyphens, underscores, periods; must not start with
goog.
- Azure: 3–24 characters, lowercase letters and numbers only (no hyphens); globally unique. Example:
mybucket or appfiles01.
Request Body:
{
"name": "my-storage-bucket",
"region": "us-east-1", // Optional, defaults to connection region
"description": "Bucket for storing application files", // Optional
"versioningEnabled": false, // Optional, default: false
"publicAccess": false, // Optional, default: false (public access blocked). true = allow public access
"positionX": 100, // Optional, canvas X coordinate
"positionY": 150 // Optional, canvas Y coordinate
}
Encryption is always enabled (true) in the backend; it is not a request field.
S3 Bucket Naming Rules:
- Must be 3 to 63 characters long
- Must begin and end with a letter or number
- Can contain lowercase letters (a-z), numbers (0-9), periods (.), and hyphens (-)
- Cannot contain consecutive periods (..)
- Cannot be formatted as an IP address (e.g., 192.168.1.1)
- Cannot start with “xn—” or end with “-s3alias”
- Must be globally unique across all AWS accounts
Example:
curl -X POST "https://api.gateways.app/api/codepanel/master/storage-buckets" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "app-files",
"region": "us-east-1",
"description": "Storage for application files and backups",
"versioningEnabled": true,
"publicAccess": false,
"positionX": 300,
"positionY": 200
}'
Example Response:
{
"message": "Storage bucket created successfully",
"data": {
"id": 1,
"name": "app-files",
"awsBucketName": "app-files",
"region": "us-east-1",
"description": "Storage for application files and backups",
"versioningEnabled": true,
"publicAccess": false,
"position": {
"x": 300,
"y": 200
},
"createdAt": "2024-01-15T10:30:00.000Z"
}
}
Encryption is always enabled in the backend; it is not returned in the response. For GCP the response includes gcpBucketName; for Azure, azureStorageAccountName.
Error Response (Invalid bucket name):
{
"error": "Invalid bucket name",
"message": "Bucket name must be at least 3 characters long"
}
Error Response (Bucket already exists):
{
"error": "Bucket name already exists",
"message": "A bucket with name \"app-files\" already exists in AWS. Bucket names must be globally unique."
}
List Storage Buckets
GET /api/:projectSlug/:environmentSlug/storage-buckets - List all storage buckets for a project environment
Query Parameters:
- None (filtering is handled by project/environment slugs in the path)
Example:
curl "https://api.gateways.app/api/codepanel/master/storage-buckets" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Example Response:
{
"message": "Storage buckets retrieved successfully",
"count": 2,
"data": [
{
"id": 1,
"name": "app-files",
"awsBucketName": "deplo-codepanel-master-app-files-a1b2c3d4",
"region": "us-east-1",
"description": "Storage for application files",
"versioningEnabled": true,
"publicAccess": false,
"position": {
"x": 300,
"y": 200
},
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-15T10:30:00.000Z"
},
{
"id": 2,
"name": "backups",
"awsBucketName": "deplo-codepanel-master-backups-e5f6g7h8",
"region": "us-east-1",
"description": "Backup storage",
"versioningEnabled": false,
"publicAccess": false,
"position": {
"x": 400,
"y": 250
},
"createdAt": "2024-01-15T11:00:00.000Z",
"updatedAt": "2024-01-15T11:00:00.000Z"
}
]
}
Get Storage Bucket Details
GET /api/:projectSlug/:environmentSlug/storage-buckets/:bucketId - Get details of a specific storage bucket
Example:
curl "https://api.gateways.app/api/codepanel/master/storage-buckets/1" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Example Response:
{
"message": "Storage bucket retrieved successfully",
"data": {
"id": 1,
"name": "app-files",
"awsBucketName": "deplo-codepanel-master-app-files-a1b2c3d4",
"region": "us-east-1",
"description": "Storage for application files and backups",
"versioningEnabled": true,
"publicAccess": false,
"position": {
"x": 300,
"y": 200
},
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-15T10:30:00.000Z"
}
}
Delete Storage Bucket
Path: DELETE /api/:projectSlug/:environmentSlug/resources/:resourceId
Use the bucket’s database ID as resourceId. See Resources API — Delete Resource by ID. All resource types (including storage buckets) are deleted via this unified path.
Query parameter: deleteFromCloud (optional)
true (default): Delete the bucket from the cloud (AWS S3, GCP GCS, or Azure Storage), then remove resource connections and soft-delete the resource. The bucket must be empty before cloud deletion. Azure: The storage account must be empty (delete all blobs and containers first).
false: Only remove the resource from the database (and its resource connections). The bucket is not deleted from the cloud.
Example (delete from cloud, default):
curl -X DELETE "https://api.gateways.app/api/codepanel/master/resources/1" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Example (remove from database only):
curl -X DELETE "https://api.gateways.app/api/codepanel/master/resources/1?deleteFromCloud=false" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Error (bucket not empty): When deleteFromCloud=true, the API returns an error if the bucket contains objects—e.g. "Cannot delete bucket: \"...\" is not empty. Please delete all objects and versions first."