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.

Delete one object from the bucket

DELETE
/scopes/{scopeId}/storage/buckets/{bucketId}/objects

Deletes a single object, backing the per-row "Delete" action in the object browser. The object is removed from the underlying object store and from the bucket's object inventory in the same request, so the browser's listing and the bucket counters (objectCount, sizeBytes) reflect the removal immediately. The bucket itself is not otherwise changed. Validation: bucketId must reference an existing, non-deleted bucket in the scope (unknown → 404 NOT_FOUND); key is required and must be a non-empty object key, not a folder prefix (missing/empty/ending in / → 422 VALIDATION_FAILED); the key must be in the bucket's object inventory — the same listing the browser renders, refreshed by storage.bucket.refresh (unknown → 404 NOT_FOUND, nothing deleted); a bucket that is creating, deleting or in error cannot be written (→ 409 CONFLICT); a legacy delete-protected bucket (objectLock: true) refuses object deletion on this API and the console (→ 409 LOCKED; direct OpenStack Swift access is not restricted); caller must hold owner|admin|contributor on the scope, otherwise 403 FORBIDDEN. Async & state: Synchronous — returns 204 No Content once the provider delete succeeded and the inventory is updated. A provider failure leaves the inventory untouched and records nothing against the Idempotency-Key, so the same request can be retried. Errors: 401 unauthenticated; 403 caller lacks write permission on the scope; 404 unknown scopeId, bucketId or object key; 409 CONFLICT bucket state does not permit the write; 409 LOCKED the bucket has object lock; 422 missing or malformed key; 503 object store unavailable; 500 unexpected backend failure. Idempotency/Concurrency: Idempotency-Key is optional; replaying the same key returns the original 204 without a second delete.

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.

bucketId*string

Identifier of the bucket.

Query Parameters

key*string

Object key to delete (a file, not a folder prefix).

Length1 <= length

Header Parameters

Idempotency-Key?string

Optional; recommended for safe retries. When sent, the same key+body within 24h replays the original result and the same key with a different body is 409 CONFLICT; keys are unique per tenant. When an API token or service-account (bearer) caller omits it, the request is applied once with no replay protection (a retry may apply it again). A console session gets one from the edge.

Formatuuid

Response Body

Object deleted.

curl -X DELETE "https://example.com/scopes/string/storage/buckets/string/objects?key=string"
Empty