@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Amazon Simple Storage Service
@version 2006-03-01
@auth AWS SigV4
@endpoints 99
@hint download_for_search
@toc {Bucket}(28), {Bucket}?session(1), {Bucket}?analytics(4), {Bucket}?cors(3), {Bucket}?encryption(3), {Bucket}?intelligent-tiering(4), {Bucket}?inventory(4), {Bucket}?lifecycle(5), {Bucket}?metrics(4), {Bucket}?ownershipControls(3), {Bucket}?policy(3), {Bucket}?replication(3), {Bucket}?tagging(3), {Bucket}?website(3), {Bucket}?delete(1), {Bucket}?publicAccessBlock(3), {Bucket}?accelerate(2), {Bucket}?acl(2), {Bucket}?location(1), {Bucket}?logging(2), {Bucket}?notification(4), {Bucket}?policyStatus(1), {Bucket}?requestPayment(2), {Bucket}?versioning(2), {Bucket}?object-lock(2), root(2), {Bucket}?uploads(1), {Bucket}?versions(1), {Bucket}?list-type=2(1), WriteGetObjectResponse(1)

@group {Bucket}
@endpoint DELETE /{Bucket}/{Key+}
@required {Bucket: str, Key: str, uploadId: str}
@optional {x-amz-request-payer: str, x-amz-expected-bucket-owner: str}
@returns(200) {RequestCharged: str?}

@endpoint POST /{Bucket}/{Key+}
@required {Bucket: str, Key: str, uploadId: str}
@optional {x-amz-checksum-crc32: str, x-amz-checksum-crc32c: str, x-amz-checksum-sha1: str, x-amz-checksum-sha256: str, x-amz-request-payer: str, x-amz-expected-bucket-owner: str, If-None-Match: str, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, MultipartUpload: CompletedMultipartUpload}
@returns(200) {Location: str?, Bucket: str?, Key: str?, Expiration: str?, ETag: str?, ChecksumCRC32: str?, ChecksumCRC32C: str?, ChecksumSHA1: str?, ChecksumSHA256: str?, ServerSideEncryption: str?, VersionId: str?, SSEKMSKeyId: str?, BucketKeyEnabled: bool?, RequestCharged: str?}

@endpoint PUT /{Bucket}/{Key+}
@required {Bucket: str, x-amz-copy-source: str, Key: str}
@optional {x-amz-acl: str, Cache-Control: str, x-amz-checksum-algorithm: str, Content-Disposition: str, Content-Encoding: str, Content-Language: str, Content-Type: str, x-amz-copy-source-if-match: str, x-amz-copy-source-if-modified-since: str(timestamp), x-amz-copy-source-if-none-match: str, x-amz-copy-source-if-unmodified-since: str(timestamp), Expires: str(timestamp), x-amz-grant-full-control: str, x-amz-grant-read: str, x-amz-grant-read-acp: str, x-amz-grant-write-acp: str, x-amz-metadata-directive: str, x-amz-tagging-directive: str, x-amz-server-side-encryption: str, x-amz-storage-class: str, x-amz-website-redirect-location: str, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, x-amz-server-side-encryption-aws-kms-key-id: str, x-amz-server-side-encryption-context: str, x-amz-server-side-encryption-bucket-key-enabled: bool, x-amz-copy-source-server-side-encryption-customer-algorithm: str, x-amz-copy-source-server-side-encryption-customer-key: bytes, x-amz-copy-source-server-side-encryption-customer-key-MD5: str, x-amz-request-payer: str, x-amz-tagging: str, x-amz-object-lock-mode: str, x-amz-object-lock-retain-until-date: str(timestamp), x-amz-object-lock-legal-hold: str, x-amz-expected-bucket-owner: str, x-amz-source-expected-bucket-owner: str, Metadata: map<str,str>}
@returns(200) {CopyObjectResult: CopyObjectResult?{ETag: str?, LastModified: str(timestamp)?, ChecksumCRC32: str?, ChecksumCRC32C: str?, ChecksumSHA1: str?, ChecksumSHA256: str?}, Expiration: str?, CopySourceVersionId: str?, VersionId: str?, ServerSideEncryption: str?, SSECustomerAlgorithm: str?, SSECustomerKeyMD5: str?, SSEKMSKeyId: str?, SSEKMSEncryptionContext: str?, BucketKeyEnabled: bool?, RequestCharged: str?}

@endpoint PUT /{Bucket}
@required {Bucket: str}
@optional {x-amz-acl: str, x-amz-grant-full-control: str, x-amz-grant-read: str, x-amz-grant-read-acp: str, x-amz-grant-write: str, x-amz-grant-write-acp: str, x-amz-bucket-object-lock-enabled: bool, x-amz-object-ownership: str, CreateBucketConfiguration: CreateBucketConfiguration}
@returns(200) {Location: str?}

