From fb086ac04cfebc9e9c3815945d55d9599c9e3001 Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Mon, 29 Jun 2026 14:25:14 +0200 Subject: [PATCH 01/10] feat(object-storage): add doc on conditional writes --- .../api-cli/using-conditional-writes.mdx | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 pages/object-storage/api-cli/using-conditional-writes.mdx diff --git a/pages/object-storage/api-cli/using-conditional-writes.mdx b/pages/object-storage/api-cli/using-conditional-writes.mdx new file mode 100644 index 0000000000..7d0be2f3ff --- /dev/null +++ b/pages/object-storage/api-cli/using-conditional-writes.mdx @@ -0,0 +1,119 @@ +--- +title: Using conditional writes +description: Add logic to your requests and avoid accidental overwrites with conditional writes for Scaleway Object Storage. +tags: object storage object-storage conditional write overwrite etag if-match if-none-match header +dates: + validation: 2026-06-29 + posted: 2026-06-29 +--- +import Requirements from '@macros/iam/requirements.mdx' + + +Conditional writes allow you to add an HTTP header to your write requests to specify preconditions for an S3 operation. The operation only proceeds if the precondition is met. Object Storage supports two conditional headers: + +- The `If-None-Match` header prevents overwrites of existing data by checking that no object with the same key name already exists in the bucket. +- The `If-Match` header checks an object's entity tag (ETag) before writing. Object Storage compares the ETag value you provide with the ETag of the object stored in the bucket. If the values do not match, the operation fails. + +Conditional writes help you add concurrency control to your applications and avoid accidental overwrites when several clients write to the same bucket. + + + +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Installed the [AWS CLI](/object-storage/api-cli/object-storage-aws-cli/) +- An [Object Storage bucket](/object-storage/how-to/create-a-bucket/) + +## Preventing object overwrites based on key names + +Use the `If-None-Match` header to check whether an object already exists in the bucket, based on its key name, before creating or copying it. + +Conditional writes with the `If-None-Match` header check for the existence of an object during the write operation. If an identical key name is found in the bucket, the operation fails. Without the `If-None-Match` header, uploading or copying an object with an identical key name in an unversioned or version-suspended bucket overwrites the existing object. + + + Set the `If-None-Match` header value to `*` to check against any object with the same key name. + + +### Conditional put + +The following `put-object` command performs a conditional write for an object with the key name `dir-1/my_images.tar.bz2`. The upload fails if an object with this key already exists. + +```bash +aws s3api put-object --bucket --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --if-none-match "*" +``` + +### Conditional copy + +The following `copy-object` command copies an object to a destination bucket with a conditional write for the key name `dir-1/my_images.tar.bz2`. The copy fails if an object with this key already exists in the destination bucket. + +```bash +aws s3api copy-object --copy-source / --key dir-1/my_images.tar.bz2 --bucket --if-none-match "*" +``` + +### Conditional multipart upload + +The following `complete-multipart-upload` command completes a multipart upload with a conditional write for the key name `dir-1/my_images.tar.bz2`. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpustruct`. + +```bash +aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket --key dir-1/my_images.tar.bz2 --upload-id --if-none-match "*" +``` + +## Preventing overwrites if the object has changed + +An object's ETag is a string that is unique to the object and reflects any change to its content. Use the `If-Match` header to compare the ETag of an object in your bucket with the value you provide during the write operation. If the ETag values do not match, the operation fails. + +To perform conditional writes with the `If-Match` header, you must have the `s3:PutObject` and `s3:GetObject` permissions. These permissions allow the caller to check the ETag and verify the state of the objects in the bucket. The `If-Match` header expects the ETag value as a string. + +### Conditional put + +The following `put-object` command performs a conditional write with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. + +```bash +aws s3api put-object --bucket --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --if-match "6805f2cfc46c0f04559748bb039d69ae" +``` + +### Conditional copy + +The following `copy-object` command performs a conditional write with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. + +```bash +aws s3api copy-object --copy-source / --key dir-1/my_images.tar.bz2 --bucket --if-match "6805f2cfc46c0f04559748bb039d69ae" +``` + +### Conditional multipart upload + +The following `complete-multipart-upload` command completes a multipart upload with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpustruct`. + +```bash +aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket --key dir-1/my_images.tar.bz2 --upload-id --if-match "6805f2cfc46c0f04559748bb039d69ae" +``` + +## Enforcing conditional writes with a bucket policy + +You can use a [bucket policy](/object-storage/api-cli/bucket-policy/) to enforce conditional writes for object uploads in your bucket. A bucket policy is a resource-based policy that grants access permissions to your bucket and the objects it contains. + +Use the `s3:if-match` or `s3:if-none-match` condition keys in the `Condition` block to define when the policy applies. For multipart uploads, use the `s3:ObjectCreationOperation` condition key to exempt the `CreateMultipartUpload`, `UploadPart`, and `UploadPartCopy` operations, as these do not accept conditional headers. + + + When you enforce conditional writes with a bucket policy, you cannot perform copy operations to the bucket or prefix specified in the policy. `CopyObject` requests without an `If-None-Match` or `If-Match` header fail with a `403 Access Denied` error, and `CopyObject` requests made with these headers fail with a `501 Not Implemented` response. + + +The following example bucket policy denies any `PutObject` request that does not include the `If-None-Match` header, forcing clients to use conditional writes: + +```json +{ + "Version": "2023-04-17", + "Statement": [ + { + "Sid": "EnforceConditionalWrite", + "Effect": "Deny", + "Principal": "*", + "Action": "s3:PutObject", + "Resource": "/*", + "Condition": { + "Null": { + "s3:if-none-match": "true" + } + } + } + ] +} +``` From 87a1e08e887b699555a072a4730527fe84fe656c Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Mon, 29 Jun 2026 15:16:21 +0200 Subject: [PATCH 02/10] feat(object-storage): update --- .../api-cli/using-conditional-writes.mdx | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/pages/object-storage/api-cli/using-conditional-writes.mdx b/pages/object-storage/api-cli/using-conditional-writes.mdx index 7d0be2f3ff..184ecadd18 100644 --- a/pages/object-storage/api-cli/using-conditional-writes.mdx +++ b/pages/object-storage/api-cli/using-conditional-writes.mdx @@ -9,12 +9,13 @@ dates: import Requirements from '@macros/iam/requirements.mdx' -Conditional writes allow you to add an HTTP header to your write requests to specify preconditions for an S3 operation. The operation only proceeds if the precondition is met. Object Storage supports two conditional headers: +Conditional writes allow you to add an HTTP header to your write requests to specify preconditions for Object Storage operations. The operation only proceeds if the precondition is met. Object Storage supports two conditional headers: - The `If-None-Match` header prevents overwrites of existing data by checking that no object with the same key name already exists in the bucket. + - The `If-Match` header checks an object's entity tag (ETag) before writing. Object Storage compares the ETag value you provide with the ETag of the object stored in the bucket. If the values do not match, the operation fails. -Conditional writes help you add concurrency control to your applications and avoid accidental overwrites when several clients write to the same bucket. +Conditional writes help you add concurrency control to your applications and avoid accidental overwrites when several users write to the same bucket. @@ -22,9 +23,9 @@ Conditional writes help you add concurrency control to your applications and avo - Installed the [AWS CLI](/object-storage/api-cli/object-storage-aws-cli/) - An [Object Storage bucket](/object-storage/how-to/create-a-bucket/) -## Preventing object overwrites based on key names +## Preventing object overwrites based on object key names -Use the `If-None-Match` header to check whether an object already exists in the bucket, based on its key name, before creating or copying it. +You can use the `If-None-Match` header to check whether an object already exists in the bucket, based on its key name, before creating or copying it. Conditional writes with the `If-None-Match` header check for the existence of an object during the write operation. If an identical key name is found in the bucket, the operation fails. Without the `If-None-Match` header, uploading or copying an object with an identical key name in an unversioned or version-suspended bucket overwrites the existing object. @@ -32,28 +33,28 @@ Conditional writes with the `If-None-Match` header check for the existence of an Set the `If-None-Match` header value to `*` to check against any object with the same key name. -### Conditional put +### Conditional put operation -The following `put-object` command performs a conditional write for an object with the key name `dir-1/my_images.tar.bz2`. The upload fails if an object with this key already exists. +The following `put-object` command performs a conditional write for an object with the specified key. The upload fails if an object with this key already exists. ```bash -aws s3api put-object --bucket --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --if-none-match "*" +aws s3api put-object --bucket --key --body --if-none-match "*" ``` -### Conditional copy +### Conditional copy operation -The following `copy-object` command copies an object to a destination bucket with a conditional write for the key name `dir-1/my_images.tar.bz2`. The copy fails if an object with this key already exists in the destination bucket. +The following `copy-object` command copies an object to a destination bucket with a conditional write for an object with the specified key. The copy fails if an object with this key already exists in the destination bucket. ```bash -aws s3api copy-object --copy-source / --key dir-1/my_images.tar.bz2 --bucket --if-none-match "*" +aws s3api copy-object --copy-source / --key --bucket --if-none-match "*" ``` -### Conditional multipart upload +### Conditional multipart upload operation -The following `complete-multipart-upload` command completes a multipart upload with a conditional write for the key name `dir-1/my_images.tar.bz2`. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpustruct`. +The following `complete-multipart-upload` command completes a multipart upload with a conditional write for an object with the specified key. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpu-parts-list`. ```bash -aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket --key dir-1/my_images.tar.bz2 --upload-id --if-none-match "*" +aws s3api complete-multipart-upload --multipart-upload file://mpu-parts-list --bucket --key --upload-id --if-none-match "*" ``` ## Preventing overwrites if the object has changed From 0afe3721d028a2a6c5c60645b03050f0bfb147a3 Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Mon, 29 Jun 2026 15:18:14 +0200 Subject: [PATCH 03/10] feat(object-storage): update --- pages/object-storage/menu.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pages/object-storage/menu.ts b/pages/object-storage/menu.ts index 7555928427..edbfa70615 100644 --- a/pages/object-storage/menu.ts +++ b/pages/object-storage/menu.ts @@ -148,6 +148,10 @@ export const objectStorageMenu = { label: 'Managing multipart uploads', slug: 'multipart-uploads', }, + { + label: 'Using conditional writes', + slug: 'using-conditional-writes', + }, { label: 'Enabling SSE-C', slug: 'enable-sse-c', From df51d5647d740125a0d6276da61bc3acea6894b7 Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Wed, 1 Jul 2026 09:44:19 +0200 Subject: [PATCH 04/10] feat(object-storage): ai review test --- .../object-storage/api-cli/using-conditional-writes.mdx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pages/object-storage/api-cli/using-conditional-writes.mdx b/pages/object-storage/api-cli/using-conditional-writes.mdx index 184ecadd18..7427a5671b 100644 --- a/pages/object-storage/api-cli/using-conditional-writes.mdx +++ b/pages/object-storage/api-cli/using-conditional-writes.mdx @@ -3,8 +3,8 @@ title: Using conditional writes description: Add logic to your requests and avoid accidental overwrites with conditional writes for Scaleway Object Storage. tags: object storage object-storage conditional write overwrite etag if-match if-none-match header dates: - validation: 2026-06-29 - posted: 2026-06-29 + validation: 2026-07-01 + posted: 2026-07-01 --- import Requirements from '@macros/iam/requirements.mdx' @@ -12,7 +12,6 @@ import Requirements from '@macros/iam/requirements.mdx' Conditional writes allow you to add an HTTP header to your write requests to specify preconditions for Object Storage operations. The operation only proceeds if the precondition is met. Object Storage supports two conditional headers: - The `If-None-Match` header prevents overwrites of existing data by checking that no object with the same key name already exists in the bucket. - - The `If-Match` header checks an object's entity tag (ETag) before writing. Object Storage compares the ETag value you provide with the ETag of the object stored in the bucket. If the values do not match, the operation fails. Conditional writes help you add concurrency control to your applications and avoid accidental overwrites when several users write to the same bucket. @@ -81,10 +80,10 @@ aws s3api copy-object --copy-source / --key dir- ### Conditional multipart upload -The following `complete-multipart-upload` command completes a multipart upload with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpustruct`. +The following `complete-multipart-upload` command completes a multipart upload with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpu-parts-list`. ```bash -aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket --key dir-1/my_images.tar.bz2 --upload-id --if-match "6805f2cfc46c0f04559748bb039d69ae" +aws s3api complete-multipart-upload --multipart-upload file://mpu-parts-list --bucket --key dir-1/my_images.tar.bz2 --upload-id --if-match "6805f2cfc46c0f04559748bb039d69ae" ``` ## Enforcing conditional writes with a bucket policy From 9ee580bb8b97f458c6b1d82a8b06fbfe0603ce6f Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Wed, 1 Jul 2026 09:49:50 +0200 Subject: [PATCH 05/10] feat(object-storage): ai review test ETAG --- .../api-cli/using-conditional-writes.mdx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pages/object-storage/api-cli/using-conditional-writes.mdx b/pages/object-storage/api-cli/using-conditional-writes.mdx index 7427a5671b..b332785f7c 100644 --- a/pages/object-storage/api-cli/using-conditional-writes.mdx +++ b/pages/object-storage/api-cli/using-conditional-writes.mdx @@ -62,6 +62,22 @@ An object's ETag is a string that is unique to the object and reflects any chang To perform conditional writes with the `If-Match` header, you must have the `s3:PutObject` and `s3:GetObject` permissions. These permissions allow the caller to check the ETag and verify the state of the objects in the bucket. The `If-Match` header expects the ETag value as a string. + + Retrieve an object's ETag before using it with the `If-Match` header. Run the `head-object` command to get the ETag of an existing object: + ```bash + aws s3api head-object --bucket --key + ``` + The command returns a JSON response containing the ETag value: + ```json + { + "ETag": "6805f2cfc46c0f04559748bb039d69ae", + "ContentType": "application/octet-stream", + "Metadata": {} + } + ``` + Use the returned ETag value in your conditional write operations. + + ### Conditional put The following `put-object` command performs a conditional write with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. From 4a5392491bce79606bc6520820f5a1c3a218e0cd Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Wed, 1 Jul 2026 10:07:48 +0200 Subject: [PATCH 06/10] feat(object-storage): update ETAG --- .../api-cli/using-conditional-writes.mdx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pages/object-storage/api-cli/using-conditional-writes.mdx b/pages/object-storage/api-cli/using-conditional-writes.mdx index b332785f7c..bc1762860d 100644 --- a/pages/object-storage/api-cli/using-conditional-writes.mdx +++ b/pages/object-storage/api-cli/using-conditional-writes.mdx @@ -62,12 +62,14 @@ An object's ETag is a string that is unique to the object and reflects any chang To perform conditional writes with the `If-Match` header, you must have the `s3:PutObject` and `s3:GetObject` permissions. These permissions allow the caller to check the ETag and verify the state of the objects in the bucket. The `If-Match` header expects the ETag value as a string. - - Retrieve an object's ETag before using it with the `If-Match` header. Run the `head-object` command to get the ETag of an existing object: +To retrieve an object's ETag, run the `head-object` command to get the ETag of an existing object: + ```bash aws s3api head-object --bucket --key ``` + The command returns a JSON response containing the ETag value: + ```json { "ETag": "6805f2cfc46c0f04559748bb039d69ae", @@ -75,8 +77,8 @@ To perform conditional writes with the `If-Match` header, you must have the `s3: "Metadata": {} } ``` - Use the returned ETag value in your conditional write operations. - + +Use the returned ETag value in your conditional write operations. ### Conditional put From 1ac8e92dec1bca45a08c8640317931420c3e2a42 Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Fri, 3 Jul 2026 14:56:04 +0200 Subject: [PATCH 07/10] feat(object-storage): update --- pages/object-storage/api-cli/using-conditional-writes.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pages/object-storage/api-cli/using-conditional-writes.mdx b/pages/object-storage/api-cli/using-conditional-writes.mdx index bc1762860d..1feabea433 100644 --- a/pages/object-storage/api-cli/using-conditional-writes.mdx +++ b/pages/object-storage/api-cli/using-conditional-writes.mdx @@ -50,6 +50,8 @@ aws s3api copy-object --copy-source / --k ### Conditional multipart upload operation +Conditional writes apply only to the `complete-multipart-upload` operation, which writes the final object to the bucket. The `create-multipart-upload` and `upload-part` operations do not accept conditional headers. For the full multipart upload workflow, refer to [Managing multipart uploads](/object-storage/api-cli/multipart-uploads/). + The following `complete-multipart-upload` command completes a multipart upload with a conditional write for an object with the specified key. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpu-parts-list`. ```bash @@ -98,6 +100,8 @@ aws s3api copy-object --copy-source / --key dir- ### Conditional multipart upload +Conditional writes apply only to the `complete-multipart-upload` operation, which writes the final object to the bucket. The `create-multipart-upload` and `upload-part` operations do not accept conditional headers. For the full multipart upload workflow, refer to [Managing multipart uploads](/object-storage/api-cli/multipart-uploads/). + The following `complete-multipart-upload` command completes a multipart upload with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpu-parts-list`. ```bash From 815a69fe3e9fc30200e420af84e11c3ec3b79676 Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Fri, 3 Jul 2026 15:16:06 +0200 Subject: [PATCH 08/10] feat(object-storage): update --- .../api-cli/using-conditional-writes.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pages/object-storage/api-cli/using-conditional-writes.mdx b/pages/object-storage/api-cli/using-conditional-writes.mdx index 1feabea433..6dd2ab5393 100644 --- a/pages/object-storage/api-cli/using-conditional-writes.mdx +++ b/pages/object-storage/api-cli/using-conditional-writes.mdx @@ -84,28 +84,28 @@ Use the returned ETag value in your conditional write operations. ### Conditional put -The following `put-object` command performs a conditional write with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. +The following `put-object` command performs a conditional write with the ETag value retrieved above. ```bash -aws s3api put-object --bucket --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --if-match "6805f2cfc46c0f04559748bb039d69ae" +aws s3api put-object --bucket --key --body --if-match "" ``` ### Conditional copy -The following `copy-object` command performs a conditional write with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. +The following `copy-object` command performs a conditional write with the ETag value retrieved above. ```bash -aws s3api copy-object --copy-source / --key dir-1/my_images.tar.bz2 --bucket --if-match "6805f2cfc46c0f04559748bb039d69ae" +aws s3api copy-object --copy-source / --key --bucket --if-match "" ``` ### Conditional multipart upload Conditional writes apply only to the `complete-multipart-upload` operation, which writes the final object to the bucket. The `create-multipart-upload` and `upload-part` operations do not accept conditional headers. For the full multipart upload workflow, refer to [Managing multipart uploads](/object-storage/api-cli/multipart-uploads/). -The following `complete-multipart-upload` command completes a multipart upload with the ETag value `6805f2cfc46c0f04559748bb039d69ae`. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpu-parts-list`. +The following `complete-multipart-upload` command completes a multipart upload with the ETag value retrieved above. The `file://` prefix loads the JSON structure listing all uploaded parts from a local file named `mpu-parts-list`. ```bash -aws s3api complete-multipart-upload --multipart-upload file://mpu-parts-list --bucket --key dir-1/my_images.tar.bz2 --upload-id --if-match "6805f2cfc46c0f04559748bb039d69ae" +aws s3api complete-multipart-upload --multipart-upload file://mpu-parts-list --bucket --key --upload-id --if-match "" ``` ## Enforcing conditional writes with a bucket policy From 7cefe70a76db0c531a7c38c3039bfd7dab98247c Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Fri, 3 Jul 2026 15:20:23 +0200 Subject: [PATCH 09/10] feat(object-storage): update --- pages/object-storage/api-cli/using-conditional-writes.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/object-storage/api-cli/using-conditional-writes.mdx b/pages/object-storage/api-cli/using-conditional-writes.mdx index 6dd2ab5393..0a47ff8c0f 100644 --- a/pages/object-storage/api-cli/using-conditional-writes.mdx +++ b/pages/object-storage/api-cli/using-conditional-writes.mdx @@ -118,7 +118,7 @@ Use the `s3:if-match` or `s3:if-none-match` condition keys in the `Condition` bl When you enforce conditional writes with a bucket policy, you cannot perform copy operations to the bucket or prefix specified in the policy. `CopyObject` requests without an `If-None-Match` or `If-Match` header fail with a `403 Access Denied` error, and `CopyObject` requests made with these headers fail with a `501 Not Implemented` response. -The following example bucket policy denies any `PutObject` request that does not include the `If-None-Match` header, forcing clients to use conditional writes: +The following example bucket policy allows a `PutObject` request only when it includes the `If-None-Match` header, forcing clients to use conditional writes. ```json { @@ -126,13 +126,13 @@ The following example bucket policy denies any `PutObject` request that does not "Statement": [ { "Sid": "EnforceConditionalWrite", - "Effect": "Deny", + "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": "/*", "Condition": { "Null": { - "s3:if-none-match": "true" + "s3:if-none-match": "false" } } } From ea858fa19d7a69b918f4b5211776a9a6f9d30f3e Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Fri, 3 Jul 2026 15:21:03 +0200 Subject: [PATCH 10/10] feat(object-storage): update --- pages/object-storage/api-cli/using-conditional-writes.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/object-storage/api-cli/using-conditional-writes.mdx b/pages/object-storage/api-cli/using-conditional-writes.mdx index 0a47ff8c0f..6d54e42303 100644 --- a/pages/object-storage/api-cli/using-conditional-writes.mdx +++ b/pages/object-storage/api-cli/using-conditional-writes.mdx @@ -3,8 +3,8 @@ title: Using conditional writes description: Add logic to your requests and avoid accidental overwrites with conditional writes for Scaleway Object Storage. tags: object storage object-storage conditional write overwrite etag if-match if-none-match header dates: - validation: 2026-07-01 - posted: 2026-07-01 + validation: 2026-07-03 + posted: 2026-07-03 --- import Requirements from '@macros/iam/requirements.mdx'