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
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.
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.
configurationRuleId*stringIdentifier of the CORS, lifecycle or replication rule.
If-Match?stringETag for optimistic concurrency on mutations/deletes; mismatch results in 412.
Rule removed; it no longer applies to the bucket.
curl -X DELETE "https://example.com/scopes/string/storage/buckets/string/configuration-rules/string"