@endpoint POST /{Bucket}/{Key+}?uploads
@required {Bucket: str, Key: str}
@optional {x-amz-acl: str, Cache-Control: str, Content-Disposition: str, Content-Encoding: str, Content-Language: str, Content-Type: str, Expires: str(timestamp), x-amz-grant-full-control: str, x-amz-grant-read: str, x-amz-grant-read-acp: str, x-amz-grant-write-acp: str, x-amz-server-side-encryption: str, x-amz-storage-class: str, x-amz-website-redirect-location: str, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, x-amz-server-side-encryption-aws-kms-key-id: str, x-amz-server-side-encryption-context: str, x-amz-server-side-encryption-bucket-key-enabled: bool, x-amz-request-payer: str, x-amz-tagging: str, x-amz-object-lock-mode: str, x-amz-object-lock-retain-until-date: str(timestamp), x-amz-object-lock-legal-hold: str, x-amz-expected-bucket-owner: str, x-amz-checksum-algorithm: str, Metadata: map<str,str>}
@returns(200) {AbortDate: str(timestamp)?, AbortRuleId: str?, Bucket: str?, Key: str?, UploadId: str?, ServerSideEncryption: str?, SSECustomerAlgorithm: str?, SSECustomerKeyMD5: str?, SSEKMSKeyId: str?, SSEKMSEncryptionContext: str?, BucketKeyEnabled: bool?, RequestCharged: str?, ChecksumAlgorithm: str?}

@endgroup

@group {Bucket}?session
@endpoint GET /{Bucket}?session
@required {Bucket: str}
@optional {x-amz-create-session-mode: str, x-amz-server-side-encryption: str, x-amz-server-side-encryption-aws-kms-key-id: str, x-amz-server-side-encryption-context: str, x-amz-server-side-encryption-bucket-key-enabled: bool}
@returns(200) {ServerSideEncryption: str?, SSEKMSKeyId: str?, SSEKMSEncryptionContext: str?, BucketKeyEnabled: bool?, Credentials: SessionCredentials{AccessKeyId: str, SecretAccessKey: str, SessionToken: str, Expiration: str(timestamp)}}

@endgroup

