Storage

Preview — pending review

This reference is generated from the platform API contract and is still under review. Operations, fields, and descriptions can change before publication.

Rotate the project's Swift Temp-URL key

POST
/scopes/{scopeId}/storage/temp-url-key/actions/rotate

Replaces the account's Temp-URL-Key (slot 1) with a new random value. The new key is never returned. The body is optional; an empty body means mode: revoke.

  • revoke (default): also removes Temp-URL-Key-2 and every container-level key. Every Temp-URL signed with an old key stops working at once -- including URLs other members handed out -- and the pending rotation advice is cleared.
  • graceful: the current slot-1 key moves to Temp-URL-Key-2 and keeps working -- any key already in Temp-URL-Key-2 is replaced by it; container keys are untouched and the rotation advice is NOT cleared (the old key is still valid). Exactly one previous key survives, so a second graceful rotation retires it. Key slots: the platform signs console upload/download links only with slot 1 and reuses whatever slot-1 key the account holds. Slot 2 (Temp-URL-Key-2) is replaced by EVERY rotation (revoke removes it; graceful overwrites it with the previous slot-1 key). The only key the platform never reads, writes or rotates is a container-level key (X-Container-Meta-Temp-URL-Key) -- except a revoke rotation, which removes every key including container keys. The console's own links keep working after either mode (they are signed with the current key on demand). Errors: 401 unauthenticated; 403 caller lacks manage access to the scope's storage; 404 unknown scopeId; 409 the project is not provisioned, or 409 details.reason=project_suspended while the project is suspended; 422 unknown mode; 502/503 the object store refused or is unavailable.

Authorization

bearerToken
headerAuthorizationBearer <token>

An API token (pc_live_…) or a service-account key (sak_live_…), created in Identity & Access Management and sent as Authorization: Bearer <token>. Requests are rate limited per credential and per tenant: every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a refused request gets 429 RATE_LIMITED with Retry-After.

Path Parameters

scopeId*string

Opaque ownership+authorization scope resolving to tenant + subscription + project.

Request Body

application/json
  1. body

Optional body of a Temp-URL key rotation.

mode?TempUrlKeyRotationMode

revoke removes every old key (slot 2 and container keys included); graceful keeps the current key valid in slot 2.

Default"revoke"
Value in"revoke""graceful"

Response Body

The key was rotated.

application/json
  1. response

Outcome of a Temp-URL key rotation.

rotatedAt*string
Formatdate-time
containerKeysRemoved*integer

How many containers had a container-level key removed (0 for graceful).

mode*TempUrlKeyRotationMode

revoke removes every old key (slot 2 and container keys included); graceful keeps the current key valid in slot 2.

Default"revoke"
Value in"revoke""graceful"
previousKeyRetained*boolean

True when the previous slot-1 key is still valid in slot 2 (graceful only).

curl -X POST "https://example.com/scopes/string/storage/temp-url-key/actions/rotate" \  -H "Content-Type: application/json" \  -d '{}'
{  "rotatedAt": "2019-08-24T14:15:22Z",  "containerKeysRemoved": 0,  "mode": "revoke",  "previousKeyRetained": true}