Updates the metadata of a bucket. Changes to the bucket are readable immediately after
writing, but configuration changes may take time to propagate.

> [!CAUTION]
> **Caution:** You should generally use the [PATCH](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets/patch.md.txt) method, which changes only metadata you define in the request. The UPDATE method might change certain metadata for the bucket even if that metadata is not specified in the request.

## Required permissions

To use this method,the authenticated user must have the `storage.buckets.update` IAM
permission. Additionally, to perform specific actions on a bucket, the authenticated user must have the following permissions:

- To update public access prevention policies or access control lists (ACLs): `storage.buckets.setIamPolicy`
- To return ACLs on a bucket: `storage.buckets.getIamPolicy`
- To update bucket IP filtering rules: `storage.buckets.setIpFilter`
- To return bucket IP filtering rules as part of the response: `storage.buckets.getIpFilter`

## Request

### HTTP request

```
PUT https://storage.googleapis.com/storage/v1/b/bucket
```

In addition to [standard query parameters](https://docs.cloud.google.com/storage/docs/json_api/v1/parameters.md.txt#query),
the following query parameters apply to this method.

To see an example of how to include query parameters in a request, see the
[JSON API Overview](https://docs.cloud.google.com/storage/docs/json_api.md.txt#query_parameters) page.

### Parameters

| Parameter name | Value | Description |
|---|---|---|
| **Path parameters** |||
| `bucket` | `string` | Name of a bucket. |
| **Optional query parameters** |||
| `ifMetagenerationMatch` | `long` | Makes the return of the bucket metadata conditional on whether the bucket's current metageneration matches the given value. |
| `ifMetagenerationNotMatch` | `long` | Makes the return of the bucket metadata conditional on whether the bucket's current metageneration does not match the given value. |
| `predefinedAcl` | `string` | Apply a predefined set of access controls to this bucket. <br /> Acceptable values are: - `authenticatedRead`: Project team owners get `OWNER` access, and `allAuthenticatedUsers` get `READER` access. - `private`: Project team owners get `OWNER` access. - `projectPrivate`: Project team members get access according to their roles. - `publicRead`: Project team owners get `OWNER` access, and `allUsers` get `READER` access. - `publicReadWrite`: Project team owners get `OWNER` access, and `allUsers` get `WRITER` access. If `iamConfiguration.uniformBucketLevelAccess.enabled` is set to `true`, requests that include this parameter fail with a `400 Bad Request` response. |
| `predefinedDefaultObjectAcl` | `string` | Apply a predefined set of default object access controls to this bucket. <br /> Acceptable values are: - `authenticatedRead`: Object owner gets `OWNER` access, and `allAuthenticatedUsers` get `READER` access. - `bucketOwnerFullControl`: Object owner gets `OWNER` access, and project team owners get `OWNER` access. - `bucketOwnerRead`: Object owner gets `OWNER` access, and project team owners get `READER` access. - `private`: Object owner gets `OWNER` access. - `projectPrivate`: Object owner gets `OWNER` access, and project team members get access according to their roles. - `publicRead`: Object owner gets `OWNER` access, and `allUsers` get `READER` access. If `iamConfiguration.uniformBucketLevelAccess.enabled` is set to `true`, requests that include this parameter fail with a `400 Bad Request` response. |
| `projection` | `string` | Set of properties to return. Defaults to `full`. <br /> Acceptable values are: - `full`: Include all properties. - `noAcl`: Omit `owner`, `acl`, and `defaultObjectAcl` properties. |

### Request body

In the request body, supply a [bucket
resource](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets#resource) with the following properties:

| Property name | Value | Description | Notes |
|---|---|---|---|
| **Required Properties** ||||
| `acl[]` | `list` | Access controls on the bucket. If empty, this parameter is ignored. Can contain one or more [bucketAccessControls Resources](https://docs.cloud.google.com/storage/docs/json_api/v1/bucketAccessControls.md.txt). > [!NOTE] > **Note:** ACLs do not apply in buckets where `iamConfiguration.uniformBucketLevelAccess.enabled` is set to `true`. Requests to such buckets fail with a `400 Bad Request` response if the request contains a non-empty `acl[]` property. | writable |
| **Optional Properties** ||||
| `autoclass` | `object` | The [bucket's Autoclass configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#autoclass), which, when enabled, controls the storage class of objects based on how and when the objects are accessed. For more information, see [Autoclass](https://docs.cloud.google.com/storage/docs/autoclass.md.txt). | writable |
| `billing` | `object` | The [bucket's billing configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#billing), used to control the [Requester Pays](https://docs.cloud.google.com/storage/docs/requester-pays.md.txt) feature. | writable |
| `cors[]` | `list` | The [bucket's CORS configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#cors). For more information, see [Cross-Origin Resource Sharing](https://docs.cloud.google.com/storage/docs/cross-origin.md.txt). | writable |
| `defaultEventBasedHold` | `boolean` | Whether or not to automatically apply an [`eventBasedHold`](https://docs.cloud.google.com/storage/docs/object-holds.md.txt#hold-types) to new objects added to the bucket. | writable |
| `defaultObjectAcl[]` | `list` | Default access controls to apply to new objects when no ACL is provided. This list defines an `entity` and `role` for one or more [defaultObjectAccessControls Resources](https://docs.cloud.google.com/storage/docs/json_api/v1/defaultObjectAccessControls.md.txt). If `iamConfiguration.uniformBucketLevelAccess.enabled` is set to `true`, this field is omitted in responses, and requests that specify this field fail with a `400 Bad Request` response. | writable |
| `encryption` | `object` | The [bucket's encryption configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#encryption). | writable |
| `iamConfiguration` | `object` | The [bucket's IAM configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#iamConfiguration). | writable |
| `ipFilter` | `object` | The [bucket IP filtering configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#ipFilter). For more information about bucket IP filtering, see [Bucket IP filtering](https://docs.cloud.google.com/storage/docs/ip-filtering-overview.md.txt). | writable |
| `labels` | `object` | User-provided [bucket labels](https://docs.cloud.google.com/storage/docs/tags-and-labels.md.txt#bucket-labels), in key/value pairs. | writable |
| `labels.(key)` | `string` | An individual label entry. | writable |
| `lifecycle` | `object` | The bucket's [lifecycle configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#lifecycle). See [lifecycle management](https://docs.cloud.google.com/storage/docs/lifecycle.md.txt) for more information. | writable |
| `logging` | `object` | The [bucket's logging configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#logging). For more information, see [usage logs and storage logs](https://docs.cloud.google.com/storage/docs/access-logs.md.txt). | writable |
| `retentionPolicy` | `object` | The [bucket's retention policy configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#retentionPolicy). For more information, see [Bucket Lock](https://docs.cloud.google.com/storage/docs/bucket-lock.md.txt). | writable |
| `rpo` | `string` | The recovery point objective for cross-region replication of the bucket. Applicable only for dual- and multi-region buckets. `"DEFAULT"` uses default replication. `"ASYNC_TURBO"` enables turbo replication, valid for dual-region buckets only. For more information, see [redundancy across regions](https://docs.cloud.google.com/storage/docs/availability-durability.md.txt#cross-region-redundancy). | writable |
| `softDeletePolicy` | `object` | The [bucket's soft delete policy configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#softDeletePolicy). For more information, see [Soft Delete](https://docs.cloud.google.com/storage/docs/soft-delete.md.txt). | writeable |
| `storageClass` | `string` | The bucket's default storage class, used whenever no `storageClass` is specified for a newly-created object. For available storage classes, see [Storage classes](https://docs.cloud.google.com/storage/docs/storage-classes.md.txt). | writable |
| `versioning` | `object` | The [bucket's versioning configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#versioning). For more information, see [Object Versioning](https://docs.cloud.google.com/storage/docs/object-versioning.md.txt). | writable |
| `website` | `object` | The [bucket's website configuration](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets.md.txt#website), controlling how the service behaves when accessing bucket contents as a web site. See the [Static Website Examples](https://docs.cloud.google.com/storage/docs/static-website.md.txt) for more information. | writable |

## Response

If successful, this method returns a [bucket
resource](https://docs.cloud.google.com/storage/docs/json_api/v1/buckets#resource) in the response body.

For information about status and error codes returned by this API, see the
[reference page](https://docs.cloud.google.com/storage/docs/json_api/v1/status-codes.md.txt).

## Try it!


Use the APIs Explorer below to call this method on live data and see the response.