@group {Bucket}
@endpoint DELETE /{Bucket}
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?analytics
@endpoint DELETE /{Bucket}?analytics
@required {Bucket: str, id: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?cors
@endpoint DELETE /{Bucket}?cors
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?encryption
@endpoint DELETE /{Bucket}?encryption
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?intelligent-tiering
@endpoint DELETE /{Bucket}?intelligent-tiering
@required {Bucket: str, id: str}

@endgroup

@group {Bucket}?inventory
@endpoint DELETE /{Bucket}?inventory
@required {Bucket: str, id: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?lifecycle
@endpoint DELETE /{Bucket}?lifecycle
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?metrics
@endpoint DELETE /{Bucket}?metrics
@required {Bucket: str, id: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?ownershipControls
@endpoint DELETE /{Bucket}?ownershipControls
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?policy
@endpoint DELETE /{Bucket}?policy
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?replication
@endpoint DELETE /{Bucket}?replication
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?tagging
@endpoint DELETE /{Bucket}?tagging
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?website
@endpoint DELETE /{Bucket}?website
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}
@endpoint DELETE /{Bucket}/{Key+}
@required {Bucket: str, Key: str}
@optional {x-amz-mfa: str, versionId: str, x-amz-request-payer: str, x-amz-bypass-governance-retention: bool, x-amz-expected-bucket-owner: str}
@returns(200) {DeleteMarker: bool?, VersionId: str?, RequestCharged: str?}

@endpoint DELETE /{Bucket}/{Key+}?tagging
@required {Bucket: str, Key: str}
@optional {versionId: str, x-amz-expected-bucket-owner: str}
@returns(200) {VersionId: str?}

@endgroup

@group {Bucket}?delete
@endpoint POST /{Bucket}?delete
@required {Bucket: str, Delete: Delete}
@optional {x-amz-mfa: str, x-amz-request-payer: str, x-amz-bypass-governance-retention: bool, x-amz-expected-bucket-owner: str, x-amz-sdk-checksum-algorithm: str}
@returns(200) {Deleted: [DeletedObject]?, RequestCharged: str?, Errors: [Error]?}

@endgroup

@group {Bucket}?publicAccessBlock
@endpoint DELETE /{Bucket}?publicAccessBlock
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?accelerate
@endpoint GET /{Bucket}?accelerate
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str, x-amz-request-payer: str}
@returns(200) {Status: str?, RequestCharged: str?}

@endgroup

@group {Bucket}?acl
@endpoint GET /{Bucket}?acl
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {Owner: Owner?{DisplayName: str?, ID: str?}, Grants: [Grant]?}

@endgroup

@group {Bucket}?analytics
@endpoint GET /{Bucket}?analytics
@required {Bucket: str, id: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {AnalyticsConfiguration: AnalyticsConfiguration?{Id: str, Filter: AnalyticsFilter?{Prefix: str?, Tag: Tag?{Key: str, Value: str}, And: AnalyticsAndOperator?{Prefix: str?, Tags: [Tag]?}}, StorageClassAnalysis: StorageClassAnalysis{DataExport: StorageClassAnalysisDataExport?{OutputSchemaVersion: str, Destination: AnalyticsExportDestination}}}}

@endgroup

@group {Bucket}?cors
@endpoint GET /{Bucket}?cors
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {CORSRules: [CORSRule]?}

@endgroup

@group {Bucket}?encryption
@endpoint GET /{Bucket}?encryption
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {ServerSideEncryptionConfiguration: ServerSideEncryptionConfiguration?{Rules: [ServerSideEncryptionRule]}}

@endgroup

@group {Bucket}?intelligent-tiering
@endpoint GET /{Bucket}?intelligent-tiering
@required {Bucket: str, id: str}
@returns(200) {IntelligentTieringConfiguration: IntelligentTieringConfiguration?{Id: str, Filter: IntelligentTieringFilter?{Prefix: str?, Tag: Tag?{Key: str, Value: str}, And: IntelligentTieringAndOperator?{Prefix: str?, Tags: [Tag]?}}, Status: str, Tierings: [Tiering]}}

@endgroup

@group {Bucket}?inventory
@endpoint GET /{Bucket}?inventory
@required {Bucket: str, id: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {InventoryConfiguration: InventoryConfiguration?{Destination: InventoryDestination{S3BucketDestination: InventoryS3BucketDestination{AccountId: str?, Bucket: str, Format: str, Prefix: str?, Encryption: InventoryEncryption?}}, IsEnabled: bool, Filter: InventoryFilter?{Prefix: str}, Id: str, IncludedObjectVersions: str, OptionalFields: [str]?, Schedule: InventorySchedule{Frequency: str}}}

@endgroup

@group {Bucket}?lifecycle
@endpoint GET /{Bucket}?lifecycle
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {Rules: [Rule]?}

@endpoint GET /{Bucket}?lifecycle
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {Rules: [LifecycleRule]?, TransitionDefaultMinimumObjectSize: str?}

@endgroup

@group {Bucket}?location
@endpoint GET /{Bucket}?location
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {LocationConstraint: str?}

@endgroup

@group {Bucket}?logging
@endpoint GET /{Bucket}?logging
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {LoggingEnabled: LoggingEnabled?{TargetBucket: str, TargetGrants: [TargetGrant]?, TargetPrefix: str, TargetObjectKeyFormat: TargetObjectKeyFormat?{SimplePrefix: SimplePrefix?, PartitionedPrefix: PartitionedPrefix?{PartitionDateSource: str?}}}}

@endgroup

@group {Bucket}?metrics
@endpoint GET /{Bucket}?metrics
@required {Bucket: str, id: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {MetricsConfiguration: MetricsConfiguration?{Id: str, Filter: MetricsFilter?{Prefix: str?, Tag: Tag?{Key: str, Value: str}, AccessPointArn: str?, And: MetricsAndOperator?{Prefix: str?, Tags: [Tag]?, AccessPointArn: str?}}}}

@endgroup

@group {Bucket}?notification
@endpoint GET /{Bucket}?notification
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {TopicConfiguration: TopicConfigurationDeprecated?{Id: str?, Events: [str]?, Event: str?, Topic: str?}, QueueConfiguration: QueueConfigurationDeprecated?{Id: str?, Event: str?, Events: [str]?, Queue: str?}, CloudFunctionConfiguration: CloudFunctionConfiguration?{Id: str?, Event: str?, Events: [str]?, CloudFunction: str?, InvocationRole: str?}}

@endpoint GET /{Bucket}?notification
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {TopicConfigurations: [TopicConfiguration]?, QueueConfigurations: [QueueConfiguration]?, LambdaFunctionConfigurations: [LambdaFunctionConfiguration]?, EventBridgeConfiguration: EventBridgeConfiguration?}

@endgroup

@group {Bucket}?ownershipControls
@endpoint GET /{Bucket}?ownershipControls
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {OwnershipControls: OwnershipControls?{Rules: [OwnershipControlsRule]}}

@endgroup

@group {Bucket}?policy
@endpoint GET /{Bucket}?policy
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {Policy: str?}

@endgroup

@group {Bucket}?policyStatus
@endpoint GET /{Bucket}?policyStatus
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {PolicyStatus: PolicyStatus?{IsPublic: bool?}}

@endgroup

@group {Bucket}?replication
@endpoint GET /{Bucket}?replication
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {ReplicationConfiguration: ReplicationConfiguration?{Role: str, Rules: [ReplicationRule]}}

@endgroup

@group {Bucket}?requestPayment
@endpoint GET /{Bucket}?requestPayment
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {Payer: str?}

@endgroup

@group {Bucket}?tagging
@endpoint GET /{Bucket}?tagging
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {TagSet: [Tag]}

@endgroup

@group {Bucket}?versioning
@endpoint GET /{Bucket}?versioning
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {Status: str?, MFADelete: str?}

@endgroup

@group {Bucket}?website
@endpoint GET /{Bucket}?website
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {RedirectAllRequestsTo: RedirectAllRequestsTo?{HostName: str, Protocol: str?}, IndexDocument: IndexDocument?{Suffix: str}, ErrorDocument: ErrorDocument?{Key: str}, RoutingRules: [RoutingRule]?}

@endgroup

@group {Bucket}
@endpoint GET /{Bucket}/{Key+}
@required {Bucket: str, Key: str}
@optional {If-Match: str, If-Modified-Since: str(timestamp), If-None-Match: str, If-Unmodified-Since: str(timestamp), Range: str, response-cache-control: str, response-content-disposition: str, response-content-encoding: str, response-content-language: str, response-content-type: str, response-expires: str(timestamp), versionId: str, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, x-amz-request-payer: str, partNumber: int, x-amz-expected-bucket-owner: str, x-amz-checksum-mode: str}
@returns(200) {Body: bytes?, DeleteMarker: bool?, AcceptRanges: str?, Expiration: str?, Restore: str?, LastModified: str(timestamp)?, ContentLength: int(i64)?, ETag: str?, ChecksumCRC32: str?, ChecksumCRC32C: str?, ChecksumSHA1: str?, ChecksumSHA256: str?, MissingMeta: int?, VersionId: str?, CacheControl: str?, ContentDisposition: str?, ContentEncoding: str?, ContentLanguage: str?, ContentRange: str?, ContentType: str?, Expires: str(timestamp)?, ExpiresString: str?, WebsiteRedirectLocation: str?, ServerSideEncryption: str?, Metadata: map<str,str>?, SSECustomerAlgorithm: str?, SSECustomerKeyMD5: str?, SSEKMSKeyId: str?, BucketKeyEnabled: bool?, StorageClass: str?, RequestCharged: str?, ReplicationStatus: str?, PartsCount: int?, TagCount: int?, ObjectLockMode: str?, ObjectLockRetainUntilDate: str(timestamp)?, ObjectLockLegalHoldStatus: str?}

@endpoint GET /{Bucket}/{Key+}?acl
@required {Bucket: str, Key: str}
@optional {versionId: str, x-amz-request-payer: str, x-amz-expected-bucket-owner: str}
@returns(200) {Owner: Owner?{DisplayName: str?, ID: str?}, Grants: [Grant]?, RequestCharged: str?}

@endpoint GET /{Bucket}/{Key+}?attributes
@required {Bucket: str, Key: str, x-amz-object-attributes: [str]}
@optional {versionId: str, x-amz-max-parts: int, x-amz-part-number-marker: int, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, x-amz-request-payer: str, x-amz-expected-bucket-owner: str}
@returns(200) {DeleteMarker: bool?, LastModified: str(timestamp)?, VersionId: str?, RequestCharged: str?, ETag: str?, Checksum: Checksum?{ChecksumCRC32: str?, ChecksumCRC32C: str?, ChecksumSHA1: str?, ChecksumSHA256: str?}, ObjectParts: GetObjectAttributesParts?{TotalPartsCount: int?, PartNumberMarker: int?, NextPartNumberMarker: int?, MaxParts: int?, IsTruncated: bool?, Parts: [ObjectPart]?}, StorageClass: str?, ObjectSize: int(i64)?}

@endpoint GET /{Bucket}/{Key+}?legal-hold
@required {Bucket: str, Key: str}
@optional {versionId: str, x-amz-request-payer: str, x-amz-expected-bucket-owner: str}
@returns(200) {LegalHold: ObjectLockLegalHold?{Status: str?}}

@endgroup

@group {Bucket}?object-lock
@endpoint GET /{Bucket}?object-lock
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {ObjectLockConfiguration: ObjectLockConfiguration?{ObjectLockEnabled: str?, Rule: ObjectLockRule?{DefaultRetention: DefaultRetention?{Mode: str?, Days: int?, Years: int?}}}}

@endgroup

@group {Bucket}
@endpoint GET /{Bucket}/{Key+}?retention
@required {Bucket: str, Key: str}
@optional {versionId: str, x-amz-request-payer: str, x-amz-expected-bucket-owner: str}
@returns(200) {Retention: ObjectLockRetention?{Mode: str?, RetainUntilDate: str(timestamp)?}}

@endpoint GET /{Bucket}/{Key+}?tagging
@required {Bucket: str, Key: str}
@optional {versionId: str, x-amz-expected-bucket-owner: str, x-amz-request-payer: str}
@returns(200) {VersionId: str?, TagSet: [Tag]}

@endpoint GET /{Bucket}/{Key+}?torrent
@required {Bucket: str, Key: str}
@optional {x-amz-request-payer: str, x-amz-expected-bucket-owner: str}
@returns(200) {Body: bytes?, RequestCharged: str?}

@endgroup

@group {Bucket}?publicAccessBlock
@endpoint GET /{Bucket}?publicAccessBlock
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {PublicAccessBlockConfiguration: PublicAccessBlockConfiguration?{BlockPublicAcls: bool?, IgnorePublicAcls: bool?, BlockPublicPolicy: bool?, RestrictPublicBuckets: bool?}}

@endgroup

@group {Bucket}
@endpoint HEAD /{Bucket}
@required {Bucket: str}
@optional {x-amz-expected-bucket-owner: str}
@returns(200) {BucketLocationType: str?, BucketLocationName: str?, BucketRegion: str?, AccessPointAlias: bool?}

@endpoint HEAD /{Bucket}/{Key+}
@required {Bucket: str, Key: str}
@optional {If-Match: str, If-Modified-Since: str(timestamp), If-None-Match: str, If-Unmodified-Since: str(timestamp), Range: str, response-cache-control: str, response-content-disposition: str, response-content-encoding: str, response-content-language: str, response-content-type: str, response-expires: str(timestamp), versionId: str, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, x-amz-request-payer: str, partNumber: int, x-amz-expected-bucket-owner: str, x-amz-checksum-mode: str}
@returns(200) {DeleteMarker: bool?, AcceptRanges: str?, Expiration: str?, Restore: str?, ArchiveStatus: str?, LastModified: str(timestamp)?, ContentLength: int(i64)?, ChecksumCRC32: str?, ChecksumCRC32C: str?, ChecksumSHA1: str?, ChecksumSHA256: str?, ETag: str?, MissingMeta: int?, VersionId: str?, CacheControl: str?, ContentDisposition: str?, ContentEncoding: str?, ContentLanguage: str?, ContentType: str?, Expires: str(timestamp)?, ExpiresString: str?, WebsiteRedirectLocation: str?, ServerSideEncryption: str?, Metadata: map<str,str>?, SSECustomerAlgorithm: str?, SSECustomerKeyMD5: str?, SSEKMSKeyId: str?, BucketKeyEnabled: bool?, StorageClass: str?, RequestCharged: str?, ReplicationStatus: str?, PartsCount: int?, ObjectLockMode: str?, ObjectLockRetainUntilDate: str(timestamp)?, ObjectLockLegalHoldStatus: str?}

@endgroup

@group {Bucket}?analytics
@endpoint GET /{Bucket}?analytics
@required {Bucket: str}
@optional {continuation-token: str, x-amz-expected-bucket-owner: str}
@returns(200) {IsTruncated: bool?, ContinuationToken: str?, NextContinuationToken: str?, AnalyticsConfigurationList: [AnalyticsConfiguration]?}

@endgroup

@group {Bucket}?intelligent-tiering
@endpoint GET /{Bucket}?intelligent-tiering
@required {Bucket: str}
@optional {continuation-token: str}
@returns(200) {IsTruncated: bool?, ContinuationToken: str?, NextContinuationToken: str?, IntelligentTieringConfigurationList: [IntelligentTieringConfiguration]?}

@endgroup

@group {Bucket}?inventory
@endpoint GET /{Bucket}?inventory
@required {Bucket: str}
@optional {continuation-token: str, x-amz-expected-bucket-owner: str}
@returns(200) {ContinuationToken: str?, InventoryConfigurationList: [InventoryConfiguration]?, IsTruncated: bool?, NextContinuationToken: str?}

@endgroup

@group {Bucket}?metrics
@endpoint GET /{Bucket}?metrics
@required {Bucket: str}
@optional {continuation-token: str, x-amz-expected-bucket-owner: str}
@returns(200) {IsTruncated: bool?, ContinuationToken: str?, NextContinuationToken: str?, MetricsConfigurationList: [MetricsConfiguration]?}

@endgroup

@group root
@endpoint GET /
@optional {max-buckets: int, continuation-token: str, prefix: str, bucket-region: str}
@returns(200) {Buckets: [Bucket]?, Owner: Owner?{DisplayName: str?, ID: str?}, ContinuationToken: str?, Prefix: str?}

@endpoint GET /
@optional {continuation-token: str, max-directory-buckets: int}
@returns(200) {Buckets: [Bucket]?, ContinuationToken: str?}

@endgroup

@group {Bucket}?uploads
@endpoint GET /{Bucket}?uploads
@required {Bucket: str}
@optional {delimiter: str, encoding-type: str, key-marker: str, max-uploads: int, prefix: str, upload-id-marker: str, x-amz-expected-bucket-owner: str, x-amz-request-payer: str}
@returns(200) {Bucket: str?, KeyMarker: str?, UploadIdMarker: str?, NextKeyMarker: str?, Prefix: str?, Delimiter: str?, NextUploadIdMarker: str?, MaxUploads: int?, IsTruncated: bool?, Uploads: [MultipartUpload]?, CommonPrefixes: [CommonPrefix]?, EncodingType: str?, RequestCharged: str?}

@endgroup

@group {Bucket}?versions
@endpoint GET /{Bucket}?versions
@required {Bucket: str}
@optional {delimiter: str, encoding-type: str, key-marker: str, max-keys: int, prefix: str, version-id-marker: str, x-amz-expected-bucket-owner: str, x-amz-request-payer: str, x-amz-optional-object-attributes: [str]}
@returns(200) {IsTruncated: bool?, KeyMarker: str?, VersionIdMarker: str?, NextKeyMarker: str?, NextVersionIdMarker: str?, Versions: [ObjectVersion]?, DeleteMarkers: [DeleteMarkerEntry]?, Name: str?, Prefix: str?, Delimiter: str?, MaxKeys: int?, CommonPrefixes: [CommonPrefix]?, EncodingType: str?, RequestCharged: str?}

@endgroup

@group {Bucket}
@endpoint GET /{Bucket}
@required {Bucket: str}
@optional {delimiter: str, encoding-type: str, marker: str, max-keys: int, prefix: str, x-amz-request-payer: str, x-amz-expected-bucket-owner: str, x-amz-optional-object-attributes: [str]}
@returns(200) {IsTruncated: bool?, Marker: str?, NextMarker: str?, Contents: [Object]?, Name: str?, Prefix: str?, Delimiter: str?, MaxKeys: int?, CommonPrefixes: [CommonPrefix]?, EncodingType: str?, RequestCharged: str?}

@endgroup

@group {Bucket}?list-type=2
@endpoint GET /{Bucket}?list-type=2
@required {Bucket: str}
@optional {delimiter: str, encoding-type: str, max-keys: int, prefix: str, continuation-token: str, fetch-owner: bool, start-after: str, x-amz-request-payer: str, x-amz-expected-bucket-owner: str, x-amz-optional-object-attributes: [str]}
@returns(200) {IsTruncated: bool?, Contents: [Object]?, Name: str?, Prefix: str?, Delimiter: str?, MaxKeys: int?, CommonPrefixes: [CommonPrefix]?, EncodingType: str?, KeyCount: int?, ContinuationToken: str?, NextContinuationToken: str?, StartAfter: str?, RequestCharged: str?}

@endgroup

@group {Bucket}
@endpoint GET /{Bucket}/{Key+}
@required {Bucket: str, Key: str, uploadId: str}
@optional {max-parts: int, part-number-marker: int, x-amz-request-payer: str, x-amz-expected-bucket-owner: str, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str}
@returns(200) {AbortDate: str(timestamp)?, AbortRuleId: str?, Bucket: str?, Key: str?, UploadId: str?, PartNumberMarker: int?, NextPartNumberMarker: int?, MaxParts: int?, IsTruncated: bool?, Parts: [Part]?, Initiator: Initiator?{ID: str?, DisplayName: str?}, Owner: Owner?{DisplayName: str?, ID: str?}, StorageClass: str?, RequestCharged: str?, ChecksumAlgorithm: str?}

@endgroup

@group {Bucket}?accelerate
@endpoint PUT /{Bucket}?accelerate
@required {Bucket: str, AccelerateConfiguration: AccelerateConfiguration}
@optional {x-amz-expected-bucket-owner: str, x-amz-sdk-checksum-algorithm: str}

@endgroup

@group {Bucket}?acl
@endpoint PUT /{Bucket}?acl
@required {Bucket: str}
@optional {x-amz-acl: str, Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-grant-full-control: str, x-amz-grant-read: str, x-amz-grant-read-acp: str, x-amz-grant-write: str, x-amz-grant-write-acp: str, x-amz-expected-bucket-owner: str, AccessControlPolicy: AccessControlPolicy}

@endgroup

@group {Bucket}?analytics
@endpoint PUT /{Bucket}?analytics
@required {Bucket: str, id: str, AnalyticsConfiguration: AnalyticsConfiguration}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?cors
@endpoint PUT /{Bucket}?cors
@required {Bucket: str, CORSConfiguration: CORSConfiguration}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?encryption
@endpoint PUT /{Bucket}?encryption
@required {Bucket: str, ServerSideEncryptionConfiguration: ServerSideEncryptionConfiguration}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?intelligent-tiering
@endpoint PUT /{Bucket}?intelligent-tiering
@required {Bucket: str, id: str, IntelligentTieringConfiguration: IntelligentTieringConfiguration}

@endgroup

@group {Bucket}?inventory
@endpoint PUT /{Bucket}?inventory
@required {Bucket: str, id: str, InventoryConfiguration: InventoryConfiguration}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?lifecycle
@endpoint PUT /{Bucket}?lifecycle
@required {Bucket: str}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str, LifecycleConfiguration: LifecycleConfiguration}

@endpoint PUT /{Bucket}?lifecycle
@required {Bucket: str}
@optional {x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str, x-amz-transition-default-minimum-object-size: str, LifecycleConfiguration: BucketLifecycleConfiguration}
@returns(200) {TransitionDefaultMinimumObjectSize: str?}

@endgroup

@group {Bucket}?logging
@endpoint PUT /{Bucket}?logging
@required {Bucket: str, BucketLoggingStatus: BucketLoggingStatus}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?metrics
@endpoint PUT /{Bucket}?metrics
@required {Bucket: str, id: str, MetricsConfiguration: MetricsConfiguration}
@optional {x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?notification
@endpoint PUT /{Bucket}?notification
@required {Bucket: str, NotificationConfiguration: NotificationConfigurationDeprecated}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str}

@endpoint PUT /{Bucket}?notification
@required {Bucket: str, NotificationConfiguration: NotificationConfiguration}
@optional {x-amz-expected-bucket-owner: str, x-amz-skip-destination-validation: bool}

@endgroup

@group {Bucket}?ownershipControls
@endpoint PUT /{Bucket}?ownershipControls
@required {Bucket: str, OwnershipControls: OwnershipControls}
@optional {Content-MD5: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?policy
@endpoint PUT /{Bucket}?policy
@required {Bucket: str, Policy: str}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-confirm-remove-self-bucket-access: bool, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?replication
@endpoint PUT /{Bucket}?replication
@required {Bucket: str, ReplicationConfiguration: ReplicationConfiguration}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-bucket-object-lock-token: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?requestPayment
@endpoint PUT /{Bucket}?requestPayment
@required {Bucket: str, RequestPaymentConfiguration: RequestPaymentConfiguration}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?tagging
@endpoint PUT /{Bucket}?tagging
@required {Bucket: str, Tagging: Tagging}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?versioning
@endpoint PUT /{Bucket}?versioning
@required {Bucket: str, VersioningConfiguration: VersioningConfiguration}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-mfa: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}?website
@endpoint PUT /{Bucket}?website
@required {Bucket: str, WebsiteConfiguration: WebsiteConfiguration}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}
@endpoint PUT /{Bucket}/{Key+}
@required {Bucket: str, Key: str}
@optional {x-amz-acl: str, Cache-Control: str, Content-Disposition: str, Content-Encoding: str, Content-Language: str, Content-Length: int(i64), Content-MD5: str, Content-Type: str, x-amz-sdk-checksum-algorithm: str, x-amz-checksum-crc32: str, x-amz-checksum-crc32c: str, x-amz-checksum-sha1: str, x-amz-checksum-sha256: str, Expires: str(timestamp), If-None-Match: str, x-amz-grant-full-control: str, x-amz-grant-read: str, x-amz-grant-read-acp: str, x-amz-grant-write-acp: str, x-amz-server-side-encryption: str, x-amz-storage-class: str, x-amz-website-redirect-location: str, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, x-amz-server-side-encryption-aws-kms-key-id: str, x-amz-server-side-encryption-context: str, x-amz-server-side-encryption-bucket-key-enabled: bool, x-amz-request-payer: str, x-amz-tagging: str, x-amz-object-lock-mode: str, x-amz-object-lock-retain-until-date: str(timestamp), x-amz-object-lock-legal-hold: str, x-amz-expected-bucket-owner: str, Body: bytes, Metadata: map<str,str>}
@returns(200) {Expiration: str?, ETag: str?, ChecksumCRC32: str?, ChecksumCRC32C: str?, ChecksumSHA1: str?, ChecksumSHA256: str?, ServerSideEncryption: str?, VersionId: str?, SSECustomerAlgorithm: str?, SSECustomerKeyMD5: str?, SSEKMSKeyId: str?, SSEKMSEncryptionContext: str?, BucketKeyEnabled: bool?, RequestCharged: str?}

@endpoint PUT /{Bucket}/{Key+}?acl
@required {Bucket: str, Key: str}
@optional {x-amz-acl: str, Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-grant-full-control: str, x-amz-grant-read: str, x-amz-grant-read-acp: str, x-amz-grant-write: str, x-amz-grant-write-acp: str, x-amz-request-payer: str, versionId: str, x-amz-expected-bucket-owner: str, AccessControlPolicy: AccessControlPolicy}
@returns(200) {RequestCharged: str?}

@endpoint PUT /{Bucket}/{Key+}?legal-hold
@required {Bucket: str, Key: str}
@optional {x-amz-request-payer: str, versionId: str, Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str, LegalHold: ObjectLockLegalHold}
@returns(200) {RequestCharged: str?}

@endgroup

@group {Bucket}?object-lock
@endpoint PUT /{Bucket}?object-lock
@required {Bucket: str}
@optional {x-amz-request-payer: str, x-amz-bucket-object-lock-token: str, Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str, ObjectLockConfiguration: ObjectLockConfiguration}
@returns(200) {RequestCharged: str?}

@endgroup

@group {Bucket}
@endpoint PUT /{Bucket}/{Key+}?retention
@required {Bucket: str, Key: str}
@optional {x-amz-request-payer: str, versionId: str, x-amz-bypass-governance-retention: bool, Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str, Retention: ObjectLockRetention}
@returns(200) {RequestCharged: str?}

@endpoint PUT /{Bucket}/{Key+}?tagging
@required {Bucket: str, Key: str, Tagging: Tagging}
@optional {versionId: str, Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str, x-amz-request-payer: str}
@returns(200) {VersionId: str?}

@endgroup

@group {Bucket}?publicAccessBlock
@endpoint PUT /{Bucket}?publicAccessBlock
@required {Bucket: str, PublicAccessBlockConfiguration: PublicAccessBlockConfiguration}
@optional {Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str}

@endgroup

@group {Bucket}
@endpoint POST /{Bucket}/{Key+}?restore
@required {Bucket: str, Key: str}
@optional {versionId: str, x-amz-request-payer: str, x-amz-sdk-checksum-algorithm: str, x-amz-expected-bucket-owner: str, RestoreRequest: RestoreRequest}
@returns(200) {RequestCharged: str?, RestoreOutputPath: str?}

@endpoint POST /{Bucket}/{Key+}?select&select-type=2
@required {Bucket: str, Key: str, Expression: str, ExpressionType: str, InputSerialization: InputSerialization, OutputSerialization: OutputSerialization}
@optional {x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, x-amz-expected-bucket-owner: str, RequestProgress: RequestProgress, ScanRange: ScanRange}
@returns(200) {Payload: SelectObjectContentEventStream?{Records: RecordsEvent?{Payload: bytes?}, Stats: StatsEvent?{Details: Stats?{BytesScanned: int(i64)?, BytesProcessed: int(i64)?, BytesReturned: int(i64)?}}, Progress: ProgressEvent?{Details: Progress?{BytesScanned: int(i64)?, BytesProcessed: int(i64)?, BytesReturned: int(i64)?}}, Cont: ContinuationEvent?, End: EndEvent?}}

@endpoint PUT /{Bucket}/{Key+}
@required {Bucket: str, Key: str, partNumber: int, uploadId: str}
@optional {Content-Length: int(i64), Content-MD5: str, x-amz-sdk-checksum-algorithm: str, x-amz-checksum-crc32: str, x-amz-checksum-crc32c: str, x-amz-checksum-sha1: str, x-amz-checksum-sha256: str, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, x-amz-request-payer: str, x-amz-expected-bucket-owner: str, Body: bytes}
@returns(200) {ServerSideEncryption: str?, ETag: str?, ChecksumCRC32: str?, ChecksumCRC32C: str?, ChecksumSHA1: str?, ChecksumSHA256: str?, SSECustomerAlgorithm: str?, SSECustomerKeyMD5: str?, SSEKMSKeyId: str?, BucketKeyEnabled: bool?, RequestCharged: str?}

@endpoint PUT /{Bucket}/{Key+}
@required {Bucket: str, x-amz-copy-source: str, Key: str, partNumber: int, uploadId: str}
@optional {x-amz-copy-source-if-match: str, x-amz-copy-source-if-modified-since: str(timestamp), x-amz-copy-source-if-none-match: str, x-amz-copy-source-if-unmodified-since: str(timestamp), x-amz-copy-source-range: str, x-amz-server-side-encryption-customer-algorithm: str, x-amz-server-side-encryption-customer-key: bytes, x-amz-server-side-encryption-customer-key-MD5: str, x-amz-copy-source-server-side-encryption-customer-algorithm: str, x-amz-copy-source-server-side-encryption-customer-key: bytes, x-amz-copy-source-server-side-encryption-customer-key-MD5: str, x-amz-request-payer: str, x-amz-expected-bucket-owner: str, x-amz-source-expected-bucket-owner: str}
@returns(200) {CopySourceVersionId: str?, CopyPartResult: CopyPartResult?{ETag: str?, LastModified: str(timestamp)?, ChecksumCRC32: str?, ChecksumCRC32C: str?, ChecksumSHA1: str?, ChecksumSHA256: str?}, ServerSideEncryption: str?, SSECustomerAlgorithm: str?, SSECustomerKeyMD5: str?, SSEKMSKeyId: str?, BucketKeyEnabled: bool?, RequestCharged: str?}

@endgroup

@group WriteGetObjectResponse
@endpoint POST /WriteGetObjectResponse
@required {x-amz-request-route: str, x-amz-request-token: str}
@optional {x-amz-fwd-status: int, x-amz-fwd-error-code: str, x-amz-fwd-error-message: str, x-amz-fwd-header-accept-ranges: str, x-amz-fwd-header-Cache-Control: str, x-amz-fwd-header-Content-Disposition: str, x-amz-fwd-header-Content-Encoding: str, x-amz-fwd-header-Content-Language: str, Content-Length: int(i64), x-amz-fwd-header-Content-Range: str, x-amz-fwd-header-Content-Type: str, x-amz-fwd-header-x-amz-checksum-crc32: str, x-amz-fwd-header-x-amz-checksum-crc32c: str, x-amz-fwd-header-x-amz-checksum-sha1: str, x-amz-fwd-header-x-amz-checksum-sha256: str, x-amz-fwd-header-x-amz-delete-marker: bool, x-amz-fwd-header-ETag: str, x-amz-fwd-header-Expires: str(timestamp), x-amz-fwd-header-x-amz-expiration: str, x-amz-fwd-header-Last-Modified: str(timestamp), x-amz-fwd-header-x-amz-missing-meta: int, x-amz-fwd-header-x-amz-object-lock-mode: str, x-amz-fwd-header-x-amz-object-lock-legal-hold: str, x-amz-fwd-header-x-amz-object-lock-retain-until-date: str(timestamp), x-amz-fwd-header-x-amz-mp-parts-count: int, x-amz-fwd-header-x-amz-replication-status: str, x-amz-fwd-header-x-amz-request-charged: str, x-amz-fwd-header-x-amz-restore: str, x-amz-fwd-header-x-amz-server-side-encryption: str, x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm: str, x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id: str, x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5: str, x-amz-fwd-header-x-amz-storage-class: str, x-amz-fwd-header-x-amz-tagging-count: int, x-amz-fwd-header-x-amz-version-id: str, x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled: bool, Body: bytes, Metadata: map<str,str>}

@endgroup

@end
