Skip to main content

📖 Supported S3 Operations

L3 implements the S3 REST surface that mainstream tools actually use. Requests are authenticated with AWS Signature Version 4 (header or presigned query form).

Service & bucket operations​

OperationStatusNotes
ListBuckets✅Your buckets only
CreateBucket✅Names globally unique
HeadBucket✅
DeleteBucket✅Must be empty
GetBucketLocation✅Returns auto
ListObjects (v1)✅prefix, delimiter, marker
ListObjectsV2✅prefix, delimiter, pagination, start-after, encoding-type=url
DeleteObjects (batch)✅

Object operations​

OperationStatusNotes
PutObject✅Including aws-chunked streaming bodies; custom x-amz-meta-*
GetObject✅Range requests (206)
HeadObject✅
DeleteObject✅See S3 and IPFS semantics
CopyObject✅Zero-copy: instant regardless of size (same CID)
Presigned URLs✅SigV4 query auth, X-Amz-Expires honored

Multipart uploads​

OperationStatusNotes
CreateMultipartUpload✅
UploadPart✅
CompleteMultipartUpload✅Standard md5-of-md5s-N ETag; produces one CID
AbortMultipartUpload✅
ListParts✅
UploadPartCopy❌Planned

Compatibility stubs​

These subresources return safe, well-formed defaults so common tooling (Terraform, rclone, consoles) doesn't break, but the features are not active:

versioning, acl, policy, lifecycle, cors, tagging, encryption, website, logging, notification, object-lock, replication, and similar bucket configuration endpoints.

Not supported​

  • Bucket policies / IAM — access is per keypair; each bucket has exactly one owner
  • Object versioning API (although prior versions' CIDs are retained internally — see semantics)
  • Object tagging, If-Match / If-None-Match conditional requests (planned)

See Limits & Differences for behavioral differences from Amazon S3.