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
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.
bearerTokenAuthorizationBearer <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.
scopeId*stringOpaque ownership+authorization scope resolving to tenant + subscription + project.
bucketId*stringIdentifier of the bucket.
key*stringObject key to delete (a file, not a folder prefix).
1 <= lengthIdempotency-Key?stringOptional; 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.
uuidObject deleted.
curl -X DELETE "https://example.com/scopes/string/storage/buckets/string/objects?key=string"