Deployments and storage
Create an environment
Provider-specific creation endpoints live under /api/aws/environments,
/api/azure/environments, /api/gcp/environments, and
/api/cloudflare/environments. They require environments:write and provider
credentials in their documented request bodies.
Creation returns HTTP 201 with environmentId and jobId; provider provisioning
runs asynchronously. Inspect GET /api/deployments/environments/{id} and
GET /api/deployments/{id}/jobs, both requiring deployments:read.
The latter path’s id identifies an environment.
GET /api/deployments/environments lists fresh environment summaries.
POST at that same path is a compatibility listing of active environments and
requires deployments:write; it does not create an environment.
AWS list responses use a deployments wrapper and currently contain all
organization environments. Azure, GCP and Cloudflare use an environments wrapper
filtered to that provider.
Deploy a server
Use POST /api/integrations/{integrationId}/deploy for a manifest integration,
or the documented ChromaDB, Openbridge, custom Docker, or MCP proxy endpoint.
An active environment and deployments:write are required; manifest defaults,
provider constraints, and entitlements apply.
Deployment returns HTTP 201 with deploymentId and jobId. deploymentId is the
created server ID. Inspect GET /api/servers/{id} and
GET /api/servers/{id}/jobs using servers:read. Server job listings return the
last 50 jobs; environment job listings return the last 10. Large stack events are omitted.
Update, stop, start, or delete
Server changes can return HTTP 200 while a job is still running. Configuration
updates return jobId, status, and diff when changes are queued. An update
with no changes returns only success and a message. Concurrent deployment updates
can return 409.
Server deletion returns HTTP 200 with status: "deleting"; provider environment
deletion returns HTTP 202. Poll resources and jobs to observe completion.
Storage
POST /api/storage supports registered resources and managed S3 Files.
Registered creation returns HTTP 201 with resource; managed creation returns
HTTP 202 with storageId and status. Managed availability depends on your
organization and AWS deployment prerequisites.
Registered S3 Files requires role-based filesystem/access-point metadata and
rejects static credentials. The s3 request label is normalized to s3-object.
Attach active storage to a server in the same environment at
POST /api/servers/{id}/storage. Both servers:write and storage:write are
required. Detach with DELETE and the storageResourceId query parameter.
Inspect /api/storage/{id}/affected-servers before changes that affect attached
servers. Managed deletion requires force=true; retain_bucket=true preserves
the bucket and its contents while other managed resources are removed. Managed
deprovisioning returns 202 and remains asynchronous.