EddytorDocs & API
Storages

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)

POST
/v1/storages/configs/{config_id}/promote

Authorization

BearerAuth
AuthorizationBearer <token>

Security scheme for OpenAPI endpoints. Validates both JWT tokens and API keys.

In: header

Path Parameters

config_id*string
Formatuuid

Request 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"}
Empty
Empty
{  "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"    }  ]}