Summary
Expose bucket access-level and bucket metadata updates through the action, separate from bucket creation/deletion and advanced bucket policies.
Why
#100 covers creating, deleting, and listing buckets, but existing buckets also need routine updates: switching between private/public access and maintaining bucketInfo metadata. These are first-class SDK fields on Bucket.update, and they are narrower than lifecycle/CORS/replication/default-retention policy management.
SDK support (already available)
Bucket.update({ bucketType })
Bucket.update({ bucketInfo })
B2Client.createBucket({ bucketInfo })
BucketInfo.revision
UpdateBucketRequest.ifRevisionIs
Proposed surface
New action or mode such as action: bucket-update with inputs:
bucket-type (allPrivate / allPublic)
bucket-info (JSON object of key/value metadata)
if-revision-is (optional optimistic-lock revision)
Acceptance criteria
Out of scope
Summary
Expose bucket access-level and bucket metadata updates through the action, separate from bucket creation/deletion and advanced bucket policies.
Why
#100 covers creating, deleting, and listing buckets, but existing buckets also need routine updates: switching between private/public access and maintaining
bucketInfometadata. These are first-class SDK fields onBucket.update, and they are narrower than lifecycle/CORS/replication/default-retention policy management.SDK support (already available)
Bucket.update({ bucketType })Bucket.update({ bucketInfo })B2Client.createBucket({ bucketInfo })BucketInfo.revisionUpdateBucketRequest.ifRevisionIsProposed surface
New action or mode such as
action: bucket-updatewith inputs:bucket-type(allPrivate/allPublic)bucket-info(JSON object of key/value metadata)if-revision-is(optional optimistic-lock revision)Acceptance criteria
bucketInfometadata.if-revision-ismaps to the SDK optimistic-lock field.Out of scope