Attach a storage configuration to a workspace
Two cases (ED-544): - **Personal config the caller owns** → promoted to workspace ownership. The promoter can undo within a short window (see the undo endpoint). - **Workspace-owned config** → re-attached to the target workspace. Requires Admin/Builder access to BOTH the current and the target workspace, and extinguishes any pending promote-undo window. The config id is stable in both cases, so its `cfg_{id}` catalog schema and every registered table keep resolving. Gaining access is additive — new members pick the config up on their next discovery refresh. *Losing* it is not: a re-attach drops the source workspace members' engine sessions so the config stops resolving for them immediately. Attaching to the default workspace is a deliberate org-wide share. **Required scope:** `storage_configs:share` (plus Admin or Builder access to the workspace(s) involved)
Authorization
BearerAuth Security scheme for OpenAPI endpoints. Validates both JWT tokens and API keys.
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Request body for promoting a personal storage config to workspace ownership (ED-544).
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/storages/configs/497f6eca-6276-4993-bfeb-53cbbbba6f08/promote" \ -H "Content-Type: application/json" \ -d '{ "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c" }'{ "configId": "46ff6d11-d8b2-40d8-9197-dfa33c61cd6c", "configName": "string", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "undoAvailableUntil": "string", "sharesStoredCredential": true, "delegatedProvider": "azure", "message": "string"}{ "code": "string", "message": "string", "request_id": "string", "details": [ { "field": "string", "message": "string" } ]}{ "code": "string", "message": "string", "request_id": "string", "details": [ { "field": "string", "message": "string" } ]}{ "code": "string", "message": "string", "request_id": "string", "details": [ { "field": "string", "message": "string" } ]}{ "code": "string", "message": "string", "request_id": "string", "details": [ { "field": "string", "message": "string" } ]}{ "code": "string", "message": "string", "request_id": "string", "details": [ { "field": "string", "message": "string" } ]}{ "code": "string", "message": "string", "request_id": "string", "details": [ { "field": "string", "message": "string" } ]}{ "code": "string", "message": "string", "request_id": "string", "details": [ { "field": "string", "message": "string" } ]}{ "code": "string", "message": "string", "request_id": "string", "details": [ { "field": "string", "message": "string" } ]}{ "code": "string", "message": "string", "request_id": "string", "details": [ { "field": "string", "message": "string" } ]}Delete a storage configuration
Soft-deletes the storage configuration from the database and notifies the engine to clean up DataFusion registrations. All tables associated with this configuration will become inaccessible. This action cannot be undone. **Required scope:** `storage:configure` (+ `storage_configs:share` for workspace-shared configs)
Undo a recent promote
Flips a just-promoted config back to the promoter's personal ownership — mistake recovery for "shared to the wrong place". Only the promoter may undo, and only within 15 minutes of the promote; a workspace re-attach extinguishes the window. After the window, sharing is one-way by design: teammates may have built on the shared config, so the loud teardown path is DELETE. **Required scope:** `storage_configs:share`