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.

Remove a CORS, lifecycle or replication rule from the bucket

DELETE
/scopes/{scopeId}/storage/buckets/{bucketId}/configuration-rules/{configurationRuleId}

Removes a single configuration rule from the bucket. Removing a CORS rule re-applies the remaining merged policy to the Swift container (asynchronously, by an objectstore.bucket.cors.apply Operation; removing the last one removes the container's CORS metadata), after which preflights from origins no other rule allows start failing. A lifecycle or replication rule stored before those were closed can still be removed (it was never applied, so removal changes nothing on the object store). Failure leaves the rule in place and queryable. Validation: bucketId must reference an existing, non-deleted bucket in the scope and configurationRuleId an existing rule on that bucket (unknown → 404 NOT_FOUND); caller must hold a destructive-action role (owner|admin|contributor), otherwise 403 FORBIDDEN. Async & state: Synchronous — returns 204 No Content once the rule is removed from the bucket configuration. A resource.updated SSE frame is emitted (kind storage.bucket, patch {corsRuleCount|lifecycleRuleCount|replicationRuleCount}) so the rule-count properties converge in open views. Errors: 401 unauthenticated; 403 caller lacks destructive permission on the scope; 404 unknown scopeId, bucketId or configurationRuleId; 412 If-Match ETag does not match the current bucket configuration revision; 500 unexpected backend failure. Idempotency/Concurrency: This operation does not use Idempotency-Key; it may be omitted and a sent one is ignored. Repeating the delete after it succeeded answers 404 NOT_FOUND because the rule is gone. If-Match with the ETag from the bucket detail read prevents deleting a rule that was concurrently edited.

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.

configurationRuleId*string

Identifier of the CORS, lifecycle or replication rule.

Header Parameters

If-Match?string

ETag for optimistic concurrency on mutations/deletes; mismatch results in 412.

Response Body

Rule removed; it no longer applies to the bucket.

curl -X DELETE "https://example.com/scopes/string/storage/buckets/string/configuration-rules/string"
Empty