This page documents the S3 API operations for managing objects in Garage.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/deuxfleurs-org/garage/llms.txt
Use this file to discover all available pages before exploring further.
PutObject
Uploads an object to a bucket.Request Headers
MIME type of the object
Base64-encoded MD5 hash of the object data for integrity verification
User-defined metadata (e.g.,
x-amz-meta-author: John Doe)Cache control directives
Presentation information for the object
Content encodings applied to the object
Language of the content
Expiry date for the object
Checksums
Garage supports additional checksum algorithms:Base64-encoded CRC32 checksum
Base64-encoded CRC32C checksum
Base64-encoded SHA1 checksum
Base64-encoded SHA256 checksum
Example
AWS CLI
cURL
Response
Entity tag (MD5 hash for unencrypted objects)
Version ID of the object (hex-encoded UUID)
GetObject
Retrieves an object from a bucket.Query Parameters
Override
Cache-Control header in responseOverride
Content-Disposition header in responseOverride
Content-Encoding header in responseOverride
Content-Language header in responseOverride
Content-Type header in responseOverride
Expires header in responseRequest Headers
Downloads a specific byte range (e.g.,
bytes=0-1023)Return object only if ETag matches
Return object only if ETag doesn’t match
Return object only if modified since specified date
Return object only if not modified since specified date
Set to
ENABLED to receive checksum headers in responseExample
AWS CLI
cURL
Range Request
Response
HeadObject
Retrieves metadata about an object without downloading the object itself.Example
AWS CLI
cURL
Response
DeleteObject
Deletes an object from a bucket.Example
AWS CLI
cURL
Response
DeleteObject succeeds even if the object doesn’t exist (idempotent operation).
DeleteObjects
Deletes multiple objects in a single request.Request Body
Example
AWS CLI
Response
CopyObject
Copies an object from one location to another.Request Headers
Source object in format:
/bucket/keyCopy only if source ETag matches
Copy only if source ETag doesn’t match
Copy only if source modified since date
Copy only if source not modified since date
COPY (default) or REPLACE to override metadataExample
AWS CLI
cURL
Response
PostObject
Uploads an object using HTML form-based upload.Example HTML Form
PostObject is useful for browser-based uploads. See AWS documentation for policy document format.
Block Storage Details
Garage stores objects using a content-addressed block storage system:Inline Storage
Objects smaller than the inline threshold (3KB by default) are stored directly in the object table for better performance.Block-based Storage
Larger objects are split into blocks:- Data is chunked based on the configured
block_size(default: 1MB) - Each block is encrypted (if SSE-C is used) and hashed with BLAKE2
- Blocks are distributed across cluster nodes
- Block references are stored in the version table
Checksums
Garage calculates and verifies checksums during upload:- MD5: Used as ETag for non-encrypted objects
- SHA256: Optional, for AWS Signature v4
- CRC32/CRC32C/CRC64NVME: Optional additional checksums
Unsupported Operations
The following object operations are not implemented:- Object ACLs (
GetObjectAcl,PutObjectAcl) - Object tagging (
GetObjectTagging,PutObjectTagging,DeleteObjectTagging) - Object legal hold and retention
- Object torrents
- Object versioning (separate version operations)
See Also
- Multipart Uploads - For large objects
- Bucket Operations
- S3 Authentication