Provision object storage
provision_storageProvision the project's managed S3-compatible object storage (bucket + scoped access key) and inject S3_ENDPOINT/S3_BUCKET/S3_ACCESS_KEY/S3_SECRET_KEY/S3_REGION/S3_FORCE_PATH_STYLE into the app's environment — the same action as the dashboard's Settings → S3 button. Needed by anything that handles file uploads: uploaded files belong in this bucket rather than in Postgres columns, and no external S3 provider is needed. Idempotent: a project that already has a bucket gets its current state back (already_provisioned=true) and nothing is created. Returns the env var names that are now set, with masked values. Deployed commits are rolled so the new variables land in the running pods. Requires a read-write token.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | optional provisioning mode: nas (shared servers) or disk (Postgres and S3 as sidecars on the commit disk). Omit to use the platform default. A second call on an already-provisioned project returns the current mode and ignores this field | |
| project_id | Yes | the project id (from list_projects or deploy_files) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| mode | No | ||
| message | Yes | ||
| env_vars | Yes | ||
| repaired | Yes | ||
| converged | Yes | ||
| project_id | Yes | ||
| resource_name | No | ||
| rolled_commits | No | ||
| already_provisioned | Yes | ||
| env_secret_digest_after | No | ||
| env_secret_digest_before | No |