# S3 API compatibility

## Supported S3 APIs

<table data-full-width="true"><thead><tr><th>Methods</th><th>Notes</th></tr></thead><tbody><tr><td>GET Service</td><td><p>cegedim.Cloud Object Storage Service supports marker and max-keys parameters to enable paging of bucket list.</p><pre><code>GET /?marker=&#x3C;bucket>&#x26;max-keys=&#x3C;num>
</code></pre><p>For example:</p><pre><code>GET /?marker=mybucket&#x26;max-keys=40
</code></pre></td></tr><tr><td>DELETE Bucket</td><td></td></tr><tr><td>DELETE Bucket cors</td><td></td></tr><tr><td>DELETE Bucket lifecycle</td><td><p>Only the expiration part is supported in lifecycle.</p><p>Policies related to archiving (AWS Glacier like) are not supported.</p><p>Lifecycle is not supported on file system-enabled buckets.</p></td></tr><tr><td>DELETE Bucket policy</td><td></td></tr><tr><td>GET Bucket (List Objects)</td><td>For file system-enabled buckets, / is the only supported delimiter when listing objects in the bucket.</td></tr><tr><td>GET Bucket cors</td><td></td></tr><tr><td>GET Bucket acl</td><td></td></tr><tr><td>GET Bucket lifecycle</td><td><p>Only the expiration part is supported in lifecycle.</p><p>Policies related to archiving (AWS Glacier like) are not supported.</p><p>Lifecycle is not supported on file system-enabled buckets.</p></td></tr><tr><td>GET Bucket policy</td><td></td></tr><tr><td>GET Bucket Object versions</td><td></td></tr><tr><td>GET Bucket versioning</td><td></td></tr><tr><td>HEAD Bucket</td><td></td></tr><tr><td>List Multipart Uploads</td><td></td></tr><tr><td>PUT Bucket</td><td>Where PUT is performed on an existing bucket, refer to Behavior where bucket already exists.</td></tr><tr><td>PUT Bucket cors</td><td></td></tr><tr><td>PUT Bucket acl</td><td></td></tr><tr><td>PUT Bucket lifecycle</td><td><p>Only the expiration part is supported in lifecycle.</p><p>Policies related to archiving (AWS Glacier like) are not supported.</p><p>Lifecycle is not supported on file system-enabled buckets.</p></td></tr><tr><td>PUT Bucket policy</td><td>Bucket policies cannot be configured for operations that are not supported by cegedim.cloud Object Storage Service.</td></tr><tr><td>PUT Bucket versioning</td><td></td></tr><tr><td>DELETE Object</td><td></td></tr><tr><td>Delete Multiple Objects</td><td></td></tr><tr><td>GET Object</td><td></td></tr><tr><td>GET Object ACL</td><td></td></tr><tr><td>HEAD Object</td><td></td></tr><tr><td>PUT Object</td><td>Supports chunked PUT</td></tr><tr><td>PUT Object acl</td><td></td></tr><tr><td>PUT Object - Copy</td><td></td></tr><tr><td>OPTIONS object</td><td></td></tr><tr><td>Initiate Multipart Upload</td><td></td></tr><tr><td>Upload Part</td><td></td></tr><tr><td>Upload Part - Copy</td><td></td></tr><tr><td>Complete Multipart Upload</td><td>cegedim.cloud Object Storage Service returns an ETag of 00 for this request. This differs from the Amazon S3 response.</td></tr><tr><td>Abort Multipart Upload</td><td></td></tr><tr><td>List Parts</td><td></td></tr></tbody></table>

## Unsupported S3 APIs

<table data-full-width="true"><thead><tr><th>Methods</th><th>Notes</th></tr></thead><tbody><tr><td>DELETE Bucket tagging</td><td></td></tr><tr><td>DELETE Bucket website</td><td></td></tr><tr><td>GET Bucket location</td><td>cegedim.cloud Object Storage Service is only aware of a single region.</td></tr><tr><td>GET Bucket logging</td><td></td></tr><tr><td>GET Bucket notification</td><td>Notification is only defined for reduced redundancy feature in S3. cegedim.cloud Object Storage Service does not currently support notifications.</td></tr><tr><td>GET Bucket tagging</td><td></td></tr><tr><td>GET Bucket requestPayment</td><td>cegedim.cloud Object Storage Service uses its own model for payments.</td></tr><tr><td>GET Bucket website</td><td></td></tr><tr><td>PUT Bucket logging</td><td></td></tr><tr><td>PUT Bucket notification</td><td>Notification is only defined for the reduced redundancy feature in S3. cegedim.cloud Object Storage Service does not currently support notifications.</td></tr><tr><td>PUT Bucket tagging</td><td></td></tr><tr><td>PUT Bucket requestPayment</td><td>cegedim.cloud Object Storage Service uses its own model for payments.</td></tr><tr><td>PUT Bucket website</td><td></td></tr><tr><td>Object APIs</td><td></td></tr><tr><td>GET Object torrent</td><td></td></tr><tr><td>POST Object</td><td></td></tr><tr><td>POST Object restore</td><td>This operation is related to AWS Glacier, which is not supported.</td></tr></tbody></table>

## Specific behaviors

Specific behaviors compared to **AWS API** :

Creation of buckets using names with fewer than three characters fails with :

```
400 Bad Request, InvalidBucketName
```

***

When creating a bucket or object with empty content, cegedim.cloud Object Storage Service returns `400 invalid content-length` value, which differs from AWS which returns `400 Bad Request`.

***

Copying an object to another bucket that indexes the same user metadata index key but with a different datatype is not supported and fails with `500 Server Error`.d

***

When listing the objects in a bucket, if you use a prefix and delimiter but supply an invalid marker, cegedim.cloud Object Storage Service throws `500 Server Error`, or `400 Bad Request` for a file system-enabled bucket.

However, AWS returns `200 OK` and the objects are not listed.

***

For versioning enabled buckets, cegedim.cloud Object Storage Service does not create a delete marker when a deleted object is deleted again.

This is different from **AWS**, which always inserts delete marker for deleting deleted objects in versioning enabled buckets.

This change in behavior is only applicable when the deleted object is deleted again from owner zone.

***

When an attempt is made to create a bucket with a name that already exists, the behavior of cegedim.cloud Object Storage Service can differ from **AWS**.

AWS always returns `409 Conflict` when a user who has **FULL\_CONTROL** permissions on the bucket, or any other permissions, attempts to recreate the bucket. When an Object User who has `FULL_CONTROL` or `WRITE_ACP` on the **bucket** attempts to recreate the **bucket**,

cegedim.cloud Object Storage Service returns `200 OK` and the ACL is overwritten, however, the owner is not changed. An **Object User** with WRITE/READ permissions will get `409 Conflict` if they attempt to recreate a bucket.

Where an attempt to recreate a bucket is made by the bucket owner, Object Storage Service returns `200 OK` and overwrites the ACL. AWS behaves in the same way.

Where a user has no access privileges on the bucket, an attempt to recreate the bucket throws a `409 Conflict` error. AWS behaves in the same way.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://academy.cegedim.cloud/storage/object-storage/object-storage-features/s3-api-compatibility.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
