minio/minio
S3 API
MinIO implements the S3 REST API. The router is cmd/api-router.go; verbs are dispatched to handlers across several files. This page is an inventory, not a spec — refer to AWS S3 docs for argument details.
Object operations
| Operation | Handler file |
|---|---|
PutObject |
cmd/object-handlers.go |
GetObject / HeadObject |
cmd/object-handlers.go |
DeleteObject / DeleteObjects |
cmd/object-handlers.go |
CopyObject |
cmd/object-handlers.go |
PutObjectTagging / GetObjectTagging / DeleteObjectTagging |
cmd/object-handlers.go |
PutObjectAcl / GetObjectAcl |
cmd/acl-handlers.go |
PutObjectRetention / PutObjectLegalHold |
cmd/object-handlers.go |
RestoreObject |
cmd/object-handlers.go |
SelectObjectContent |
cmd/object-handlers.go (delegates to internal/s3select/) |
Multipart upload
| Operation | Handler file |
|---|---|
CreateMultipartUpload |
cmd/object-multipart-handlers.go |
UploadPart / UploadPartCopy |
cmd/object-multipart-handlers.go |
CompleteMultipartUpload |
cmd/object-multipart-handlers.go |
AbortMultipartUpload |
cmd/object-multipart-handlers.go |
ListParts |
cmd/object-multipart-handlers.go |
ListMultipartUploads |
cmd/object-multipart-handlers.go |
Bucket operations
| Operation | Handler file |
|---|---|
CreateBucket, DeleteBucket |
cmd/bucket-handlers.go |
ListBuckets |
cmd/bucket-handlers.go |
HeadBucket |
cmd/bucket-handlers.go |
ListObjects (V1, V2) |
cmd/bucket-listobjects-handlers.go |
ListObjectVersions |
cmd/bucket-listobjects-handlers.go |
Put/Get/Delete BucketPolicy |
cmd/bucket-policy-handlers.go |
Put/Get BucketVersioning |
cmd/bucket-versioning-handler.go |
Put/Get BucketLifecycleConfiguration |
cmd/bucket-lifecycle-handlers.go |
Put/Get BucketReplication |
cmd/bucket-replication-handlers.go |
Put/Get BucketEncryption |
cmd/bucket-encryption-handlers.go |
Put/Get BucketNotificationConfiguration |
cmd/bucket-notification-handlers.go |
Put/Get BucketTagging |
cmd/bucket-handlers.go |
Put/Get BucketObjectLockConfiguration |
cmd/bucket-object-lock.go |
Get/Put BucketCors |
cmd/bucket-handlers.go |
Get BucketLocation |
cmd/bucket-handlers.go |
Get/Put BucketACL |
cmd/acl-handlers.go |
Streaming and signed URLs
- Streaming SigV4 (
AWS-Chunked) is implemented incmd/streaming-signature-v4.go. - Unsigned trailer mode is in
cmd/streaming-v4-unsigned.go. - Pre-signed URL validation is in
cmd/signature-v4.go. - POST policy uploads are in
cmd/postpolicyform.goandcmd/post-policy-fan-out.go.
Rejected / not-implemented
cmd/api-router.go explicitly rejects a few S3 features (?torrent, ?accelerate, ?requestPayment, ...) with NotImplemented. The list is in the file's rejectedObjAPIs and rejectedBucketAPIs.
CORS
Standard AWS CORS rules with default-on per-bucket configuration support. Implemented in cmd/bucket-handlers.go and middleware in cmd/api-router.go (uses github.com/rs/cors).
CompleteMultipartUpload tweaks
MinIO supports a few non-standard tweaks the AWS spec doesn't cover:
- "Fan-out" upload: a single uploaded object can be replicated into multiple keys via the
x-minio-fan-outheader (cmd/post-policy-fan-out.go). - Implicit checksums: when a client doesn't include
x-amz-checksum-*, MinIO computes one anyway and surfaces it in the response.
Errors
Every S3 error code maps to an entry in cmd/api-errors.go (95 KB of switch + descriptors). The string table is generated by stringer (apierrorcode_string.go). Custom MinIO-only codes start with MinIO.
See also
- Object API and HTTP — the request lifecycle.
- Versioning and Object Lock — versioning semantics and retention.
- Bucket replication flow — what happens after a write to a replicated bucket.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.