aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model
diff options
context:
space:
mode:
authorDevtools Arcadia <arcadia-devtools@yandex-team.ru>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model
downloadydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model')
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortIncompleteMultipartUpload.h76
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortMultipartUploadRequest.h450
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortMultipartUploadResult.h57
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccelerateConfiguration.h82
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccessControlPolicy.h125
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccessControlTranslation.h97
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsAndOperator.h145
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsConfiguration.h177
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsExportDestination.h78
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsFilter.h167
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsS3BucketDestination.h244
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsS3ExportFileFormat.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ArchiveStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Bucket.h131
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketAccelerateStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketCannedACL.h33
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLifecycleConfiguration.h93
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLocationConstraint.h55
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLoggingStatus.h66
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLogsPermission.h32
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketVersioningStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CORSConfiguration.h101
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CORSRule.h342
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CSVInput.h446
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CSVOutput.h314
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CloudFunctionConfiguration.h215
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CommonPrefix.h92
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadRequest.h341
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadResult.h578
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompletedMultipartUpload.h90
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompletedPart.h116
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompressionType.h32
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Condition.h224
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectRequest.h2487
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResult.h471
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResultDetails.h139
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyPartResult.h123
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketConfiguration.h90
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketRequest.h461
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketResult.h91
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadRequest.h1709
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadResult.h687
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DefaultRetention.h142
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Delete.h117
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketAnalyticsConfigurationRequest.h239
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketCorsRequest.h203
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketEncryptionRequest.h203
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketIntelligentTieringConfigurationRequest.h185
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketInventoryConfigurationRequest.h239
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketLifecycleRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketMetricsConfigurationRequest.h239
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketOwnershipControlsRequest.h203
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketPolicyRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketReplicationRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketTaggingRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketWebsiteRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerEntry.h230
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerReplication.h99
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerReplicationStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectRequest.h546
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectResult.h124
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectTaggingRequest.h427
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectTaggingResult.h77
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectsRequest.h499
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectsResult.h150
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeletePublicAccessBlockRequest.h203
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeletedObject.h224
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Destination.h469
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/EncodingType.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Encryption.h229
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/EncryptionConfiguration.h137
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Error.h3100
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ErrorDocument.h88
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Event.h46
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplication.h82
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplicationStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExpirationStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExpressionType.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FileHeaderInfo.h32
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FilterRule.h154
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FilterRuleName.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAccelerateConfigurationRequest.h203
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAccelerateConfigurationResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAclRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAclResult.h107
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAnalyticsConfigurationRequest.h247
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAnalyticsConfigurationResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketCorsRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketCorsResult.h85
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionRequest.h203
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionResult.h57
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketIntelligentTieringConfigurationRequest.h185
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketIntelligentTieringConfigurationResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketInventoryConfigurationRequest.h247
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketInventoryConfigurationResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLifecycleConfigurationRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLifecycleConfigurationResult.h78
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLocationRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLocationResult.h87
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLoggingRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLoggingResult.h57
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketMetricsConfigurationRequest.h239
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketMetricsConfigurationResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketNotificationConfigurationRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketNotificationConfigurationResult.h184
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketOwnershipControlsRequest.h203
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketOwnershipControlsResult.h72
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyResult.h56
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyStatusRequest.h203
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyStatusResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketReplicationRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketReplicationResult.h57
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketRequestPaymentRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketRequestPaymentResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketTaggingRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketTaggingResult.h78
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketVersioningRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketVersioningResult.h111
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketWebsiteRequest.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketWebsiteResult.h180
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectAclRequest.h378
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectAclResult.h126
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLegalHoldRequest.h386
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLegalHoldResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLockConfigurationRequest.h267
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLockConfigurationResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRequest.h1185
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectResult.h1239
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRetentionRequest.h394
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRetentionResult.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTaggingRequest.h427
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTaggingResult.h117
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTorrentRequest.h270
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTorrentResult.h75
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetPublicAccessBlockRequest.h203
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetPublicAccessBlockResult.h72
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GlacierJobParameters.h78
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Grant.h113
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Grantee.h319
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadBucketRequest.h339
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectRequest.h935
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectResult.h1433
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IndexDocument.h120
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Initiator.h141
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InputSerialization.h190
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringAccessTier.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringAndOperator.h152
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringConfiguration.h223
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringFilter.h167
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InvalidObjectState.h90
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryConfiguration.h340
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryDestination.h85
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryEncryption.h114
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFilter.h97
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFormat.h32
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFrequency.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryIncludedObjectVersions.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryOptionalField.h40
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryS3BucketDestination.h285
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventorySchedule.h79
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONInput.h79
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONOutput.h97
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONType.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LambdaFunctionConfiguration.h218
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleConfiguration.h90
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleExpiration.h149
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRule.h379
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRuleAndOperator.h144
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRuleFilter.h154
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketAnalyticsConfigurationsRequest.h247
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketAnalyticsConfigurationsResult.h207
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketIntelligentTieringConfigurationsRequest.h193
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketIntelligentTieringConfigurationsResult.h207
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketInventoryConfigurationsRequest.h271
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketInventoryConfigurationsResult.h207
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketMetricsConfigurationsRequest.h263
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketMetricsConfigurationsResult.h207
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketsResult.h107
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListMultipartUploadsRequest.h730
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListMultipartUploadsResult.h549
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectVersionsRequest.h502
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectVersionsResult.h604
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsRequest.h573
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsResult.h509
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsV2Request.h693
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsV2Result.h726
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListPartsRequest.h502
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListPartsResult.h547
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LoggingEnabled.h238
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MFADelete.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MFADeleteStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetadataDirective.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetadataEntry.h132
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Metrics.h120
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsAndOperator.h137
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsConfiguration.h142
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsFilter.h172
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MultipartUpload.h273
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NoncurrentVersionExpiration.h90
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NoncurrentVersionTransition.h130
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfiguration.h205
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfigurationDeprecated.h167
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfigurationFilter.h70
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Object.h358
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectCannedACL.h36
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectIdentifier.h133
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockConfiguration.h114
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockEnabled.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockLegalHold.h78
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockLegalHoldStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockMode.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRetention.h113
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRetentionMode.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRule.h84
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectOwnership.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectStorageClass.h37
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectVersion.h333
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectVersionStorageClass.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OutputLocation.h85
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OutputSerialization.h114
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Owner.h132
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnerOverride.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnershipControls.h90
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnershipControlsRule.h67
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ParquetInput.h41
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Part.h175
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Payer.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Permission.h34
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PolicyStatus.h74
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Progress.h115
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ProgressEvent.h79
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Protocol.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PublicAccessBlockConfiguration.h219
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAccelerateConfigurationRequest.h230
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAclRequest.h585
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAnalyticsConfigurationRequest.h274
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketCorsRequest.h340
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketEncryptionRequest.h328
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketIntelligentTieringConfigurationRequest.h220
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketInventoryConfigurationRequest.h274
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketLifecycleConfigurationRequest.h232
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketLoggingRequest.h292
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketMetricsConfigurationRequest.h274
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketNotificationConfigurationRequest.h218
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketOwnershipControlsRequest.h306
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketPolicyRequest.h284
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketReplicationRequest.h348
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketRequestPaymentRequest.h316
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketTaggingRequest.h316
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketVersioningRequest.h368
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketWebsiteRequest.h316
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectAclRequest.h948
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectAclResult.h57
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLegalHoldRequest.h481
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLegalHoldResult.h57
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLockConfigurationRequest.h365
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLockConfigurationResult.h57
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRequest.h1987
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectResult.h480
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRetentionRequest.h527
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRetentionResult.h57
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectTaggingRequest.h524
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectTaggingResult.h77
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutPublicAccessBlockRequest.h336
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QueueConfiguration.h195
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QueueConfigurationDeprecated.h174
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QuoteFields.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RecordsEvent.h66
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Redirect.h342
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RedirectAllRequestsTo.h130
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicaModifications.h85
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicaModificationsStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationConfiguration.h183
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRule.h357
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleAndOperator.h148
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleFilter.h211
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationStatus.h33
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTime.h122
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTimeStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTimeValue.h72
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestCharged.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestPayer.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestPaymentConfiguration.h78
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestProgress.h71
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreObjectRequest.h473
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreObjectResult.h103
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreRequest.h301
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreRequestType.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RoutingRule.h153
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Rule.h358
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/S3KeyFilter.h74
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/S3Location.h352
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SSEKMS.h105
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SSES3.h42
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ScanRange.h130
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectObjectContentHandler.h76
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectObjectContentRequest.h745
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectParameters.h193
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryption.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionByDefault.h248
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionConfiguration.h98
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionRule.h139
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SourceSelectionCriteria.h172
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SseKmsEncryptedObjects.h91
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SseKmsEncryptedObjectsStatus.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Stats.h114
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StatsEvent.h78
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClass.h37
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysis.h86
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysisDataExport.h120
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysisSchemaVersion.h30
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tag.h132
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tagging.h89
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TaggingDirective.h31
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TargetGrant.h113
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tier.h32
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tiering.h144
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TopicConfiguration.h219
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TopicConfigurationDeprecated.h174
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Transition.h151
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TransitionStorageClass.h34
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Type.h32
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyRequest.h1447
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyResult.h343
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartRequest.h770
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartResult.h307
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/VersioningConfiguration.h135
-rw-r--r--contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/WebsiteConfiguration.h207
333 files changed, 74671 insertions, 0 deletions
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortIncompleteMultipartUpload.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortIncompleteMultipartUpload.h
new file mode 100644
index 00000000000..25112f80a46
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortIncompleteMultipartUpload.h
@@ -0,0 +1,76 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the days since the initiation of an incomplete multipart upload
+ * that Amazon S3 will wait before permanently removing all parts of the upload.
+ * For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">
+ * Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a> in the
+ * <i>Amazon Simple Storage Service Developer Guide</i>.</p><p><h3>See Also:</h3>
+ * <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortIncompleteMultipartUpload">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API AbortIncompleteMultipartUpload
+ {
+ public:
+ AbortIncompleteMultipartUpload();
+ AbortIncompleteMultipartUpload(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AbortIncompleteMultipartUpload& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the number of days after which Amazon S3 aborts an incomplete
+ * multipart upload.</p>
+ */
+ inline int GetDaysAfterInitiation() const{ return m_daysAfterInitiation; }
+
+ /**
+ * <p>Specifies the number of days after which Amazon S3 aborts an incomplete
+ * multipart upload.</p>
+ */
+ inline bool DaysAfterInitiationHasBeenSet() const { return m_daysAfterInitiationHasBeenSet; }
+
+ /**
+ * <p>Specifies the number of days after which Amazon S3 aborts an incomplete
+ * multipart upload.</p>
+ */
+ inline void SetDaysAfterInitiation(int value) { m_daysAfterInitiationHasBeenSet = true; m_daysAfterInitiation = value; }
+
+ /**
+ * <p>Specifies the number of days after which Amazon S3 aborts an incomplete
+ * multipart upload.</p>
+ */
+ inline AbortIncompleteMultipartUpload& WithDaysAfterInitiation(int value) { SetDaysAfterInitiation(value); return *this;}
+
+ private:
+
+ int m_daysAfterInitiation;
+ bool m_daysAfterInitiationHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortMultipartUploadRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortMultipartUploadRequest.h
new file mode 100644
index 00000000000..6fe4cb61f17
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortMultipartUploadRequest.h
@@ -0,0 +1,450 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API AbortMultipartUploadRequest : public S3Request
+ {
+ public:
+ AbortMultipartUploadRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "AbortMultipartUpload"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name to which the upload was taking place. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name to which the upload was taking place. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name to which the upload was taking place. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name to which the upload was taking place. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name to which the upload was taking place. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name to which the upload was taking place. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline AbortMultipartUploadRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name to which the upload was taking place. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline AbortMultipartUploadRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name to which the upload was taking place. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline AbortMultipartUploadRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline AbortMultipartUploadRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline AbortMultipartUploadRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline AbortMultipartUploadRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline const Aws::String& GetUploadId() const{ return m_uploadId; }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline bool UploadIdHasBeenSet() const { return m_uploadIdHasBeenSet; }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline void SetUploadId(const Aws::String& value) { m_uploadIdHasBeenSet = true; m_uploadId = value; }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline void SetUploadId(Aws::String&& value) { m_uploadIdHasBeenSet = true; m_uploadId = std::move(value); }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline void SetUploadId(const char* value) { m_uploadIdHasBeenSet = true; m_uploadId.assign(value); }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline AbortMultipartUploadRequest& WithUploadId(const Aws::String& value) { SetUploadId(value); return *this;}
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline AbortMultipartUploadRequest& WithUploadId(Aws::String&& value) { SetUploadId(std::move(value)); return *this;}
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline AbortMultipartUploadRequest& WithUploadId(const char* value) { SetUploadId(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline AbortMultipartUploadRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline AbortMultipartUploadRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline AbortMultipartUploadRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline AbortMultipartUploadRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline AbortMultipartUploadRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline AbortMultipartUploadRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline AbortMultipartUploadRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline AbortMultipartUploadRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline AbortMultipartUploadRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline AbortMultipartUploadRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline AbortMultipartUploadRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline AbortMultipartUploadRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline AbortMultipartUploadRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline AbortMultipartUploadRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_uploadId;
+ bool m_uploadIdHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortMultipartUploadResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortMultipartUploadResult.h
new file mode 100644
index 00000000000..003df773b5d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AbortMultipartUploadResult.h
@@ -0,0 +1,57 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API AbortMultipartUploadResult
+ {
+ public:
+ AbortMultipartUploadResult();
+ AbortMultipartUploadResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ AbortMultipartUploadResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline AbortMultipartUploadResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline AbortMultipartUploadResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccelerateConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccelerateConfiguration.h
new file mode 100644
index 00000000000..924d3f602fc
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccelerateConfiguration.h
@@ -0,0 +1,82 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/BucketAccelerateStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Configures the transfer acceleration state for an Amazon S3 bucket. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html">Amazon
+ * S3 Transfer Acceleration</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AccelerateConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API AccelerateConfiguration
+ {
+ public:
+ AccelerateConfiguration();
+ AccelerateConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AccelerateConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the transfer acceleration status of the bucket.</p>
+ */
+ inline const BucketAccelerateStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>Specifies the transfer acceleration status of the bucket.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>Specifies the transfer acceleration status of the bucket.</p>
+ */
+ inline void SetStatus(const BucketAccelerateStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>Specifies the transfer acceleration status of the bucket.</p>
+ */
+ inline void SetStatus(BucketAccelerateStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>Specifies the transfer acceleration status of the bucket.</p>
+ */
+ inline AccelerateConfiguration& WithStatus(const BucketAccelerateStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>Specifies the transfer acceleration status of the bucket.</p>
+ */
+ inline AccelerateConfiguration& WithStatus(BucketAccelerateStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+ private:
+
+ BucketAccelerateStatus m_status;
+ bool m_statusHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccessControlPolicy.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccessControlPolicy.h
new file mode 100644
index 00000000000..1effa4bf55c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccessControlPolicy.h
@@ -0,0 +1,125 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Owner.h>
+#include <aws/s3/model/Grant.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AccessControlPolicy">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API AccessControlPolicy
+ {
+ public:
+ AccessControlPolicy();
+ AccessControlPolicy(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AccessControlPolicy& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline const Aws::Vector<Grant>& GetGrants() const{ return m_grants; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline bool GrantsHasBeenSet() const { return m_grantsHasBeenSet; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline void SetGrants(const Aws::Vector<Grant>& value) { m_grantsHasBeenSet = true; m_grants = value; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline void SetGrants(Aws::Vector<Grant>&& value) { m_grantsHasBeenSet = true; m_grants = std::move(value); }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline AccessControlPolicy& WithGrants(const Aws::Vector<Grant>& value) { SetGrants(value); return *this;}
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline AccessControlPolicy& WithGrants(Aws::Vector<Grant>&& value) { SetGrants(std::move(value)); return *this;}
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline AccessControlPolicy& AddGrants(const Grant& value) { m_grantsHasBeenSet = true; m_grants.push_back(value); return *this; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline AccessControlPolicy& AddGrants(Grant&& value) { m_grantsHasBeenSet = true; m_grants.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline const Owner& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline bool OwnerHasBeenSet() const { return m_ownerHasBeenSet; }
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline void SetOwner(const Owner& value) { m_ownerHasBeenSet = true; m_owner = value; }
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline void SetOwner(Owner&& value) { m_ownerHasBeenSet = true; m_owner = std::move(value); }
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline AccessControlPolicy& WithOwner(const Owner& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline AccessControlPolicy& WithOwner(Owner&& value) { SetOwner(std::move(value)); return *this;}
+
+ private:
+
+ Aws::Vector<Grant> m_grants;
+ bool m_grantsHasBeenSet;
+
+ Owner m_owner;
+ bool m_ownerHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccessControlTranslation.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccessControlTranslation.h
new file mode 100644
index 00000000000..e8f4845c2e9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AccessControlTranslation.h
@@ -0,0 +1,97 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/OwnerOverride.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for information about access control for replicas.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AccessControlTranslation">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API AccessControlTranslation
+ {
+ public:
+ AccessControlTranslation();
+ AccessControlTranslation(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AccessControlTranslation& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the replica ownership. For default and valid values, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * bucket replication</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline const OwnerOverride& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p>Specifies the replica ownership. For default and valid values, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * bucket replication</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline bool OwnerHasBeenSet() const { return m_ownerHasBeenSet; }
+
+ /**
+ * <p>Specifies the replica ownership. For default and valid values, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * bucket replication</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline void SetOwner(const OwnerOverride& value) { m_ownerHasBeenSet = true; m_owner = value; }
+
+ /**
+ * <p>Specifies the replica ownership. For default and valid values, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * bucket replication</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline void SetOwner(OwnerOverride&& value) { m_ownerHasBeenSet = true; m_owner = std::move(value); }
+
+ /**
+ * <p>Specifies the replica ownership. For default and valid values, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * bucket replication</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline AccessControlTranslation& WithOwner(const OwnerOverride& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p>Specifies the replica ownership. For default and valid values, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * bucket replication</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline AccessControlTranslation& WithOwner(OwnerOverride&& value) { SetOwner(std::move(value)); return *this;}
+
+ private:
+
+ OwnerOverride m_owner;
+ bool m_ownerHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsAndOperator.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsAndOperator.h
new file mode 100644
index 00000000000..760b9111049
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsAndOperator.h
@@ -0,0 +1,145 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tag.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates in any
+ * combination, and an object must match all of the predicates for the filter to
+ * apply.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AnalyticsAndOperator">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API AnalyticsAndOperator
+ {
+ public:
+ AnalyticsAndOperator();
+ AnalyticsAndOperator(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AnalyticsAndOperator& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The prefix to use when evaluating an AND predicate: The prefix that an object
+ * must have to be included in the metrics results.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>The prefix to use when evaluating an AND predicate: The prefix that an object
+ * must have to be included in the metrics results.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>The prefix to use when evaluating an AND predicate: The prefix that an object
+ * must have to be included in the metrics results.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>The prefix to use when evaluating an AND predicate: The prefix that an object
+ * must have to be included in the metrics results.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>The prefix to use when evaluating an AND predicate: The prefix that an object
+ * must have to be included in the metrics results.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>The prefix to use when evaluating an AND predicate: The prefix that an object
+ * must have to be included in the metrics results.</p>
+ */
+ inline AnalyticsAndOperator& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>The prefix to use when evaluating an AND predicate: The prefix that an object
+ * must have to be included in the metrics results.</p>
+ */
+ inline AnalyticsAndOperator& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>The prefix to use when evaluating an AND predicate: The prefix that an object
+ * must have to be included in the metrics results.</p>
+ */
+ inline AnalyticsAndOperator& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>The list of tags to use when evaluating an AND predicate.</p>
+ */
+ inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
+
+ /**
+ * <p>The list of tags to use when evaluating an AND predicate.</p>
+ */
+ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
+
+ /**
+ * <p>The list of tags to use when evaluating an AND predicate.</p>
+ */
+ inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
+
+ /**
+ * <p>The list of tags to use when evaluating an AND predicate.</p>
+ */
+ inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
+
+ /**
+ * <p>The list of tags to use when evaluating an AND predicate.</p>
+ */
+ inline AnalyticsAndOperator& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
+
+ /**
+ * <p>The list of tags to use when evaluating an AND predicate.</p>
+ */
+ inline AnalyticsAndOperator& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
+
+ /**
+ * <p>The list of tags to use when evaluating an AND predicate.</p>
+ */
+ inline AnalyticsAndOperator& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
+
+ /**
+ * <p>The list of tags to use when evaluating an AND predicate.</p>
+ */
+ inline AnalyticsAndOperator& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Aws::Vector<Tag> m_tags;
+ bool m_tagsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsConfiguration.h
new file mode 100644
index 00000000000..b3b70834bd3
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsConfiguration.h
@@ -0,0 +1,177 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/AnalyticsFilter.h>
+#include <aws/s3/model/StorageClassAnalysis.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p> Specifies the configuration and any analyses for the analytics filter of an
+ * Amazon S3 bucket.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AnalyticsConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API AnalyticsConfiguration
+ {
+ public:
+ AnalyticsConfiguration();
+ AnalyticsConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AnalyticsConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline AnalyticsConfiguration& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline AnalyticsConfiguration& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline AnalyticsConfiguration& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The filter used to describe a set of objects for analyses. A filter must have
+ * exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no
+ * filter is provided, all objects will be considered in any analysis.</p>
+ */
+ inline const AnalyticsFilter& GetFilter() const{ return m_filter; }
+
+ /**
+ * <p>The filter used to describe a set of objects for analyses. A filter must have
+ * exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no
+ * filter is provided, all objects will be considered in any analysis.</p>
+ */
+ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
+
+ /**
+ * <p>The filter used to describe a set of objects for analyses. A filter must have
+ * exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no
+ * filter is provided, all objects will be considered in any analysis.</p>
+ */
+ inline void SetFilter(const AnalyticsFilter& value) { m_filterHasBeenSet = true; m_filter = value; }
+
+ /**
+ * <p>The filter used to describe a set of objects for analyses. A filter must have
+ * exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no
+ * filter is provided, all objects will be considered in any analysis.</p>
+ */
+ inline void SetFilter(AnalyticsFilter&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
+
+ /**
+ * <p>The filter used to describe a set of objects for analyses. A filter must have
+ * exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no
+ * filter is provided, all objects will be considered in any analysis.</p>
+ */
+ inline AnalyticsConfiguration& WithFilter(const AnalyticsFilter& value) { SetFilter(value); return *this;}
+
+ /**
+ * <p>The filter used to describe a set of objects for analyses. A filter must have
+ * exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no
+ * filter is provided, all objects will be considered in any analysis.</p>
+ */
+ inline AnalyticsConfiguration& WithFilter(AnalyticsFilter&& value) { SetFilter(std::move(value)); return *this;}
+
+
+ /**
+ * <p> Contains data related to access patterns to be collected and made available
+ * to analyze the tradeoffs between different storage classes. </p>
+ */
+ inline const StorageClassAnalysis& GetStorageClassAnalysis() const{ return m_storageClassAnalysis; }
+
+ /**
+ * <p> Contains data related to access patterns to be collected and made available
+ * to analyze the tradeoffs between different storage classes. </p>
+ */
+ inline bool StorageClassAnalysisHasBeenSet() const { return m_storageClassAnalysisHasBeenSet; }
+
+ /**
+ * <p> Contains data related to access patterns to be collected and made available
+ * to analyze the tradeoffs between different storage classes. </p>
+ */
+ inline void SetStorageClassAnalysis(const StorageClassAnalysis& value) { m_storageClassAnalysisHasBeenSet = true; m_storageClassAnalysis = value; }
+
+ /**
+ * <p> Contains data related to access patterns to be collected and made available
+ * to analyze the tradeoffs between different storage classes. </p>
+ */
+ inline void SetStorageClassAnalysis(StorageClassAnalysis&& value) { m_storageClassAnalysisHasBeenSet = true; m_storageClassAnalysis = std::move(value); }
+
+ /**
+ * <p> Contains data related to access patterns to be collected and made available
+ * to analyze the tradeoffs between different storage classes. </p>
+ */
+ inline AnalyticsConfiguration& WithStorageClassAnalysis(const StorageClassAnalysis& value) { SetStorageClassAnalysis(value); return *this;}
+
+ /**
+ * <p> Contains data related to access patterns to be collected and made available
+ * to analyze the tradeoffs between different storage classes. </p>
+ */
+ inline AnalyticsConfiguration& WithStorageClassAnalysis(StorageClassAnalysis&& value) { SetStorageClassAnalysis(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ AnalyticsFilter m_filter;
+ bool m_filterHasBeenSet;
+
+ StorageClassAnalysis m_storageClassAnalysis;
+ bool m_storageClassAnalysisHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsExportDestination.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsExportDestination.h
new file mode 100644
index 00000000000..9b7dfb72f0b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsExportDestination.h
@@ -0,0 +1,78 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/AnalyticsS3BucketDestination.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Where to publish the analytics results.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AnalyticsExportDestination">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API AnalyticsExportDestination
+ {
+ public:
+ AnalyticsExportDestination();
+ AnalyticsExportDestination(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AnalyticsExportDestination& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>A destination signifying output to an S3 bucket.</p>
+ */
+ inline const AnalyticsS3BucketDestination& GetS3BucketDestination() const{ return m_s3BucketDestination; }
+
+ /**
+ * <p>A destination signifying output to an S3 bucket.</p>
+ */
+ inline bool S3BucketDestinationHasBeenSet() const { return m_s3BucketDestinationHasBeenSet; }
+
+ /**
+ * <p>A destination signifying output to an S3 bucket.</p>
+ */
+ inline void SetS3BucketDestination(const AnalyticsS3BucketDestination& value) { m_s3BucketDestinationHasBeenSet = true; m_s3BucketDestination = value; }
+
+ /**
+ * <p>A destination signifying output to an S3 bucket.</p>
+ */
+ inline void SetS3BucketDestination(AnalyticsS3BucketDestination&& value) { m_s3BucketDestinationHasBeenSet = true; m_s3BucketDestination = std::move(value); }
+
+ /**
+ * <p>A destination signifying output to an S3 bucket.</p>
+ */
+ inline AnalyticsExportDestination& WithS3BucketDestination(const AnalyticsS3BucketDestination& value) { SetS3BucketDestination(value); return *this;}
+
+ /**
+ * <p>A destination signifying output to an S3 bucket.</p>
+ */
+ inline AnalyticsExportDestination& WithS3BucketDestination(AnalyticsS3BucketDestination&& value) { SetS3BucketDestination(std::move(value)); return *this;}
+
+ private:
+
+ AnalyticsS3BucketDestination m_s3BucketDestination;
+ bool m_s3BucketDestinationHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsFilter.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsFilter.h
new file mode 100644
index 00000000000..1567043a4af
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsFilter.h
@@ -0,0 +1,167 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Tag.h>
+#include <aws/s3/model/AnalyticsAndOperator.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The filter used to describe a set of objects for analyses. A filter must have
+ * exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator). If no
+ * filter is provided, all objects will be considered in any
+ * analysis.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AnalyticsFilter">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API AnalyticsFilter
+ {
+ public:
+ AnalyticsFilter();
+ AnalyticsFilter(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AnalyticsFilter& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The prefix to use when evaluating an analytics filter.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>The prefix to use when evaluating an analytics filter.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>The prefix to use when evaluating an analytics filter.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>The prefix to use when evaluating an analytics filter.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>The prefix to use when evaluating an analytics filter.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>The prefix to use when evaluating an analytics filter.</p>
+ */
+ inline AnalyticsFilter& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>The prefix to use when evaluating an analytics filter.</p>
+ */
+ inline AnalyticsFilter& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>The prefix to use when evaluating an analytics filter.</p>
+ */
+ inline AnalyticsFilter& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>The tag to use when evaluating an analytics filter.</p>
+ */
+ inline const Tag& GetTag() const{ return m_tag; }
+
+ /**
+ * <p>The tag to use when evaluating an analytics filter.</p>
+ */
+ inline bool TagHasBeenSet() const { return m_tagHasBeenSet; }
+
+ /**
+ * <p>The tag to use when evaluating an analytics filter.</p>
+ */
+ inline void SetTag(const Tag& value) { m_tagHasBeenSet = true; m_tag = value; }
+
+ /**
+ * <p>The tag to use when evaluating an analytics filter.</p>
+ */
+ inline void SetTag(Tag&& value) { m_tagHasBeenSet = true; m_tag = std::move(value); }
+
+ /**
+ * <p>The tag to use when evaluating an analytics filter.</p>
+ */
+ inline AnalyticsFilter& WithTag(const Tag& value) { SetTag(value); return *this;}
+
+ /**
+ * <p>The tag to use when evaluating an analytics filter.</p>
+ */
+ inline AnalyticsFilter& WithTag(Tag&& value) { SetTag(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
+ * analytics filter. The operator must have at least two predicates.</p>
+ */
+ inline const AnalyticsAndOperator& GetAnd() const{ return m_and; }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
+ * analytics filter. The operator must have at least two predicates.</p>
+ */
+ inline bool AndHasBeenSet() const { return m_andHasBeenSet; }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
+ * analytics filter. The operator must have at least two predicates.</p>
+ */
+ inline void SetAnd(const AnalyticsAndOperator& value) { m_andHasBeenSet = true; m_and = value; }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
+ * analytics filter. The operator must have at least two predicates.</p>
+ */
+ inline void SetAnd(AnalyticsAndOperator&& value) { m_andHasBeenSet = true; m_and = std::move(value); }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
+ * analytics filter. The operator must have at least two predicates.</p>
+ */
+ inline AnalyticsFilter& WithAnd(const AnalyticsAndOperator& value) { SetAnd(value); return *this;}
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating an
+ * analytics filter. The operator must have at least two predicates.</p>
+ */
+ inline AnalyticsFilter& WithAnd(AnalyticsAndOperator&& value) { SetAnd(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Tag m_tag;
+ bool m_tagHasBeenSet;
+
+ AnalyticsAndOperator m_and;
+ bool m_andHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsS3BucketDestination.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsS3BucketDestination.h
new file mode 100644
index 00000000000..69c40eb86d2
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsS3BucketDestination.h
@@ -0,0 +1,244 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/AnalyticsS3ExportFileFormat.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Contains information about where to publish the analytics
+ * results.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AnalyticsS3BucketDestination">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API AnalyticsS3BucketDestination
+ {
+ public:
+ AnalyticsS3BucketDestination();
+ AnalyticsS3BucketDestination(const Aws::Utils::Xml::XmlNode& xmlNode);
+ AnalyticsS3BucketDestination& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the file format used when exporting data to Amazon S3.</p>
+ */
+ inline const AnalyticsS3ExportFileFormat& GetFormat() const{ return m_format; }
+
+ /**
+ * <p>Specifies the file format used when exporting data to Amazon S3.</p>
+ */
+ inline bool FormatHasBeenSet() const { return m_formatHasBeenSet; }
+
+ /**
+ * <p>Specifies the file format used when exporting data to Amazon S3.</p>
+ */
+ inline void SetFormat(const AnalyticsS3ExportFileFormat& value) { m_formatHasBeenSet = true; m_format = value; }
+
+ /**
+ * <p>Specifies the file format used when exporting data to Amazon S3.</p>
+ */
+ inline void SetFormat(AnalyticsS3ExportFileFormat&& value) { m_formatHasBeenSet = true; m_format = std::move(value); }
+
+ /**
+ * <p>Specifies the file format used when exporting data to Amazon S3.</p>
+ */
+ inline AnalyticsS3BucketDestination& WithFormat(const AnalyticsS3ExportFileFormat& value) { SetFormat(value); return *this;}
+
+ /**
+ * <p>Specifies the file format used when exporting data to Amazon S3.</p>
+ */
+ inline AnalyticsS3BucketDestination& WithFormat(AnalyticsS3ExportFileFormat&& value) { SetFormat(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data.</p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline const Aws::String& GetBucketAccountId() const{ return m_bucketAccountId; }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data.</p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline bool BucketAccountIdHasBeenSet() const { return m_bucketAccountIdHasBeenSet; }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data.</p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline void SetBucketAccountId(const Aws::String& value) { m_bucketAccountIdHasBeenSet = true; m_bucketAccountId = value; }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data.</p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline void SetBucketAccountId(Aws::String&& value) { m_bucketAccountIdHasBeenSet = true; m_bucketAccountId = std::move(value); }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data.</p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline void SetBucketAccountId(const char* value) { m_bucketAccountIdHasBeenSet = true; m_bucketAccountId.assign(value); }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data.</p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline AnalyticsS3BucketDestination& WithBucketAccountId(const Aws::String& value) { SetBucketAccountId(value); return *this;}
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data.</p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline AnalyticsS3BucketDestination& WithBucketAccountId(Aws::String&& value) { SetBucketAccountId(std::move(value)); return *this;}
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data.</p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline AnalyticsS3BucketDestination& WithBucketAccountId(const char* value) { SetBucketAccountId(value); return *this;}
+
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket to which data is exported.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket to which data is exported.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket to which data is exported.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket to which data is exported.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket to which data is exported.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket to which data is exported.</p>
+ */
+ inline AnalyticsS3BucketDestination& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket to which data is exported.</p>
+ */
+ inline AnalyticsS3BucketDestination& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket to which data is exported.</p>
+ */
+ inline AnalyticsS3BucketDestination& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The prefix to use when exporting data. The prefix is prepended to all
+ * results.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>The prefix to use when exporting data. The prefix is prepended to all
+ * results.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>The prefix to use when exporting data. The prefix is prepended to all
+ * results.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>The prefix to use when exporting data. The prefix is prepended to all
+ * results.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>The prefix to use when exporting data. The prefix is prepended to all
+ * results.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>The prefix to use when exporting data. The prefix is prepended to all
+ * results.</p>
+ */
+ inline AnalyticsS3BucketDestination& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>The prefix to use when exporting data. The prefix is prepended to all
+ * results.</p>
+ */
+ inline AnalyticsS3BucketDestination& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>The prefix to use when exporting data. The prefix is prepended to all
+ * results.</p>
+ */
+ inline AnalyticsS3BucketDestination& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+ private:
+
+ AnalyticsS3ExportFileFormat m_format;
+ bool m_formatHasBeenSet;
+
+ Aws::String m_bucketAccountId;
+ bool m_bucketAccountIdHasBeenSet;
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsS3ExportFileFormat.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsS3ExportFileFormat.h
new file mode 100644
index 00000000000..b887163111c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/AnalyticsS3ExportFileFormat.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class AnalyticsS3ExportFileFormat
+ {
+ NOT_SET,
+ CSV
+ };
+
+namespace AnalyticsS3ExportFileFormatMapper
+{
+AWS_S3_API AnalyticsS3ExportFileFormat GetAnalyticsS3ExportFileFormatForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForAnalyticsS3ExportFileFormat(AnalyticsS3ExportFileFormat value);
+} // namespace AnalyticsS3ExportFileFormatMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ArchiveStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ArchiveStatus.h
new file mode 100644
index 00000000000..71b601ca074
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ArchiveStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ArchiveStatus
+ {
+ NOT_SET,
+ ARCHIVE_ACCESS,
+ DEEP_ARCHIVE_ACCESS
+ };
+
+namespace ArchiveStatusMapper
+{
+AWS_S3_API ArchiveStatus GetArchiveStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForArchiveStatus(ArchiveStatus value);
+} // namespace ArchiveStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Bucket.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Bucket.h
new file mode 100644
index 00000000000..ffe7104842c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Bucket.h
@@ -0,0 +1,131 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p> In terms of implementation, a Bucket is a resource. An Amazon S3 bucket name
+ * is globally unique, and the namespace is shared by all AWS accounts.
+ * </p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Bucket">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Bucket
+ {
+ public:
+ Bucket();
+ Bucket(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Bucket& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline const Aws::String& GetName() const{ return m_name; }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline bool NameHasBeenSet() const { return m_nameHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline Bucket& WithName(const Aws::String& value) { SetName(value); return *this;}
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline Bucket& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline Bucket& WithName(const char* value) { SetName(value); return *this;}
+
+
+ /**
+ * <p>Date the bucket was created. This date can change when making changes to your
+ * bucket, such as editing its bucket policy.</p>
+ */
+ inline const Aws::Utils::DateTime& GetCreationDate() const{ return m_creationDate; }
+
+ /**
+ * <p>Date the bucket was created. This date can change when making changes to your
+ * bucket, such as editing its bucket policy.</p>
+ */
+ inline bool CreationDateHasBeenSet() const { return m_creationDateHasBeenSet; }
+
+ /**
+ * <p>Date the bucket was created. This date can change when making changes to your
+ * bucket, such as editing its bucket policy.</p>
+ */
+ inline void SetCreationDate(const Aws::Utils::DateTime& value) { m_creationDateHasBeenSet = true; m_creationDate = value; }
+
+ /**
+ * <p>Date the bucket was created. This date can change when making changes to your
+ * bucket, such as editing its bucket policy.</p>
+ */
+ inline void SetCreationDate(Aws::Utils::DateTime&& value) { m_creationDateHasBeenSet = true; m_creationDate = std::move(value); }
+
+ /**
+ * <p>Date the bucket was created. This date can change when making changes to your
+ * bucket, such as editing its bucket policy.</p>
+ */
+ inline Bucket& WithCreationDate(const Aws::Utils::DateTime& value) { SetCreationDate(value); return *this;}
+
+ /**
+ * <p>Date the bucket was created. This date can change when making changes to your
+ * bucket, such as editing its bucket policy.</p>
+ */
+ inline Bucket& WithCreationDate(Aws::Utils::DateTime&& value) { SetCreationDate(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_name;
+ bool m_nameHasBeenSet;
+
+ Aws::Utils::DateTime m_creationDate;
+ bool m_creationDateHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketAccelerateStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketAccelerateStatus.h
new file mode 100644
index 00000000000..0e601f75bc4
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketAccelerateStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class BucketAccelerateStatus
+ {
+ NOT_SET,
+ Enabled,
+ Suspended
+ };
+
+namespace BucketAccelerateStatusMapper
+{
+AWS_S3_API BucketAccelerateStatus GetBucketAccelerateStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForBucketAccelerateStatus(BucketAccelerateStatus value);
+} // namespace BucketAccelerateStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketCannedACL.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketCannedACL.h
new file mode 100644
index 00000000000..a438a15aa9a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketCannedACL.h
@@ -0,0 +1,33 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class BucketCannedACL
+ {
+ NOT_SET,
+ private_,
+ public_read,
+ public_read_write,
+ authenticated_read
+ };
+
+namespace BucketCannedACLMapper
+{
+AWS_S3_API BucketCannedACL GetBucketCannedACLForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForBucketCannedACL(BucketCannedACL value);
+} // namespace BucketCannedACLMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLifecycleConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLifecycleConfiguration.h
new file mode 100644
index 00000000000..5c16eef4487
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLifecycleConfiguration.h
@@ -0,0 +1,93 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/LifecycleRule.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html">Object
+ * Lifecycle Management</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/BucketLifecycleConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API BucketLifecycleConfiguration
+ {
+ public:
+ BucketLifecycleConfiguration();
+ BucketLifecycleConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ BucketLifecycleConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>A lifecycle rule for individual objects in an Amazon S3 bucket.</p>
+ */
+ inline const Aws::Vector<LifecycleRule>& GetRules() const{ return m_rules; }
+
+ /**
+ * <p>A lifecycle rule for individual objects in an Amazon S3 bucket.</p>
+ */
+ inline bool RulesHasBeenSet() const { return m_rulesHasBeenSet; }
+
+ /**
+ * <p>A lifecycle rule for individual objects in an Amazon S3 bucket.</p>
+ */
+ inline void SetRules(const Aws::Vector<LifecycleRule>& value) { m_rulesHasBeenSet = true; m_rules = value; }
+
+ /**
+ * <p>A lifecycle rule for individual objects in an Amazon S3 bucket.</p>
+ */
+ inline void SetRules(Aws::Vector<LifecycleRule>&& value) { m_rulesHasBeenSet = true; m_rules = std::move(value); }
+
+ /**
+ * <p>A lifecycle rule for individual objects in an Amazon S3 bucket.</p>
+ */
+ inline BucketLifecycleConfiguration& WithRules(const Aws::Vector<LifecycleRule>& value) { SetRules(value); return *this;}
+
+ /**
+ * <p>A lifecycle rule for individual objects in an Amazon S3 bucket.</p>
+ */
+ inline BucketLifecycleConfiguration& WithRules(Aws::Vector<LifecycleRule>&& value) { SetRules(std::move(value)); return *this;}
+
+ /**
+ * <p>A lifecycle rule for individual objects in an Amazon S3 bucket.</p>
+ */
+ inline BucketLifecycleConfiguration& AddRules(const LifecycleRule& value) { m_rulesHasBeenSet = true; m_rules.push_back(value); return *this; }
+
+ /**
+ * <p>A lifecycle rule for individual objects in an Amazon S3 bucket.</p>
+ */
+ inline BucketLifecycleConfiguration& AddRules(LifecycleRule&& value) { m_rulesHasBeenSet = true; m_rules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<LifecycleRule> m_rules;
+ bool m_rulesHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLocationConstraint.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLocationConstraint.h
new file mode 100644
index 00000000000..86490ce1fa7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLocationConstraint.h
@@ -0,0 +1,55 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class BucketLocationConstraint
+ {
+ NOT_SET,
+ af_south_1,
+ ap_east_1,
+ ap_northeast_1,
+ ap_northeast_2,
+ ap_northeast_3,
+ ap_south_1,
+ ap_southeast_1,
+ ap_southeast_2,
+ ca_central_1,
+ cn_north_1,
+ cn_northwest_1,
+ EU,
+ eu_central_1,
+ eu_north_1,
+ eu_south_1,
+ eu_west_1,
+ eu_west_2,
+ eu_west_3,
+ me_south_1,
+ sa_east_1,
+ us_east_2,
+ us_gov_east_1,
+ us_gov_west_1,
+ us_west_1,
+ us_west_2,
+ us_east_1
+ };
+
+namespace BucketLocationConstraintMapper
+{
+AWS_S3_API BucketLocationConstraint GetBucketLocationConstraintForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForBucketLocationConstraint(BucketLocationConstraint value);
+} // namespace BucketLocationConstraintMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLoggingStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLoggingStatus.h
new file mode 100644
index 00000000000..36273be8489
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLoggingStatus.h
@@ -0,0 +1,66 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/LoggingEnabled.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for logging status information.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/BucketLoggingStatus">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API BucketLoggingStatus
+ {
+ public:
+ BucketLoggingStatus();
+ BucketLoggingStatus(const Aws::Utils::Xml::XmlNode& xmlNode);
+ BucketLoggingStatus& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const LoggingEnabled& GetLoggingEnabled() const{ return m_loggingEnabled; }
+
+
+ inline bool LoggingEnabledHasBeenSet() const { return m_loggingEnabledHasBeenSet; }
+
+
+ inline void SetLoggingEnabled(const LoggingEnabled& value) { m_loggingEnabledHasBeenSet = true; m_loggingEnabled = value; }
+
+
+ inline void SetLoggingEnabled(LoggingEnabled&& value) { m_loggingEnabledHasBeenSet = true; m_loggingEnabled = std::move(value); }
+
+
+ inline BucketLoggingStatus& WithLoggingEnabled(const LoggingEnabled& value) { SetLoggingEnabled(value); return *this;}
+
+
+ inline BucketLoggingStatus& WithLoggingEnabled(LoggingEnabled&& value) { SetLoggingEnabled(std::move(value)); return *this;}
+
+ private:
+
+ LoggingEnabled m_loggingEnabled;
+ bool m_loggingEnabledHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLogsPermission.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLogsPermission.h
new file mode 100644
index 00000000000..dce81afc735
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketLogsPermission.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class BucketLogsPermission
+ {
+ NOT_SET,
+ FULL_CONTROL,
+ READ,
+ WRITE
+ };
+
+namespace BucketLogsPermissionMapper
+{
+AWS_S3_API BucketLogsPermission GetBucketLogsPermissionForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForBucketLogsPermission(BucketLogsPermission value);
+} // namespace BucketLogsPermissionMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketVersioningStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketVersioningStatus.h
new file mode 100644
index 00000000000..e642e2c8be6
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/BucketVersioningStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class BucketVersioningStatus
+ {
+ NOT_SET,
+ Enabled,
+ Suspended
+ };
+
+namespace BucketVersioningStatusMapper
+{
+AWS_S3_API BucketVersioningStatus GetBucketVersioningStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForBucketVersioningStatus(BucketVersioningStatus value);
+} // namespace BucketVersioningStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CORSConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CORSConfiguration.h
new file mode 100644
index 00000000000..86a8e41c0d9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CORSConfiguration.h
@@ -0,0 +1,101 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/CORSRule.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes the cross-origin access configuration for objects in an Amazon S3
+ * bucket. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
+ * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CORSConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API CORSConfiguration
+ {
+ public:
+ CORSConfiguration();
+ CORSConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CORSConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline const Aws::Vector<CORSRule>& GetCORSRules() const{ return m_cORSRules; }
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline bool CORSRulesHasBeenSet() const { return m_cORSRulesHasBeenSet; }
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline void SetCORSRules(const Aws::Vector<CORSRule>& value) { m_cORSRulesHasBeenSet = true; m_cORSRules = value; }
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline void SetCORSRules(Aws::Vector<CORSRule>&& value) { m_cORSRulesHasBeenSet = true; m_cORSRules = std::move(value); }
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline CORSConfiguration& WithCORSRules(const Aws::Vector<CORSRule>& value) { SetCORSRules(value); return *this;}
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline CORSConfiguration& WithCORSRules(Aws::Vector<CORSRule>&& value) { SetCORSRules(std::move(value)); return *this;}
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline CORSConfiguration& AddCORSRules(const CORSRule& value) { m_cORSRulesHasBeenSet = true; m_cORSRules.push_back(value); return *this; }
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline CORSConfiguration& AddCORSRules(CORSRule&& value) { m_cORSRulesHasBeenSet = true; m_cORSRules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<CORSRule> m_cORSRules;
+ bool m_cORSRulesHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CORSRule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CORSRule.h
new file mode 100644
index 00000000000..7c725e26112
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CORSRule.h
@@ -0,0 +1,342 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies a cross-origin access rule for an Amazon S3 bucket.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CORSRule">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API CORSRule
+ {
+ public:
+ CORSRule();
+ CORSRule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CORSRule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Headers that are specified in the <code>Access-Control-Request-Headers</code>
+ * header. These headers are allowed in a preflight OPTIONS request. In response to
+ * any preflight OPTIONS request, Amazon S3 returns any requested headers that are
+ * allowed.</p>
+ */
+ inline const Aws::Vector<Aws::String>& GetAllowedHeaders() const{ return m_allowedHeaders; }
+
+ /**
+ * <p>Headers that are specified in the <code>Access-Control-Request-Headers</code>
+ * header. These headers are allowed in a preflight OPTIONS request. In response to
+ * any preflight OPTIONS request, Amazon S3 returns any requested headers that are
+ * allowed.</p>
+ */
+ inline bool AllowedHeadersHasBeenSet() const { return m_allowedHeadersHasBeenSet; }
+
+ /**
+ * <p>Headers that are specified in the <code>Access-Control-Request-Headers</code>
+ * header. These headers are allowed in a preflight OPTIONS request. In response to
+ * any preflight OPTIONS request, Amazon S3 returns any requested headers that are
+ * allowed.</p>
+ */
+ inline void SetAllowedHeaders(const Aws::Vector<Aws::String>& value) { m_allowedHeadersHasBeenSet = true; m_allowedHeaders = value; }
+
+ /**
+ * <p>Headers that are specified in the <code>Access-Control-Request-Headers</code>
+ * header. These headers are allowed in a preflight OPTIONS request. In response to
+ * any preflight OPTIONS request, Amazon S3 returns any requested headers that are
+ * allowed.</p>
+ */
+ inline void SetAllowedHeaders(Aws::Vector<Aws::String>&& value) { m_allowedHeadersHasBeenSet = true; m_allowedHeaders = std::move(value); }
+
+ /**
+ * <p>Headers that are specified in the <code>Access-Control-Request-Headers</code>
+ * header. These headers are allowed in a preflight OPTIONS request. In response to
+ * any preflight OPTIONS request, Amazon S3 returns any requested headers that are
+ * allowed.</p>
+ */
+ inline CORSRule& WithAllowedHeaders(const Aws::Vector<Aws::String>& value) { SetAllowedHeaders(value); return *this;}
+
+ /**
+ * <p>Headers that are specified in the <code>Access-Control-Request-Headers</code>
+ * header. These headers are allowed in a preflight OPTIONS request. In response to
+ * any preflight OPTIONS request, Amazon S3 returns any requested headers that are
+ * allowed.</p>
+ */
+ inline CORSRule& WithAllowedHeaders(Aws::Vector<Aws::String>&& value) { SetAllowedHeaders(std::move(value)); return *this;}
+
+ /**
+ * <p>Headers that are specified in the <code>Access-Control-Request-Headers</code>
+ * header. These headers are allowed in a preflight OPTIONS request. In response to
+ * any preflight OPTIONS request, Amazon S3 returns any requested headers that are
+ * allowed.</p>
+ */
+ inline CORSRule& AddAllowedHeaders(const Aws::String& value) { m_allowedHeadersHasBeenSet = true; m_allowedHeaders.push_back(value); return *this; }
+
+ /**
+ * <p>Headers that are specified in the <code>Access-Control-Request-Headers</code>
+ * header. These headers are allowed in a preflight OPTIONS request. In response to
+ * any preflight OPTIONS request, Amazon S3 returns any requested headers that are
+ * allowed.</p>
+ */
+ inline CORSRule& AddAllowedHeaders(Aws::String&& value) { m_allowedHeadersHasBeenSet = true; m_allowedHeaders.push_back(std::move(value)); return *this; }
+
+ /**
+ * <p>Headers that are specified in the <code>Access-Control-Request-Headers</code>
+ * header. These headers are allowed in a preflight OPTIONS request. In response to
+ * any preflight OPTIONS request, Amazon S3 returns any requested headers that are
+ * allowed.</p>
+ */
+ inline CORSRule& AddAllowedHeaders(const char* value) { m_allowedHeadersHasBeenSet = true; m_allowedHeaders.push_back(value); return *this; }
+
+
+ /**
+ * <p>An HTTP method that you allow the origin to execute. Valid values are
+ * <code>GET</code>, <code>PUT</code>, <code>HEAD</code>, <code>POST</code>, and
+ * <code>DELETE</code>.</p>
+ */
+ inline const Aws::Vector<Aws::String>& GetAllowedMethods() const{ return m_allowedMethods; }
+
+ /**
+ * <p>An HTTP method that you allow the origin to execute. Valid values are
+ * <code>GET</code>, <code>PUT</code>, <code>HEAD</code>, <code>POST</code>, and
+ * <code>DELETE</code>.</p>
+ */
+ inline bool AllowedMethodsHasBeenSet() const { return m_allowedMethodsHasBeenSet; }
+
+ /**
+ * <p>An HTTP method that you allow the origin to execute. Valid values are
+ * <code>GET</code>, <code>PUT</code>, <code>HEAD</code>, <code>POST</code>, and
+ * <code>DELETE</code>.</p>
+ */
+ inline void SetAllowedMethods(const Aws::Vector<Aws::String>& value) { m_allowedMethodsHasBeenSet = true; m_allowedMethods = value; }
+
+ /**
+ * <p>An HTTP method that you allow the origin to execute. Valid values are
+ * <code>GET</code>, <code>PUT</code>, <code>HEAD</code>, <code>POST</code>, and
+ * <code>DELETE</code>.</p>
+ */
+ inline void SetAllowedMethods(Aws::Vector<Aws::String>&& value) { m_allowedMethodsHasBeenSet = true; m_allowedMethods = std::move(value); }
+
+ /**
+ * <p>An HTTP method that you allow the origin to execute. Valid values are
+ * <code>GET</code>, <code>PUT</code>, <code>HEAD</code>, <code>POST</code>, and
+ * <code>DELETE</code>.</p>
+ */
+ inline CORSRule& WithAllowedMethods(const Aws::Vector<Aws::String>& value) { SetAllowedMethods(value); return *this;}
+
+ /**
+ * <p>An HTTP method that you allow the origin to execute. Valid values are
+ * <code>GET</code>, <code>PUT</code>, <code>HEAD</code>, <code>POST</code>, and
+ * <code>DELETE</code>.</p>
+ */
+ inline CORSRule& WithAllowedMethods(Aws::Vector<Aws::String>&& value) { SetAllowedMethods(std::move(value)); return *this;}
+
+ /**
+ * <p>An HTTP method that you allow the origin to execute. Valid values are
+ * <code>GET</code>, <code>PUT</code>, <code>HEAD</code>, <code>POST</code>, and
+ * <code>DELETE</code>.</p>
+ */
+ inline CORSRule& AddAllowedMethods(const Aws::String& value) { m_allowedMethodsHasBeenSet = true; m_allowedMethods.push_back(value); return *this; }
+
+ /**
+ * <p>An HTTP method that you allow the origin to execute. Valid values are
+ * <code>GET</code>, <code>PUT</code>, <code>HEAD</code>, <code>POST</code>, and
+ * <code>DELETE</code>.</p>
+ */
+ inline CORSRule& AddAllowedMethods(Aws::String&& value) { m_allowedMethodsHasBeenSet = true; m_allowedMethods.push_back(std::move(value)); return *this; }
+
+ /**
+ * <p>An HTTP method that you allow the origin to execute. Valid values are
+ * <code>GET</code>, <code>PUT</code>, <code>HEAD</code>, <code>POST</code>, and
+ * <code>DELETE</code>.</p>
+ */
+ inline CORSRule& AddAllowedMethods(const char* value) { m_allowedMethodsHasBeenSet = true; m_allowedMethods.push_back(value); return *this; }
+
+
+ /**
+ * <p>One or more origins you want customers to be able to access the bucket
+ * from.</p>
+ */
+ inline const Aws::Vector<Aws::String>& GetAllowedOrigins() const{ return m_allowedOrigins; }
+
+ /**
+ * <p>One or more origins you want customers to be able to access the bucket
+ * from.</p>
+ */
+ inline bool AllowedOriginsHasBeenSet() const { return m_allowedOriginsHasBeenSet; }
+
+ /**
+ * <p>One or more origins you want customers to be able to access the bucket
+ * from.</p>
+ */
+ inline void SetAllowedOrigins(const Aws::Vector<Aws::String>& value) { m_allowedOriginsHasBeenSet = true; m_allowedOrigins = value; }
+
+ /**
+ * <p>One or more origins you want customers to be able to access the bucket
+ * from.</p>
+ */
+ inline void SetAllowedOrigins(Aws::Vector<Aws::String>&& value) { m_allowedOriginsHasBeenSet = true; m_allowedOrigins = std::move(value); }
+
+ /**
+ * <p>One or more origins you want customers to be able to access the bucket
+ * from.</p>
+ */
+ inline CORSRule& WithAllowedOrigins(const Aws::Vector<Aws::String>& value) { SetAllowedOrigins(value); return *this;}
+
+ /**
+ * <p>One or more origins you want customers to be able to access the bucket
+ * from.</p>
+ */
+ inline CORSRule& WithAllowedOrigins(Aws::Vector<Aws::String>&& value) { SetAllowedOrigins(std::move(value)); return *this;}
+
+ /**
+ * <p>One or more origins you want customers to be able to access the bucket
+ * from.</p>
+ */
+ inline CORSRule& AddAllowedOrigins(const Aws::String& value) { m_allowedOriginsHasBeenSet = true; m_allowedOrigins.push_back(value); return *this; }
+
+ /**
+ * <p>One or more origins you want customers to be able to access the bucket
+ * from.</p>
+ */
+ inline CORSRule& AddAllowedOrigins(Aws::String&& value) { m_allowedOriginsHasBeenSet = true; m_allowedOrigins.push_back(std::move(value)); return *this; }
+
+ /**
+ * <p>One or more origins you want customers to be able to access the bucket
+ * from.</p>
+ */
+ inline CORSRule& AddAllowedOrigins(const char* value) { m_allowedOriginsHasBeenSet = true; m_allowedOrigins.push_back(value); return *this; }
+
+
+ /**
+ * <p>One or more headers in the response that you want customers to be able to
+ * access from their applications (for example, from a JavaScript
+ * <code>XMLHttpRequest</code> object).</p>
+ */
+ inline const Aws::Vector<Aws::String>& GetExposeHeaders() const{ return m_exposeHeaders; }
+
+ /**
+ * <p>One or more headers in the response that you want customers to be able to
+ * access from their applications (for example, from a JavaScript
+ * <code>XMLHttpRequest</code> object).</p>
+ */
+ inline bool ExposeHeadersHasBeenSet() const { return m_exposeHeadersHasBeenSet; }
+
+ /**
+ * <p>One or more headers in the response that you want customers to be able to
+ * access from their applications (for example, from a JavaScript
+ * <code>XMLHttpRequest</code> object).</p>
+ */
+ inline void SetExposeHeaders(const Aws::Vector<Aws::String>& value) { m_exposeHeadersHasBeenSet = true; m_exposeHeaders = value; }
+
+ /**
+ * <p>One or more headers in the response that you want customers to be able to
+ * access from their applications (for example, from a JavaScript
+ * <code>XMLHttpRequest</code> object).</p>
+ */
+ inline void SetExposeHeaders(Aws::Vector<Aws::String>&& value) { m_exposeHeadersHasBeenSet = true; m_exposeHeaders = std::move(value); }
+
+ /**
+ * <p>One or more headers in the response that you want customers to be able to
+ * access from their applications (for example, from a JavaScript
+ * <code>XMLHttpRequest</code> object).</p>
+ */
+ inline CORSRule& WithExposeHeaders(const Aws::Vector<Aws::String>& value) { SetExposeHeaders(value); return *this;}
+
+ /**
+ * <p>One or more headers in the response that you want customers to be able to
+ * access from their applications (for example, from a JavaScript
+ * <code>XMLHttpRequest</code> object).</p>
+ */
+ inline CORSRule& WithExposeHeaders(Aws::Vector<Aws::String>&& value) { SetExposeHeaders(std::move(value)); return *this;}
+
+ /**
+ * <p>One or more headers in the response that you want customers to be able to
+ * access from their applications (for example, from a JavaScript
+ * <code>XMLHttpRequest</code> object).</p>
+ */
+ inline CORSRule& AddExposeHeaders(const Aws::String& value) { m_exposeHeadersHasBeenSet = true; m_exposeHeaders.push_back(value); return *this; }
+
+ /**
+ * <p>One or more headers in the response that you want customers to be able to
+ * access from their applications (for example, from a JavaScript
+ * <code>XMLHttpRequest</code> object).</p>
+ */
+ inline CORSRule& AddExposeHeaders(Aws::String&& value) { m_exposeHeadersHasBeenSet = true; m_exposeHeaders.push_back(std::move(value)); return *this; }
+
+ /**
+ * <p>One or more headers in the response that you want customers to be able to
+ * access from their applications (for example, from a JavaScript
+ * <code>XMLHttpRequest</code> object).</p>
+ */
+ inline CORSRule& AddExposeHeaders(const char* value) { m_exposeHeadersHasBeenSet = true; m_exposeHeaders.push_back(value); return *this; }
+
+
+ /**
+ * <p>The time in seconds that your browser is to cache the preflight response for
+ * the specified resource.</p>
+ */
+ inline int GetMaxAgeSeconds() const{ return m_maxAgeSeconds; }
+
+ /**
+ * <p>The time in seconds that your browser is to cache the preflight response for
+ * the specified resource.</p>
+ */
+ inline bool MaxAgeSecondsHasBeenSet() const { return m_maxAgeSecondsHasBeenSet; }
+
+ /**
+ * <p>The time in seconds that your browser is to cache the preflight response for
+ * the specified resource.</p>
+ */
+ inline void SetMaxAgeSeconds(int value) { m_maxAgeSecondsHasBeenSet = true; m_maxAgeSeconds = value; }
+
+ /**
+ * <p>The time in seconds that your browser is to cache the preflight response for
+ * the specified resource.</p>
+ */
+ inline CORSRule& WithMaxAgeSeconds(int value) { SetMaxAgeSeconds(value); return *this;}
+
+ private:
+
+ Aws::Vector<Aws::String> m_allowedHeaders;
+ bool m_allowedHeadersHasBeenSet;
+
+ Aws::Vector<Aws::String> m_allowedMethods;
+ bool m_allowedMethodsHasBeenSet;
+
+ Aws::Vector<Aws::String> m_allowedOrigins;
+ bool m_allowedOriginsHasBeenSet;
+
+ Aws::Vector<Aws::String> m_exposeHeaders;
+ bool m_exposeHeadersHasBeenSet;
+
+ int m_maxAgeSeconds;
+ bool m_maxAgeSecondsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CSVInput.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CSVInput.h
new file mode 100644
index 00000000000..ca40bb8ef9b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CSVInput.h
@@ -0,0 +1,446 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/FileHeaderInfo.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes how an uncompressed comma-separated values (CSV)-formatted input
+ * object is formatted.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CSVInput">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API CSVInput
+ {
+ public:
+ CSVInput();
+ CSVInput(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CSVInput& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Describes the first line of input. Valid values are:</p> <ul> <li> <p>
+ * <code>NONE</code>: First line is not a header.</p> </li> <li> <p>
+ * <code>IGNORE</code>: First line is a header, but you can't use the header values
+ * to indicate the column in an expression. You can use column position (such as
+ * _1, _2, …) to indicate the column (<code>SELECT s._1 FROM OBJECT s</code>).</p>
+ * </li> <li> <p> <code>Use</code>: First line is a header, and you can use the
+ * header value to identify a column in an expression (<code>SELECT "name" FROM
+ * OBJECT</code>). </p> </li> </ul>
+ */
+ inline const FileHeaderInfo& GetFileHeaderInfo() const{ return m_fileHeaderInfo; }
+
+ /**
+ * <p>Describes the first line of input. Valid values are:</p> <ul> <li> <p>
+ * <code>NONE</code>: First line is not a header.</p> </li> <li> <p>
+ * <code>IGNORE</code>: First line is a header, but you can't use the header values
+ * to indicate the column in an expression. You can use column position (such as
+ * _1, _2, …) to indicate the column (<code>SELECT s._1 FROM OBJECT s</code>).</p>
+ * </li> <li> <p> <code>Use</code>: First line is a header, and you can use the
+ * header value to identify a column in an expression (<code>SELECT "name" FROM
+ * OBJECT</code>). </p> </li> </ul>
+ */
+ inline bool FileHeaderInfoHasBeenSet() const { return m_fileHeaderInfoHasBeenSet; }
+
+ /**
+ * <p>Describes the first line of input. Valid values are:</p> <ul> <li> <p>
+ * <code>NONE</code>: First line is not a header.</p> </li> <li> <p>
+ * <code>IGNORE</code>: First line is a header, but you can't use the header values
+ * to indicate the column in an expression. You can use column position (such as
+ * _1, _2, …) to indicate the column (<code>SELECT s._1 FROM OBJECT s</code>).</p>
+ * </li> <li> <p> <code>Use</code>: First line is a header, and you can use the
+ * header value to identify a column in an expression (<code>SELECT "name" FROM
+ * OBJECT</code>). </p> </li> </ul>
+ */
+ inline void SetFileHeaderInfo(const FileHeaderInfo& value) { m_fileHeaderInfoHasBeenSet = true; m_fileHeaderInfo = value; }
+
+ /**
+ * <p>Describes the first line of input. Valid values are:</p> <ul> <li> <p>
+ * <code>NONE</code>: First line is not a header.</p> </li> <li> <p>
+ * <code>IGNORE</code>: First line is a header, but you can't use the header values
+ * to indicate the column in an expression. You can use column position (such as
+ * _1, _2, …) to indicate the column (<code>SELECT s._1 FROM OBJECT s</code>).</p>
+ * </li> <li> <p> <code>Use</code>: First line is a header, and you can use the
+ * header value to identify a column in an expression (<code>SELECT "name" FROM
+ * OBJECT</code>). </p> </li> </ul>
+ */
+ inline void SetFileHeaderInfo(FileHeaderInfo&& value) { m_fileHeaderInfoHasBeenSet = true; m_fileHeaderInfo = std::move(value); }
+
+ /**
+ * <p>Describes the first line of input. Valid values are:</p> <ul> <li> <p>
+ * <code>NONE</code>: First line is not a header.</p> </li> <li> <p>
+ * <code>IGNORE</code>: First line is a header, but you can't use the header values
+ * to indicate the column in an expression. You can use column position (such as
+ * _1, _2, …) to indicate the column (<code>SELECT s._1 FROM OBJECT s</code>).</p>
+ * </li> <li> <p> <code>Use</code>: First line is a header, and you can use the
+ * header value to identify a column in an expression (<code>SELECT "name" FROM
+ * OBJECT</code>). </p> </li> </ul>
+ */
+ inline CSVInput& WithFileHeaderInfo(const FileHeaderInfo& value) { SetFileHeaderInfo(value); return *this;}
+
+ /**
+ * <p>Describes the first line of input. Valid values are:</p> <ul> <li> <p>
+ * <code>NONE</code>: First line is not a header.</p> </li> <li> <p>
+ * <code>IGNORE</code>: First line is a header, but you can't use the header values
+ * to indicate the column in an expression. You can use column position (such as
+ * _1, _2, …) to indicate the column (<code>SELECT s._1 FROM OBJECT s</code>).</p>
+ * </li> <li> <p> <code>Use</code>: First line is a header, and you can use the
+ * header value to identify a column in an expression (<code>SELECT "name" FROM
+ * OBJECT</code>). </p> </li> </ul>
+ */
+ inline CSVInput& WithFileHeaderInfo(FileHeaderInfo&& value) { SetFileHeaderInfo(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A single character used to indicate that a row should be ignored when the
+ * character is present at the start of that row. You can specify any character to
+ * indicate a comment line.</p>
+ */
+ inline const Aws::String& GetComments() const{ return m_comments; }
+
+ /**
+ * <p>A single character used to indicate that a row should be ignored when the
+ * character is present at the start of that row. You can specify any character to
+ * indicate a comment line.</p>
+ */
+ inline bool CommentsHasBeenSet() const { return m_commentsHasBeenSet; }
+
+ /**
+ * <p>A single character used to indicate that a row should be ignored when the
+ * character is present at the start of that row. You can specify any character to
+ * indicate a comment line.</p>
+ */
+ inline void SetComments(const Aws::String& value) { m_commentsHasBeenSet = true; m_comments = value; }
+
+ /**
+ * <p>A single character used to indicate that a row should be ignored when the
+ * character is present at the start of that row. You can specify any character to
+ * indicate a comment line.</p>
+ */
+ inline void SetComments(Aws::String&& value) { m_commentsHasBeenSet = true; m_comments = std::move(value); }
+
+ /**
+ * <p>A single character used to indicate that a row should be ignored when the
+ * character is present at the start of that row. You can specify any character to
+ * indicate a comment line.</p>
+ */
+ inline void SetComments(const char* value) { m_commentsHasBeenSet = true; m_comments.assign(value); }
+
+ /**
+ * <p>A single character used to indicate that a row should be ignored when the
+ * character is present at the start of that row. You can specify any character to
+ * indicate a comment line.</p>
+ */
+ inline CSVInput& WithComments(const Aws::String& value) { SetComments(value); return *this;}
+
+ /**
+ * <p>A single character used to indicate that a row should be ignored when the
+ * character is present at the start of that row. You can specify any character to
+ * indicate a comment line.</p>
+ */
+ inline CSVInput& WithComments(Aws::String&& value) { SetComments(std::move(value)); return *this;}
+
+ /**
+ * <p>A single character used to indicate that a row should be ignored when the
+ * character is present at the start of that row. You can specify any character to
+ * indicate a comment line.</p>
+ */
+ inline CSVInput& WithComments(const char* value) { SetComments(value); return *this;}
+
+
+ /**
+ * <p>A single character used for escaping the quotation mark character inside an
+ * already escaped value. For example, the value """ a , b """ is parsed as " a , b
+ * ".</p>
+ */
+ inline const Aws::String& GetQuoteEscapeCharacter() const{ return m_quoteEscapeCharacter; }
+
+ /**
+ * <p>A single character used for escaping the quotation mark character inside an
+ * already escaped value. For example, the value """ a , b """ is parsed as " a , b
+ * ".</p>
+ */
+ inline bool QuoteEscapeCharacterHasBeenSet() const { return m_quoteEscapeCharacterHasBeenSet; }
+
+ /**
+ * <p>A single character used for escaping the quotation mark character inside an
+ * already escaped value. For example, the value """ a , b """ is parsed as " a , b
+ * ".</p>
+ */
+ inline void SetQuoteEscapeCharacter(const Aws::String& value) { m_quoteEscapeCharacterHasBeenSet = true; m_quoteEscapeCharacter = value; }
+
+ /**
+ * <p>A single character used for escaping the quotation mark character inside an
+ * already escaped value. For example, the value """ a , b """ is parsed as " a , b
+ * ".</p>
+ */
+ inline void SetQuoteEscapeCharacter(Aws::String&& value) { m_quoteEscapeCharacterHasBeenSet = true; m_quoteEscapeCharacter = std::move(value); }
+
+ /**
+ * <p>A single character used for escaping the quotation mark character inside an
+ * already escaped value. For example, the value """ a , b """ is parsed as " a , b
+ * ".</p>
+ */
+ inline void SetQuoteEscapeCharacter(const char* value) { m_quoteEscapeCharacterHasBeenSet = true; m_quoteEscapeCharacter.assign(value); }
+
+ /**
+ * <p>A single character used for escaping the quotation mark character inside an
+ * already escaped value. For example, the value """ a , b """ is parsed as " a , b
+ * ".</p>
+ */
+ inline CSVInput& WithQuoteEscapeCharacter(const Aws::String& value) { SetQuoteEscapeCharacter(value); return *this;}
+
+ /**
+ * <p>A single character used for escaping the quotation mark character inside an
+ * already escaped value. For example, the value """ a , b """ is parsed as " a , b
+ * ".</p>
+ */
+ inline CSVInput& WithQuoteEscapeCharacter(Aws::String&& value) { SetQuoteEscapeCharacter(std::move(value)); return *this;}
+
+ /**
+ * <p>A single character used for escaping the quotation mark character inside an
+ * already escaped value. For example, the value """ a , b """ is parsed as " a , b
+ * ".</p>
+ */
+ inline CSVInput& WithQuoteEscapeCharacter(const char* value) { SetQuoteEscapeCharacter(value); return *this;}
+
+
+ /**
+ * <p>A single character used to separate individual records in the input. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline const Aws::String& GetRecordDelimiter() const{ return m_recordDelimiter; }
+
+ /**
+ * <p>A single character used to separate individual records in the input. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline bool RecordDelimiterHasBeenSet() const { return m_recordDelimiterHasBeenSet; }
+
+ /**
+ * <p>A single character used to separate individual records in the input. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline void SetRecordDelimiter(const Aws::String& value) { m_recordDelimiterHasBeenSet = true; m_recordDelimiter = value; }
+
+ /**
+ * <p>A single character used to separate individual records in the input. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline void SetRecordDelimiter(Aws::String&& value) { m_recordDelimiterHasBeenSet = true; m_recordDelimiter = std::move(value); }
+
+ /**
+ * <p>A single character used to separate individual records in the input. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline void SetRecordDelimiter(const char* value) { m_recordDelimiterHasBeenSet = true; m_recordDelimiter.assign(value); }
+
+ /**
+ * <p>A single character used to separate individual records in the input. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline CSVInput& WithRecordDelimiter(const Aws::String& value) { SetRecordDelimiter(value); return *this;}
+
+ /**
+ * <p>A single character used to separate individual records in the input. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline CSVInput& WithRecordDelimiter(Aws::String&& value) { SetRecordDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>A single character used to separate individual records in the input. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline CSVInput& WithRecordDelimiter(const char* value) { SetRecordDelimiter(value); return *this;}
+
+
+ /**
+ * <p>A single character used to separate individual fields in a record. You can
+ * specify an arbitrary delimiter.</p>
+ */
+ inline const Aws::String& GetFieldDelimiter() const{ return m_fieldDelimiter; }
+
+ /**
+ * <p>A single character used to separate individual fields in a record. You can
+ * specify an arbitrary delimiter.</p>
+ */
+ inline bool FieldDelimiterHasBeenSet() const { return m_fieldDelimiterHasBeenSet; }
+
+ /**
+ * <p>A single character used to separate individual fields in a record. You can
+ * specify an arbitrary delimiter.</p>
+ */
+ inline void SetFieldDelimiter(const Aws::String& value) { m_fieldDelimiterHasBeenSet = true; m_fieldDelimiter = value; }
+
+ /**
+ * <p>A single character used to separate individual fields in a record. You can
+ * specify an arbitrary delimiter.</p>
+ */
+ inline void SetFieldDelimiter(Aws::String&& value) { m_fieldDelimiterHasBeenSet = true; m_fieldDelimiter = std::move(value); }
+
+ /**
+ * <p>A single character used to separate individual fields in a record. You can
+ * specify an arbitrary delimiter.</p>
+ */
+ inline void SetFieldDelimiter(const char* value) { m_fieldDelimiterHasBeenSet = true; m_fieldDelimiter.assign(value); }
+
+ /**
+ * <p>A single character used to separate individual fields in a record. You can
+ * specify an arbitrary delimiter.</p>
+ */
+ inline CSVInput& WithFieldDelimiter(const Aws::String& value) { SetFieldDelimiter(value); return *this;}
+
+ /**
+ * <p>A single character used to separate individual fields in a record. You can
+ * specify an arbitrary delimiter.</p>
+ */
+ inline CSVInput& WithFieldDelimiter(Aws::String&& value) { SetFieldDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>A single character used to separate individual fields in a record. You can
+ * specify an arbitrary delimiter.</p>
+ */
+ inline CSVInput& WithFieldDelimiter(const char* value) { SetFieldDelimiter(value); return *this;}
+
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p> <p>Type:
+ * String</p> <p>Default: <code>"</code> </p> <p>Ancestors: <code>CSV</code> </p>
+ */
+ inline const Aws::String& GetQuoteCharacter() const{ return m_quoteCharacter; }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p> <p>Type:
+ * String</p> <p>Default: <code>"</code> </p> <p>Ancestors: <code>CSV</code> </p>
+ */
+ inline bool QuoteCharacterHasBeenSet() const { return m_quoteCharacterHasBeenSet; }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p> <p>Type:
+ * String</p> <p>Default: <code>"</code> </p> <p>Ancestors: <code>CSV</code> </p>
+ */
+ inline void SetQuoteCharacter(const Aws::String& value) { m_quoteCharacterHasBeenSet = true; m_quoteCharacter = value; }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p> <p>Type:
+ * String</p> <p>Default: <code>"</code> </p> <p>Ancestors: <code>CSV</code> </p>
+ */
+ inline void SetQuoteCharacter(Aws::String&& value) { m_quoteCharacterHasBeenSet = true; m_quoteCharacter = std::move(value); }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p> <p>Type:
+ * String</p> <p>Default: <code>"</code> </p> <p>Ancestors: <code>CSV</code> </p>
+ */
+ inline void SetQuoteCharacter(const char* value) { m_quoteCharacterHasBeenSet = true; m_quoteCharacter.assign(value); }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p> <p>Type:
+ * String</p> <p>Default: <code>"</code> </p> <p>Ancestors: <code>CSV</code> </p>
+ */
+ inline CSVInput& WithQuoteCharacter(const Aws::String& value) { SetQuoteCharacter(value); return *this;}
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p> <p>Type:
+ * String</p> <p>Default: <code>"</code> </p> <p>Ancestors: <code>CSV</code> </p>
+ */
+ inline CSVInput& WithQuoteCharacter(Aws::String&& value) { SetQuoteCharacter(std::move(value)); return *this;}
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p> <p>Type:
+ * String</p> <p>Default: <code>"</code> </p> <p>Ancestors: <code>CSV</code> </p>
+ */
+ inline CSVInput& WithQuoteCharacter(const char* value) { SetQuoteCharacter(value); return *this;}
+
+
+ /**
+ * <p>Specifies that CSV field values may contain quoted record delimiters and such
+ * records should be allowed. Default value is FALSE. Setting this value to TRUE
+ * may lower performance.</p>
+ */
+ inline bool GetAllowQuotedRecordDelimiter() const{ return m_allowQuotedRecordDelimiter; }
+
+ /**
+ * <p>Specifies that CSV field values may contain quoted record delimiters and such
+ * records should be allowed. Default value is FALSE. Setting this value to TRUE
+ * may lower performance.</p>
+ */
+ inline bool AllowQuotedRecordDelimiterHasBeenSet() const { return m_allowQuotedRecordDelimiterHasBeenSet; }
+
+ /**
+ * <p>Specifies that CSV field values may contain quoted record delimiters and such
+ * records should be allowed. Default value is FALSE. Setting this value to TRUE
+ * may lower performance.</p>
+ */
+ inline void SetAllowQuotedRecordDelimiter(bool value) { m_allowQuotedRecordDelimiterHasBeenSet = true; m_allowQuotedRecordDelimiter = value; }
+
+ /**
+ * <p>Specifies that CSV field values may contain quoted record delimiters and such
+ * records should be allowed. Default value is FALSE. Setting this value to TRUE
+ * may lower performance.</p>
+ */
+ inline CSVInput& WithAllowQuotedRecordDelimiter(bool value) { SetAllowQuotedRecordDelimiter(value); return *this;}
+
+ private:
+
+ FileHeaderInfo m_fileHeaderInfo;
+ bool m_fileHeaderInfoHasBeenSet;
+
+ Aws::String m_comments;
+ bool m_commentsHasBeenSet;
+
+ Aws::String m_quoteEscapeCharacter;
+ bool m_quoteEscapeCharacterHasBeenSet;
+
+ Aws::String m_recordDelimiter;
+ bool m_recordDelimiterHasBeenSet;
+
+ Aws::String m_fieldDelimiter;
+ bool m_fieldDelimiterHasBeenSet;
+
+ Aws::String m_quoteCharacter;
+ bool m_quoteCharacterHasBeenSet;
+
+ bool m_allowQuotedRecordDelimiter;
+ bool m_allowQuotedRecordDelimiterHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CSVOutput.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CSVOutput.h
new file mode 100644
index 00000000000..d507716d7f7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CSVOutput.h
@@ -0,0 +1,314 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/QuoteFields.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes how uncompressed comma-separated values (CSV)-formatted results are
+ * formatted.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CSVOutput">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API CSVOutput
+ {
+ public:
+ CSVOutput();
+ CSVOutput(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CSVOutput& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Indicates whether to use quotation marks around output fields. </p> <ul> <li>
+ * <p> <code>ALWAYS</code>: Always use quotation marks for output fields.</p> </li>
+ * <li> <p> <code>ASNEEDED</code>: Use quotation marks for output fields when
+ * needed.</p> </li> </ul>
+ */
+ inline const QuoteFields& GetQuoteFields() const{ return m_quoteFields; }
+
+ /**
+ * <p>Indicates whether to use quotation marks around output fields. </p> <ul> <li>
+ * <p> <code>ALWAYS</code>: Always use quotation marks for output fields.</p> </li>
+ * <li> <p> <code>ASNEEDED</code>: Use quotation marks for output fields when
+ * needed.</p> </li> </ul>
+ */
+ inline bool QuoteFieldsHasBeenSet() const { return m_quoteFieldsHasBeenSet; }
+
+ /**
+ * <p>Indicates whether to use quotation marks around output fields. </p> <ul> <li>
+ * <p> <code>ALWAYS</code>: Always use quotation marks for output fields.</p> </li>
+ * <li> <p> <code>ASNEEDED</code>: Use quotation marks for output fields when
+ * needed.</p> </li> </ul>
+ */
+ inline void SetQuoteFields(const QuoteFields& value) { m_quoteFieldsHasBeenSet = true; m_quoteFields = value; }
+
+ /**
+ * <p>Indicates whether to use quotation marks around output fields. </p> <ul> <li>
+ * <p> <code>ALWAYS</code>: Always use quotation marks for output fields.</p> </li>
+ * <li> <p> <code>ASNEEDED</code>: Use quotation marks for output fields when
+ * needed.</p> </li> </ul>
+ */
+ inline void SetQuoteFields(QuoteFields&& value) { m_quoteFieldsHasBeenSet = true; m_quoteFields = std::move(value); }
+
+ /**
+ * <p>Indicates whether to use quotation marks around output fields. </p> <ul> <li>
+ * <p> <code>ALWAYS</code>: Always use quotation marks for output fields.</p> </li>
+ * <li> <p> <code>ASNEEDED</code>: Use quotation marks for output fields when
+ * needed.</p> </li> </ul>
+ */
+ inline CSVOutput& WithQuoteFields(const QuoteFields& value) { SetQuoteFields(value); return *this;}
+
+ /**
+ * <p>Indicates whether to use quotation marks around output fields. </p> <ul> <li>
+ * <p> <code>ALWAYS</code>: Always use quotation marks for output fields.</p> </li>
+ * <li> <p> <code>ASNEEDED</code>: Use quotation marks for output fields when
+ * needed.</p> </li> </ul>
+ */
+ inline CSVOutput& WithQuoteFields(QuoteFields&& value) { SetQuoteFields(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The single character used for escaping the quote character inside an already
+ * escaped value.</p>
+ */
+ inline const Aws::String& GetQuoteEscapeCharacter() const{ return m_quoteEscapeCharacter; }
+
+ /**
+ * <p>The single character used for escaping the quote character inside an already
+ * escaped value.</p>
+ */
+ inline bool QuoteEscapeCharacterHasBeenSet() const { return m_quoteEscapeCharacterHasBeenSet; }
+
+ /**
+ * <p>The single character used for escaping the quote character inside an already
+ * escaped value.</p>
+ */
+ inline void SetQuoteEscapeCharacter(const Aws::String& value) { m_quoteEscapeCharacterHasBeenSet = true; m_quoteEscapeCharacter = value; }
+
+ /**
+ * <p>The single character used for escaping the quote character inside an already
+ * escaped value.</p>
+ */
+ inline void SetQuoteEscapeCharacter(Aws::String&& value) { m_quoteEscapeCharacterHasBeenSet = true; m_quoteEscapeCharacter = std::move(value); }
+
+ /**
+ * <p>The single character used for escaping the quote character inside an already
+ * escaped value.</p>
+ */
+ inline void SetQuoteEscapeCharacter(const char* value) { m_quoteEscapeCharacterHasBeenSet = true; m_quoteEscapeCharacter.assign(value); }
+
+ /**
+ * <p>The single character used for escaping the quote character inside an already
+ * escaped value.</p>
+ */
+ inline CSVOutput& WithQuoteEscapeCharacter(const Aws::String& value) { SetQuoteEscapeCharacter(value); return *this;}
+
+ /**
+ * <p>The single character used for escaping the quote character inside an already
+ * escaped value.</p>
+ */
+ inline CSVOutput& WithQuoteEscapeCharacter(Aws::String&& value) { SetQuoteEscapeCharacter(std::move(value)); return *this;}
+
+ /**
+ * <p>The single character used for escaping the quote character inside an already
+ * escaped value.</p>
+ */
+ inline CSVOutput& WithQuoteEscapeCharacter(const char* value) { SetQuoteEscapeCharacter(value); return *this;}
+
+
+ /**
+ * <p>A single character used to separate individual records in the output. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline const Aws::String& GetRecordDelimiter() const{ return m_recordDelimiter; }
+
+ /**
+ * <p>A single character used to separate individual records in the output. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline bool RecordDelimiterHasBeenSet() const { return m_recordDelimiterHasBeenSet; }
+
+ /**
+ * <p>A single character used to separate individual records in the output. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline void SetRecordDelimiter(const Aws::String& value) { m_recordDelimiterHasBeenSet = true; m_recordDelimiter = value; }
+
+ /**
+ * <p>A single character used to separate individual records in the output. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline void SetRecordDelimiter(Aws::String&& value) { m_recordDelimiterHasBeenSet = true; m_recordDelimiter = std::move(value); }
+
+ /**
+ * <p>A single character used to separate individual records in the output. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline void SetRecordDelimiter(const char* value) { m_recordDelimiterHasBeenSet = true; m_recordDelimiter.assign(value); }
+
+ /**
+ * <p>A single character used to separate individual records in the output. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline CSVOutput& WithRecordDelimiter(const Aws::String& value) { SetRecordDelimiter(value); return *this;}
+
+ /**
+ * <p>A single character used to separate individual records in the output. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline CSVOutput& WithRecordDelimiter(Aws::String&& value) { SetRecordDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>A single character used to separate individual records in the output. Instead
+ * of the default value, you can specify an arbitrary delimiter.</p>
+ */
+ inline CSVOutput& WithRecordDelimiter(const char* value) { SetRecordDelimiter(value); return *this;}
+
+
+ /**
+ * <p>The value used to separate individual fields in a record. You can specify an
+ * arbitrary delimiter.</p>
+ */
+ inline const Aws::String& GetFieldDelimiter() const{ return m_fieldDelimiter; }
+
+ /**
+ * <p>The value used to separate individual fields in a record. You can specify an
+ * arbitrary delimiter.</p>
+ */
+ inline bool FieldDelimiterHasBeenSet() const { return m_fieldDelimiterHasBeenSet; }
+
+ /**
+ * <p>The value used to separate individual fields in a record. You can specify an
+ * arbitrary delimiter.</p>
+ */
+ inline void SetFieldDelimiter(const Aws::String& value) { m_fieldDelimiterHasBeenSet = true; m_fieldDelimiter = value; }
+
+ /**
+ * <p>The value used to separate individual fields in a record. You can specify an
+ * arbitrary delimiter.</p>
+ */
+ inline void SetFieldDelimiter(Aws::String&& value) { m_fieldDelimiterHasBeenSet = true; m_fieldDelimiter = std::move(value); }
+
+ /**
+ * <p>The value used to separate individual fields in a record. You can specify an
+ * arbitrary delimiter.</p>
+ */
+ inline void SetFieldDelimiter(const char* value) { m_fieldDelimiterHasBeenSet = true; m_fieldDelimiter.assign(value); }
+
+ /**
+ * <p>The value used to separate individual fields in a record. You can specify an
+ * arbitrary delimiter.</p>
+ */
+ inline CSVOutput& WithFieldDelimiter(const Aws::String& value) { SetFieldDelimiter(value); return *this;}
+
+ /**
+ * <p>The value used to separate individual fields in a record. You can specify an
+ * arbitrary delimiter.</p>
+ */
+ inline CSVOutput& WithFieldDelimiter(Aws::String&& value) { SetFieldDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>The value used to separate individual fields in a record. You can specify an
+ * arbitrary delimiter.</p>
+ */
+ inline CSVOutput& WithFieldDelimiter(const char* value) { SetFieldDelimiter(value); return *this;}
+
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p>
+ */
+ inline const Aws::String& GetQuoteCharacter() const{ return m_quoteCharacter; }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p>
+ */
+ inline bool QuoteCharacterHasBeenSet() const { return m_quoteCharacterHasBeenSet; }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p>
+ */
+ inline void SetQuoteCharacter(const Aws::String& value) { m_quoteCharacterHasBeenSet = true; m_quoteCharacter = value; }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p>
+ */
+ inline void SetQuoteCharacter(Aws::String&& value) { m_quoteCharacterHasBeenSet = true; m_quoteCharacter = std::move(value); }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p>
+ */
+ inline void SetQuoteCharacter(const char* value) { m_quoteCharacterHasBeenSet = true; m_quoteCharacter.assign(value); }
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p>
+ */
+ inline CSVOutput& WithQuoteCharacter(const Aws::String& value) { SetQuoteCharacter(value); return *this;}
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p>
+ */
+ inline CSVOutput& WithQuoteCharacter(Aws::String&& value) { SetQuoteCharacter(std::move(value)); return *this;}
+
+ /**
+ * <p>A single character used for escaping when the field delimiter is part of the
+ * value. For example, if the value is <code>a, b</code>, Amazon S3 wraps this
+ * field value in quotation marks, as follows: <code>" a , b "</code>.</p>
+ */
+ inline CSVOutput& WithQuoteCharacter(const char* value) { SetQuoteCharacter(value); return *this;}
+
+ private:
+
+ QuoteFields m_quoteFields;
+ bool m_quoteFieldsHasBeenSet;
+
+ Aws::String m_quoteEscapeCharacter;
+ bool m_quoteEscapeCharacterHasBeenSet;
+
+ Aws::String m_recordDelimiter;
+ bool m_recordDelimiterHasBeenSet;
+
+ Aws::String m_fieldDelimiter;
+ bool m_fieldDelimiterHasBeenSet;
+
+ Aws::String m_quoteCharacter;
+ bool m_quoteCharacterHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CloudFunctionConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CloudFunctionConfiguration.h
new file mode 100644
index 00000000000..d85743d470c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CloudFunctionConfiguration.h
@@ -0,0 +1,215 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Event.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for specifying the AWS Lambda notification
+ * configuration.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CloudFunctionConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API CloudFunctionConfiguration
+ {
+ public:
+ CloudFunctionConfiguration();
+ CloudFunctionConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CloudFunctionConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const Aws::String& GetId() const{ return m_id; }
+
+
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+
+ inline CloudFunctionConfiguration& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+
+ inline CloudFunctionConfiguration& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+
+ inline CloudFunctionConfiguration& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>Bucket events for which to send notifications.</p>
+ */
+ inline const Aws::Vector<Event>& GetEvents() const{ return m_events; }
+
+ /**
+ * <p>Bucket events for which to send notifications.</p>
+ */
+ inline bool EventsHasBeenSet() const { return m_eventsHasBeenSet; }
+
+ /**
+ * <p>Bucket events for which to send notifications.</p>
+ */
+ inline void SetEvents(const Aws::Vector<Event>& value) { m_eventsHasBeenSet = true; m_events = value; }
+
+ /**
+ * <p>Bucket events for which to send notifications.</p>
+ */
+ inline void SetEvents(Aws::Vector<Event>&& value) { m_eventsHasBeenSet = true; m_events = std::move(value); }
+
+ /**
+ * <p>Bucket events for which to send notifications.</p>
+ */
+ inline CloudFunctionConfiguration& WithEvents(const Aws::Vector<Event>& value) { SetEvents(value); return *this;}
+
+ /**
+ * <p>Bucket events for which to send notifications.</p>
+ */
+ inline CloudFunctionConfiguration& WithEvents(Aws::Vector<Event>&& value) { SetEvents(std::move(value)); return *this;}
+
+ /**
+ * <p>Bucket events for which to send notifications.</p>
+ */
+ inline CloudFunctionConfiguration& AddEvents(const Event& value) { m_eventsHasBeenSet = true; m_events.push_back(value); return *this; }
+
+ /**
+ * <p>Bucket events for which to send notifications.</p>
+ */
+ inline CloudFunctionConfiguration& AddEvents(Event&& value) { m_eventsHasBeenSet = true; m_events.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Lambda cloud function ARN that Amazon S3 can invoke when it detects events of
+ * the specified type.</p>
+ */
+ inline const Aws::String& GetCloudFunction() const{ return m_cloudFunction; }
+
+ /**
+ * <p>Lambda cloud function ARN that Amazon S3 can invoke when it detects events of
+ * the specified type.</p>
+ */
+ inline bool CloudFunctionHasBeenSet() const { return m_cloudFunctionHasBeenSet; }
+
+ /**
+ * <p>Lambda cloud function ARN that Amazon S3 can invoke when it detects events of
+ * the specified type.</p>
+ */
+ inline void SetCloudFunction(const Aws::String& value) { m_cloudFunctionHasBeenSet = true; m_cloudFunction = value; }
+
+ /**
+ * <p>Lambda cloud function ARN that Amazon S3 can invoke when it detects events of
+ * the specified type.</p>
+ */
+ inline void SetCloudFunction(Aws::String&& value) { m_cloudFunctionHasBeenSet = true; m_cloudFunction = std::move(value); }
+
+ /**
+ * <p>Lambda cloud function ARN that Amazon S3 can invoke when it detects events of
+ * the specified type.</p>
+ */
+ inline void SetCloudFunction(const char* value) { m_cloudFunctionHasBeenSet = true; m_cloudFunction.assign(value); }
+
+ /**
+ * <p>Lambda cloud function ARN that Amazon S3 can invoke when it detects events of
+ * the specified type.</p>
+ */
+ inline CloudFunctionConfiguration& WithCloudFunction(const Aws::String& value) { SetCloudFunction(value); return *this;}
+
+ /**
+ * <p>Lambda cloud function ARN that Amazon S3 can invoke when it detects events of
+ * the specified type.</p>
+ */
+ inline CloudFunctionConfiguration& WithCloudFunction(Aws::String&& value) { SetCloudFunction(std::move(value)); return *this;}
+
+ /**
+ * <p>Lambda cloud function ARN that Amazon S3 can invoke when it detects events of
+ * the specified type.</p>
+ */
+ inline CloudFunctionConfiguration& WithCloudFunction(const char* value) { SetCloudFunction(value); return *this;}
+
+
+ /**
+ * <p>The role supporting the invocation of the Lambda function</p>
+ */
+ inline const Aws::String& GetInvocationRole() const{ return m_invocationRole; }
+
+ /**
+ * <p>The role supporting the invocation of the Lambda function</p>
+ */
+ inline bool InvocationRoleHasBeenSet() const { return m_invocationRoleHasBeenSet; }
+
+ /**
+ * <p>The role supporting the invocation of the Lambda function</p>
+ */
+ inline void SetInvocationRole(const Aws::String& value) { m_invocationRoleHasBeenSet = true; m_invocationRole = value; }
+
+ /**
+ * <p>The role supporting the invocation of the Lambda function</p>
+ */
+ inline void SetInvocationRole(Aws::String&& value) { m_invocationRoleHasBeenSet = true; m_invocationRole = std::move(value); }
+
+ /**
+ * <p>The role supporting the invocation of the Lambda function</p>
+ */
+ inline void SetInvocationRole(const char* value) { m_invocationRoleHasBeenSet = true; m_invocationRole.assign(value); }
+
+ /**
+ * <p>The role supporting the invocation of the Lambda function</p>
+ */
+ inline CloudFunctionConfiguration& WithInvocationRole(const Aws::String& value) { SetInvocationRole(value); return *this;}
+
+ /**
+ * <p>The role supporting the invocation of the Lambda function</p>
+ */
+ inline CloudFunctionConfiguration& WithInvocationRole(Aws::String&& value) { SetInvocationRole(std::move(value)); return *this;}
+
+ /**
+ * <p>The role supporting the invocation of the Lambda function</p>
+ */
+ inline CloudFunctionConfiguration& WithInvocationRole(const char* value) { SetInvocationRole(value); return *this;}
+
+ private:
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::Vector<Event> m_events;
+ bool m_eventsHasBeenSet;
+
+ Aws::String m_cloudFunction;
+ bool m_cloudFunctionHasBeenSet;
+
+ Aws::String m_invocationRole;
+ bool m_invocationRoleHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CommonPrefix.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CommonPrefix.h
new file mode 100644
index 00000000000..42fec002982
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CommonPrefix.h
@@ -0,0 +1,92 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for all (if there are any) keys between Prefix and the next
+ * occurrence of the string specified by a delimiter. CommonPrefixes lists keys
+ * that act like subdirectories in the directory specified by Prefix. For example,
+ * if the prefix is notes/ and the delimiter is a slash (/) as in
+ * notes/summer/july, the common prefix is notes/summer/. </p><p><h3>See Also:</h3>
+ * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CommonPrefix">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API CommonPrefix
+ {
+ public:
+ CommonPrefix();
+ CommonPrefix(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CommonPrefix& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Container for the specified common prefix.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Container for the specified common prefix.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>Container for the specified common prefix.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>Container for the specified common prefix.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>Container for the specified common prefix.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>Container for the specified common prefix.</p>
+ */
+ inline CommonPrefix& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Container for the specified common prefix.</p>
+ */
+ inline CommonPrefix& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for the specified common prefix.</p>
+ */
+ inline CommonPrefix& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadRequest.h
new file mode 100644
index 00000000000..00402979799
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadRequest.h
@@ -0,0 +1,341 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/CompletedMultipartUpload.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API CompleteMultipartUploadRequest : public S3Request
+ {
+ public:
+ CompleteMultipartUploadRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "CompleteMultipartUpload"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>Name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>Name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>Name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>Name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>Name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>Name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>Name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>Name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The container for the multipart upload request information.</p>
+ */
+ inline const CompletedMultipartUpload& GetMultipartUpload() const{ return m_multipartUpload; }
+
+ /**
+ * <p>The container for the multipart upload request information.</p>
+ */
+ inline bool MultipartUploadHasBeenSet() const { return m_multipartUploadHasBeenSet; }
+
+ /**
+ * <p>The container for the multipart upload request information.</p>
+ */
+ inline void SetMultipartUpload(const CompletedMultipartUpload& value) { m_multipartUploadHasBeenSet = true; m_multipartUpload = value; }
+
+ /**
+ * <p>The container for the multipart upload request information.</p>
+ */
+ inline void SetMultipartUpload(CompletedMultipartUpload&& value) { m_multipartUploadHasBeenSet = true; m_multipartUpload = std::move(value); }
+
+ /**
+ * <p>The container for the multipart upload request information.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithMultipartUpload(const CompletedMultipartUpload& value) { SetMultipartUpload(value); return *this;}
+
+ /**
+ * <p>The container for the multipart upload request information.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithMultipartUpload(CompletedMultipartUpload&& value) { SetMultipartUpload(std::move(value)); return *this;}
+
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline const Aws::String& GetUploadId() const{ return m_uploadId; }
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline bool UploadIdHasBeenSet() const { return m_uploadIdHasBeenSet; }
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline void SetUploadId(const Aws::String& value) { m_uploadIdHasBeenSet = true; m_uploadId = value; }
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline void SetUploadId(Aws::String&& value) { m_uploadIdHasBeenSet = true; m_uploadId = std::move(value); }
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline void SetUploadId(const char* value) { m_uploadIdHasBeenSet = true; m_uploadId.assign(value); }
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithUploadId(const Aws::String& value) { SetUploadId(value); return *this;}
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithUploadId(Aws::String&& value) { SetUploadId(std::move(value)); return *this;}
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithUploadId(const char* value) { SetUploadId(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline CompleteMultipartUploadRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline CompleteMultipartUploadRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline CompleteMultipartUploadRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline CompleteMultipartUploadRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline CompleteMultipartUploadRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline CompleteMultipartUploadRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline CompleteMultipartUploadRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline CompleteMultipartUploadRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline CompleteMultipartUploadRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline CompleteMultipartUploadRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline CompleteMultipartUploadRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline CompleteMultipartUploadRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ CompletedMultipartUpload m_multipartUpload;
+ bool m_multipartUploadHasBeenSet;
+
+ Aws::String m_uploadId;
+ bool m_uploadIdHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadResult.h
new file mode 100644
index 00000000000..ed995d2ea63
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadResult.h
@@ -0,0 +1,578 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API CompleteMultipartUploadResult
+ {
+ public:
+ CompleteMultipartUploadResult();
+ CompleteMultipartUploadResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ CompleteMultipartUploadResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The URI that identifies the newly created object.</p>
+ */
+ inline const Aws::String& GetLocation() const{ return m_location; }
+
+ /**
+ * <p>The URI that identifies the newly created object.</p>
+ */
+ inline void SetLocation(const Aws::String& value) { m_location = value; }
+
+ /**
+ * <p>The URI that identifies the newly created object.</p>
+ */
+ inline void SetLocation(Aws::String&& value) { m_location = std::move(value); }
+
+ /**
+ * <p>The URI that identifies the newly created object.</p>
+ */
+ inline void SetLocation(const char* value) { m_location.assign(value); }
+
+ /**
+ * <p>The URI that identifies the newly created object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithLocation(const Aws::String& value) { SetLocation(value); return *this;}
+
+ /**
+ * <p>The URI that identifies the newly created object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithLocation(Aws::String&& value) { SetLocation(std::move(value)); return *this;}
+
+ /**
+ * <p>The URI that identifies the newly created object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithLocation(const char* value) { SetLocation(value); return *this;}
+
+
+ /**
+ * <p>The name of the bucket that contains the newly created object.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket that contains the newly created object.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket that contains the newly created object.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket that contains the newly created object.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket that contains the newly created object.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CompleteMultipartUploadResult& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket that contains the newly created object.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CompleteMultipartUploadResult& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket that contains the newly created object.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CompleteMultipartUploadResult& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The object key of the newly created object.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The object key of the newly created object.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_key = value; }
+
+ /**
+ * <p>The object key of the newly created object.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_key = std::move(value); }
+
+ /**
+ * <p>The object key of the newly created object.</p>
+ */
+ inline void SetKey(const char* value) { m_key.assign(value); }
+
+ /**
+ * <p>The object key of the newly created object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The object key of the newly created object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The object key of the newly created object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>If the object expiration is configured, this will contain the expiration date
+ * (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.</p>
+ */
+ inline const Aws::String& GetExpiration() const{ return m_expiration; }
+
+ /**
+ * <p>If the object expiration is configured, this will contain the expiration date
+ * (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.</p>
+ */
+ inline void SetExpiration(const Aws::String& value) { m_expiration = value; }
+
+ /**
+ * <p>If the object expiration is configured, this will contain the expiration date
+ * (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.</p>
+ */
+ inline void SetExpiration(Aws::String&& value) { m_expiration = std::move(value); }
+
+ /**
+ * <p>If the object expiration is configured, this will contain the expiration date
+ * (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.</p>
+ */
+ inline void SetExpiration(const char* value) { m_expiration.assign(value); }
+
+ /**
+ * <p>If the object expiration is configured, this will contain the expiration date
+ * (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.</p>
+ */
+ inline CompleteMultipartUploadResult& WithExpiration(const Aws::String& value) { SetExpiration(value); return *this;}
+
+ /**
+ * <p>If the object expiration is configured, this will contain the expiration date
+ * (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.</p>
+ */
+ inline CompleteMultipartUploadResult& WithExpiration(Aws::String&& value) { SetExpiration(std::move(value)); return *this;}
+
+ /**
+ * <p>If the object expiration is configured, this will contain the expiration date
+ * (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.</p>
+ */
+ inline CompleteMultipartUploadResult& WithExpiration(const char* value) { SetExpiration(value); return *this;}
+
+
+ /**
+ * <p>Entity tag that identifies the newly created object's data. Objects with
+ * different object data will have different entity tags. The entity tag is an
+ * opaque string. The entity tag may or may not be an MD5 digest of the object
+ * data. If the entity tag is not an MD5 digest of the object data, it will contain
+ * one or more nonhexadecimal characters and/or will consist of less than 32 or
+ * more than 32 hexadecimal digits.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>Entity tag that identifies the newly created object's data. Objects with
+ * different object data will have different entity tags. The entity tag is an
+ * opaque string. The entity tag may or may not be an MD5 digest of the object
+ * data. If the entity tag is not an MD5 digest of the object data, it will contain
+ * one or more nonhexadecimal characters and/or will consist of less than 32 or
+ * more than 32 hexadecimal digits.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTag = value; }
+
+ /**
+ * <p>Entity tag that identifies the newly created object's data. Objects with
+ * different object data will have different entity tags. The entity tag is an
+ * opaque string. The entity tag may or may not be an MD5 digest of the object
+ * data. If the entity tag is not an MD5 digest of the object data, it will contain
+ * one or more nonhexadecimal characters and/or will consist of less than 32 or
+ * more than 32 hexadecimal digits.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTag = std::move(value); }
+
+ /**
+ * <p>Entity tag that identifies the newly created object's data. Objects with
+ * different object data will have different entity tags. The entity tag is an
+ * opaque string. The entity tag may or may not be an MD5 digest of the object
+ * data. If the entity tag is not an MD5 digest of the object data, it will contain
+ * one or more nonhexadecimal characters and/or will consist of less than 32 or
+ * more than 32 hexadecimal digits.</p>
+ */
+ inline void SetETag(const char* value) { m_eTag.assign(value); }
+
+ /**
+ * <p>Entity tag that identifies the newly created object's data. Objects with
+ * different object data will have different entity tags. The entity tag is an
+ * opaque string. The entity tag may or may not be an MD5 digest of the object
+ * data. If the entity tag is not an MD5 digest of the object data, it will contain
+ * one or more nonhexadecimal characters and/or will consist of less than 32 or
+ * more than 32 hexadecimal digits.</p>
+ */
+ inline CompleteMultipartUploadResult& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>Entity tag that identifies the newly created object's data. Objects with
+ * different object data will have different entity tags. The entity tag is an
+ * opaque string. The entity tag may or may not be an MD5 digest of the object
+ * data. If the entity tag is not an MD5 digest of the object data, it will contain
+ * one or more nonhexadecimal characters and/or will consist of less than 32 or
+ * more than 32 hexadecimal digits.</p>
+ */
+ inline CompleteMultipartUploadResult& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>Entity tag that identifies the newly created object's data. Objects with
+ * different object data will have different entity tags. The entity tag is an
+ * opaque string. The entity tag may or may not be an MD5 digest of the object
+ * data. If the entity tag is not an MD5 digest of the object data, it will contain
+ * one or more nonhexadecimal characters and/or will consist of less than 32 or
+ * more than 32 hexadecimal digits.</p>
+ */
+ inline CompleteMultipartUploadResult& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>If you specified server-side encryption either with an Amazon S3-managed
+ * encryption key or an AWS KMS customer master key (CMK) in your initiate
+ * multipart upload request, the response includes this header. It confirms the
+ * encryption algorithm that Amazon S3 used to encrypt the object.</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>If you specified server-side encryption either with an Amazon S3-managed
+ * encryption key or an AWS KMS customer master key (CMK) in your initiate
+ * multipart upload request, the response includes this header. It confirms the
+ * encryption algorithm that Amazon S3 used to encrypt the object.</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; }
+
+ /**
+ * <p>If you specified server-side encryption either with an Amazon S3-managed
+ * encryption key or an AWS KMS customer master key (CMK) in your initiate
+ * multipart upload request, the response includes this header. It confirms the
+ * encryption algorithm that Amazon S3 used to encrypt the object.</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>If you specified server-side encryption either with an Amazon S3-managed
+ * encryption key or an AWS KMS customer master key (CMK) in your initiate
+ * multipart upload request, the response includes this header. It confirms the
+ * encryption algorithm that Amazon S3 used to encrypt the object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>If you specified server-side encryption either with an Amazon S3-managed
+ * encryption key or an AWS KMS customer master key (CMK) in your initiate
+ * multipart upload request, the response includes this header. It confirms the
+ * encryption algorithm that Amazon S3 used to encrypt the object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Version ID of the newly created object, in case the bucket has versioning
+ * turned on.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>Version ID of the newly created object, in case the bucket has versioning
+ * turned on.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionId = value; }
+
+ /**
+ * <p>Version ID of the newly created object, in case the bucket has versioning
+ * turned on.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionId = std::move(value); }
+
+ /**
+ * <p>Version ID of the newly created object, in case the bucket has versioning
+ * turned on.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionId.assign(value); }
+
+ /**
+ * <p>Version ID of the newly created object, in case the bucket has versioning
+ * turned on.</p>
+ */
+ inline CompleteMultipartUploadResult& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>Version ID of the newly created object, in case the bucket has versioning
+ * turned on.</p>
+ */
+ inline CompleteMultipartUploadResult& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>Version ID of the newly created object, in case the bucket has versioning
+ * turned on.</p>
+ */
+ inline CompleteMultipartUploadResult& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline CompleteMultipartUploadResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline CompleteMultipartUploadResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline CompleteMultipartUploadResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline CompleteMultipartUploadResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_location;
+
+ Aws::String m_bucket;
+
+ Aws::String m_key;
+
+ Aws::String m_expiration;
+
+ Aws::String m_eTag;
+
+ ServerSideEncryption m_serverSideEncryption;
+
+ Aws::String m_versionId;
+
+ Aws::String m_sSEKMSKeyId;
+
+ bool m_bucketKeyEnabled;
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompletedMultipartUpload.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompletedMultipartUpload.h
new file mode 100644
index 00000000000..0970651366d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompletedMultipartUpload.h
@@ -0,0 +1,90 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/CompletedPart.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The container for the completed multipart upload details.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompletedMultipartUpload">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API CompletedMultipartUpload
+ {
+ public:
+ CompletedMultipartUpload();
+ CompletedMultipartUpload(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CompletedMultipartUpload& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Array of CompletedPart data types.</p>
+ */
+ inline const Aws::Vector<CompletedPart>& GetParts() const{ return m_parts; }
+
+ /**
+ * <p>Array of CompletedPart data types.</p>
+ */
+ inline bool PartsHasBeenSet() const { return m_partsHasBeenSet; }
+
+ /**
+ * <p>Array of CompletedPart data types.</p>
+ */
+ inline void SetParts(const Aws::Vector<CompletedPart>& value) { m_partsHasBeenSet = true; m_parts = value; }
+
+ /**
+ * <p>Array of CompletedPart data types.</p>
+ */
+ inline void SetParts(Aws::Vector<CompletedPart>&& value) { m_partsHasBeenSet = true; m_parts = std::move(value); }
+
+ /**
+ * <p>Array of CompletedPart data types.</p>
+ */
+ inline CompletedMultipartUpload& WithParts(const Aws::Vector<CompletedPart>& value) { SetParts(value); return *this;}
+
+ /**
+ * <p>Array of CompletedPart data types.</p>
+ */
+ inline CompletedMultipartUpload& WithParts(Aws::Vector<CompletedPart>&& value) { SetParts(std::move(value)); return *this;}
+
+ /**
+ * <p>Array of CompletedPart data types.</p>
+ */
+ inline CompletedMultipartUpload& AddParts(const CompletedPart& value) { m_partsHasBeenSet = true; m_parts.push_back(value); return *this; }
+
+ /**
+ * <p>Array of CompletedPart data types.</p>
+ */
+ inline CompletedMultipartUpload& AddParts(CompletedPart&& value) { m_partsHasBeenSet = true; m_parts.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<CompletedPart> m_parts;
+ bool m_partsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompletedPart.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompletedPart.h
new file mode 100644
index 00000000000..5e1507d7624
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompletedPart.h
@@ -0,0 +1,116 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Details of the parts that were uploaded.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompletedPart">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API CompletedPart
+ {
+ public:
+ CompletedPart();
+ CompletedPart(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CompletedPart& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline bool ETagHasBeenSet() const { return m_eTagHasBeenSet; }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTagHasBeenSet = true; m_eTag = value; }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTagHasBeenSet = true; m_eTag = std::move(value); }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline void SetETag(const char* value) { m_eTagHasBeenSet = true; m_eTag.assign(value); }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline CompletedPart& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline CompletedPart& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline CompletedPart& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>Part number that identifies the part. This is a positive integer between 1
+ * and 10,000.</p>
+ */
+ inline int GetPartNumber() const{ return m_partNumber; }
+
+ /**
+ * <p>Part number that identifies the part. This is a positive integer between 1
+ * and 10,000.</p>
+ */
+ inline bool PartNumberHasBeenSet() const { return m_partNumberHasBeenSet; }
+
+ /**
+ * <p>Part number that identifies the part. This is a positive integer between 1
+ * and 10,000.</p>
+ */
+ inline void SetPartNumber(int value) { m_partNumberHasBeenSet = true; m_partNumber = value; }
+
+ /**
+ * <p>Part number that identifies the part. This is a positive integer between 1
+ * and 10,000.</p>
+ */
+ inline CompletedPart& WithPartNumber(int value) { SetPartNumber(value); return *this;}
+
+ private:
+
+ Aws::String m_eTag;
+ bool m_eTagHasBeenSet;
+
+ int m_partNumber;
+ bool m_partNumberHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompressionType.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompressionType.h
new file mode 100644
index 00000000000..742edcae75d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CompressionType.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class CompressionType
+ {
+ NOT_SET,
+ NONE,
+ GZIP,
+ BZIP2
+ };
+
+namespace CompressionTypeMapper
+{
+AWS_S3_API CompressionType GetCompressionTypeForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForCompressionType(CompressionType value);
+} // namespace CompressionTypeMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Condition.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Condition.h
new file mode 100644
index 00000000000..2bfaeccf840
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Condition.h
@@ -0,0 +1,224 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for describing a condition that must be met for the specified
+ * redirect to apply. For example, 1. If request is for pages in the
+ * <code>/docs</code> folder, redirect to the <code>/documents</code> folder. 2. If
+ * request results in HTTP error 4xx, redirect request to another host where you
+ * might process the error.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Condition">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Condition
+ {
+ public:
+ Condition();
+ Condition(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Condition& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The HTTP error code when the redirect is applied. In the event of an error,
+ * if the error code equals this value, then the specified redirect is applied.
+ * Required when parent element <code>Condition</code> is specified and sibling
+ * <code>KeyPrefixEquals</code> is not specified. If both are specified, then both
+ * must be true for the redirect to be applied.</p>
+ */
+ inline const Aws::String& GetHttpErrorCodeReturnedEquals() const{ return m_httpErrorCodeReturnedEquals; }
+
+ /**
+ * <p>The HTTP error code when the redirect is applied. In the event of an error,
+ * if the error code equals this value, then the specified redirect is applied.
+ * Required when parent element <code>Condition</code> is specified and sibling
+ * <code>KeyPrefixEquals</code> is not specified. If both are specified, then both
+ * must be true for the redirect to be applied.</p>
+ */
+ inline bool HttpErrorCodeReturnedEqualsHasBeenSet() const { return m_httpErrorCodeReturnedEqualsHasBeenSet; }
+
+ /**
+ * <p>The HTTP error code when the redirect is applied. In the event of an error,
+ * if the error code equals this value, then the specified redirect is applied.
+ * Required when parent element <code>Condition</code> is specified and sibling
+ * <code>KeyPrefixEquals</code> is not specified. If both are specified, then both
+ * must be true for the redirect to be applied.</p>
+ */
+ inline void SetHttpErrorCodeReturnedEquals(const Aws::String& value) { m_httpErrorCodeReturnedEqualsHasBeenSet = true; m_httpErrorCodeReturnedEquals = value; }
+
+ /**
+ * <p>The HTTP error code when the redirect is applied. In the event of an error,
+ * if the error code equals this value, then the specified redirect is applied.
+ * Required when parent element <code>Condition</code> is specified and sibling
+ * <code>KeyPrefixEquals</code> is not specified. If both are specified, then both
+ * must be true for the redirect to be applied.</p>
+ */
+ inline void SetHttpErrorCodeReturnedEquals(Aws::String&& value) { m_httpErrorCodeReturnedEqualsHasBeenSet = true; m_httpErrorCodeReturnedEquals = std::move(value); }
+
+ /**
+ * <p>The HTTP error code when the redirect is applied. In the event of an error,
+ * if the error code equals this value, then the specified redirect is applied.
+ * Required when parent element <code>Condition</code> is specified and sibling
+ * <code>KeyPrefixEquals</code> is not specified. If both are specified, then both
+ * must be true for the redirect to be applied.</p>
+ */
+ inline void SetHttpErrorCodeReturnedEquals(const char* value) { m_httpErrorCodeReturnedEqualsHasBeenSet = true; m_httpErrorCodeReturnedEquals.assign(value); }
+
+ /**
+ * <p>The HTTP error code when the redirect is applied. In the event of an error,
+ * if the error code equals this value, then the specified redirect is applied.
+ * Required when parent element <code>Condition</code> is specified and sibling
+ * <code>KeyPrefixEquals</code> is not specified. If both are specified, then both
+ * must be true for the redirect to be applied.</p>
+ */
+ inline Condition& WithHttpErrorCodeReturnedEquals(const Aws::String& value) { SetHttpErrorCodeReturnedEquals(value); return *this;}
+
+ /**
+ * <p>The HTTP error code when the redirect is applied. In the event of an error,
+ * if the error code equals this value, then the specified redirect is applied.
+ * Required when parent element <code>Condition</code> is specified and sibling
+ * <code>KeyPrefixEquals</code> is not specified. If both are specified, then both
+ * must be true for the redirect to be applied.</p>
+ */
+ inline Condition& WithHttpErrorCodeReturnedEquals(Aws::String&& value) { SetHttpErrorCodeReturnedEquals(std::move(value)); return *this;}
+
+ /**
+ * <p>The HTTP error code when the redirect is applied. In the event of an error,
+ * if the error code equals this value, then the specified redirect is applied.
+ * Required when parent element <code>Condition</code> is specified and sibling
+ * <code>KeyPrefixEquals</code> is not specified. If both are specified, then both
+ * must be true for the redirect to be applied.</p>
+ */
+ inline Condition& WithHttpErrorCodeReturnedEquals(const char* value) { SetHttpErrorCodeReturnedEquals(value); return *this;}
+
+
+ /**
+ * <p>The object key name prefix when the redirect is applied. For example, to
+ * redirect requests for <code>ExamplePage.html</code>, the key prefix will be
+ * <code>ExamplePage.html</code>. To redirect request for all pages with the prefix
+ * <code>docs/</code>, the key prefix will be <code>/docs</code>, which identifies
+ * all objects in the <code>docs/</code> folder. Required when the parent element
+ * <code>Condition</code> is specified and sibling
+ * <code>HttpErrorCodeReturnedEquals</code> is not specified. If both conditions
+ * are specified, both must be true for the redirect to be applied.</p>
+ */
+ inline const Aws::String& GetKeyPrefixEquals() const{ return m_keyPrefixEquals; }
+
+ /**
+ * <p>The object key name prefix when the redirect is applied. For example, to
+ * redirect requests for <code>ExamplePage.html</code>, the key prefix will be
+ * <code>ExamplePage.html</code>. To redirect request for all pages with the prefix
+ * <code>docs/</code>, the key prefix will be <code>/docs</code>, which identifies
+ * all objects in the <code>docs/</code> folder. Required when the parent element
+ * <code>Condition</code> is specified and sibling
+ * <code>HttpErrorCodeReturnedEquals</code> is not specified. If both conditions
+ * are specified, both must be true for the redirect to be applied.</p>
+ */
+ inline bool KeyPrefixEqualsHasBeenSet() const { return m_keyPrefixEqualsHasBeenSet; }
+
+ /**
+ * <p>The object key name prefix when the redirect is applied. For example, to
+ * redirect requests for <code>ExamplePage.html</code>, the key prefix will be
+ * <code>ExamplePage.html</code>. To redirect request for all pages with the prefix
+ * <code>docs/</code>, the key prefix will be <code>/docs</code>, which identifies
+ * all objects in the <code>docs/</code> folder. Required when the parent element
+ * <code>Condition</code> is specified and sibling
+ * <code>HttpErrorCodeReturnedEquals</code> is not specified. If both conditions
+ * are specified, both must be true for the redirect to be applied.</p>
+ */
+ inline void SetKeyPrefixEquals(const Aws::String& value) { m_keyPrefixEqualsHasBeenSet = true; m_keyPrefixEquals = value; }
+
+ /**
+ * <p>The object key name prefix when the redirect is applied. For example, to
+ * redirect requests for <code>ExamplePage.html</code>, the key prefix will be
+ * <code>ExamplePage.html</code>. To redirect request for all pages with the prefix
+ * <code>docs/</code>, the key prefix will be <code>/docs</code>, which identifies
+ * all objects in the <code>docs/</code> folder. Required when the parent element
+ * <code>Condition</code> is specified and sibling
+ * <code>HttpErrorCodeReturnedEquals</code> is not specified. If both conditions
+ * are specified, both must be true for the redirect to be applied.</p>
+ */
+ inline void SetKeyPrefixEquals(Aws::String&& value) { m_keyPrefixEqualsHasBeenSet = true; m_keyPrefixEquals = std::move(value); }
+
+ /**
+ * <p>The object key name prefix when the redirect is applied. For example, to
+ * redirect requests for <code>ExamplePage.html</code>, the key prefix will be
+ * <code>ExamplePage.html</code>. To redirect request for all pages with the prefix
+ * <code>docs/</code>, the key prefix will be <code>/docs</code>, which identifies
+ * all objects in the <code>docs/</code> folder. Required when the parent element
+ * <code>Condition</code> is specified and sibling
+ * <code>HttpErrorCodeReturnedEquals</code> is not specified. If both conditions
+ * are specified, both must be true for the redirect to be applied.</p>
+ */
+ inline void SetKeyPrefixEquals(const char* value) { m_keyPrefixEqualsHasBeenSet = true; m_keyPrefixEquals.assign(value); }
+
+ /**
+ * <p>The object key name prefix when the redirect is applied. For example, to
+ * redirect requests for <code>ExamplePage.html</code>, the key prefix will be
+ * <code>ExamplePage.html</code>. To redirect request for all pages with the prefix
+ * <code>docs/</code>, the key prefix will be <code>/docs</code>, which identifies
+ * all objects in the <code>docs/</code> folder. Required when the parent element
+ * <code>Condition</code> is specified and sibling
+ * <code>HttpErrorCodeReturnedEquals</code> is not specified. If both conditions
+ * are specified, both must be true for the redirect to be applied.</p>
+ */
+ inline Condition& WithKeyPrefixEquals(const Aws::String& value) { SetKeyPrefixEquals(value); return *this;}
+
+ /**
+ * <p>The object key name prefix when the redirect is applied. For example, to
+ * redirect requests for <code>ExamplePage.html</code>, the key prefix will be
+ * <code>ExamplePage.html</code>. To redirect request for all pages with the prefix
+ * <code>docs/</code>, the key prefix will be <code>/docs</code>, which identifies
+ * all objects in the <code>docs/</code> folder. Required when the parent element
+ * <code>Condition</code> is specified and sibling
+ * <code>HttpErrorCodeReturnedEquals</code> is not specified. If both conditions
+ * are specified, both must be true for the redirect to be applied.</p>
+ */
+ inline Condition& WithKeyPrefixEquals(Aws::String&& value) { SetKeyPrefixEquals(std::move(value)); return *this;}
+
+ /**
+ * <p>The object key name prefix when the redirect is applied. For example, to
+ * redirect requests for <code>ExamplePage.html</code>, the key prefix will be
+ * <code>ExamplePage.html</code>. To redirect request for all pages with the prefix
+ * <code>docs/</code>, the key prefix will be <code>/docs</code>, which identifies
+ * all objects in the <code>docs/</code> folder. Required when the parent element
+ * <code>Condition</code> is specified and sibling
+ * <code>HttpErrorCodeReturnedEquals</code> is not specified. If both conditions
+ * are specified, both must be true for the redirect to be applied.</p>
+ */
+ inline Condition& WithKeyPrefixEquals(const char* value) { SetKeyPrefixEquals(value); return *this;}
+
+ private:
+
+ Aws::String m_httpErrorCodeReturnedEquals;
+ bool m_httpErrorCodeReturnedEqualsHasBeenSet;
+
+ Aws::String m_keyPrefixEquals;
+ bool m_keyPrefixEqualsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectRequest.h
new file mode 100644
index 00000000000..d704b0708bb
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectRequest.h
@@ -0,0 +1,2487 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/s3/model/ObjectCannedACL.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <aws/s3/model/MetadataDirective.h>
+#include <aws/s3/model/TaggingDirective.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/s3/model/ObjectLockMode.h>
+#include <aws/s3/model/ObjectLockLegalHoldStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API CopyObjectRequest : public S3Request
+ {
+ public:
+ CopyObjectRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "CopyObject"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline const ObjectCannedACL& GetACL() const{ return m_aCL; }
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline bool ACLHasBeenSet() const { return m_aCLHasBeenSet; }
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetACL(const ObjectCannedACL& value) { m_aCLHasBeenSet = true; m_aCL = value; }
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetACL(ObjectCannedACL&& value) { m_aCLHasBeenSet = true; m_aCL = std::move(value); }
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithACL(const ObjectCannedACL& value) { SetACL(value); return *this;}
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithACL(ObjectCannedACL&& value) { SetACL(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The name of the destination bucket.</p> <p>When using this API with an access
+ * point, you must direct requests to the access point hostname. The access point
+ * hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the destination bucket.</p> <p>When using this API with an access
+ * point, you must direct requests to the access point hostname. The access point
+ * hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the destination bucket.</p> <p>When using this API with an access
+ * point, you must direct requests to the access point hostname. The access point
+ * hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the destination bucket.</p> <p>When using this API with an access
+ * point, you must direct requests to the access point hostname. The access point
+ * hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the destination bucket.</p> <p>When using this API with an access
+ * point, you must direct requests to the access point hostname. The access point
+ * hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the destination bucket.</p> <p>When using this API with an access
+ * point, you must direct requests to the access point hostname. The access point
+ * hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CopyObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the destination bucket.</p> <p>When using this API with an access
+ * point, you must direct requests to the access point hostname. The access point
+ * hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CopyObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the destination bucket.</p> <p>When using this API with an access
+ * point, you must direct requests to the access point hostname. The access point
+ * hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CopyObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline const Aws::String& GetCacheControl() const{ return m_cacheControl; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline bool CacheControlHasBeenSet() const { return m_cacheControlHasBeenSet; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(const Aws::String& value) { m_cacheControlHasBeenSet = true; m_cacheControl = value; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(Aws::String&& value) { m_cacheControlHasBeenSet = true; m_cacheControl = std::move(value); }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(const char* value) { m_cacheControlHasBeenSet = true; m_cacheControl.assign(value); }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline CopyObjectRequest& WithCacheControl(const Aws::String& value) { SetCacheControl(value); return *this;}
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline CopyObjectRequest& WithCacheControl(Aws::String&& value) { SetCacheControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline CopyObjectRequest& WithCacheControl(const char* value) { SetCacheControl(value); return *this;}
+
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline const Aws::String& GetContentDisposition() const{ return m_contentDisposition; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline bool ContentDispositionHasBeenSet() const { return m_contentDispositionHasBeenSet; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(const Aws::String& value) { m_contentDispositionHasBeenSet = true; m_contentDisposition = value; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(Aws::String&& value) { m_contentDispositionHasBeenSet = true; m_contentDisposition = std::move(value); }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(const char* value) { m_contentDispositionHasBeenSet = true; m_contentDisposition.assign(value); }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline CopyObjectRequest& WithContentDisposition(const Aws::String& value) { SetContentDisposition(value); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline CopyObjectRequest& WithContentDisposition(Aws::String&& value) { SetContentDisposition(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline CopyObjectRequest& WithContentDisposition(const char* value) { SetContentDisposition(value); return *this;}
+
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline const Aws::String& GetContentEncoding() const{ return m_contentEncoding; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline bool ContentEncodingHasBeenSet() const { return m_contentEncodingHasBeenSet; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(const Aws::String& value) { m_contentEncodingHasBeenSet = true; m_contentEncoding = value; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(Aws::String&& value) { m_contentEncodingHasBeenSet = true; m_contentEncoding = std::move(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(const char* value) { m_contentEncodingHasBeenSet = true; m_contentEncoding.assign(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline CopyObjectRequest& WithContentEncoding(const Aws::String& value) { SetContentEncoding(value); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline CopyObjectRequest& WithContentEncoding(Aws::String&& value) { SetContentEncoding(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline CopyObjectRequest& WithContentEncoding(const char* value) { SetContentEncoding(value); return *this;}
+
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline const Aws::String& GetContentLanguage() const{ return m_contentLanguage; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline bool ContentLanguageHasBeenSet() const { return m_contentLanguageHasBeenSet; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const Aws::String& value) { m_contentLanguageHasBeenSet = true; m_contentLanguage = value; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(Aws::String&& value) { m_contentLanguageHasBeenSet = true; m_contentLanguage = std::move(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const char* value) { m_contentLanguageHasBeenSet = true; m_contentLanguage.assign(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline CopyObjectRequest& WithContentLanguage(const Aws::String& value) { SetContentLanguage(value); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline CopyObjectRequest& WithContentLanguage(Aws::String&& value) { SetContentLanguage(std::move(value)); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline CopyObjectRequest& WithContentLanguage(const char* value) { SetContentLanguage(value); return *this;}
+
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline const Aws::String& GetContentType() const{ return m_contentType; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline bool ContentTypeHasBeenSet() const { return m_contentTypeHasBeenSet; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(const Aws::String& value) { m_contentTypeHasBeenSet = true; m_contentType = value; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(Aws::String&& value) { m_contentTypeHasBeenSet = true; m_contentType = std::move(value); }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(const char* value) { m_contentTypeHasBeenSet = true; m_contentType.assign(value); }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline CopyObjectRequest& WithContentType(const Aws::String& value) { SetContentType(value); return *this;}
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline CopyObjectRequest& WithContentType(Aws::String&& value) { SetContentType(std::move(value)); return *this;}
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline CopyObjectRequest& WithContentType(const char* value) { SetContentType(value); return *this;}
+
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and the key of the source object,
+ * separated by a slash (/). For example, to copy the object
+ * <code>reports/january.pdf</code> from the bucket <code>awsexamplebucket</code>,
+ * use <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline const Aws::String& GetCopySource() const{ return m_copySource; }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and the key of the source object,
+ * separated by a slash (/). For example, to copy the object
+ * <code>reports/january.pdf</code> from the bucket <code>awsexamplebucket</code>,
+ * use <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline bool CopySourceHasBeenSet() const { return m_copySourceHasBeenSet; }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and the key of the source object,
+ * separated by a slash (/). For example, to copy the object
+ * <code>reports/january.pdf</code> from the bucket <code>awsexamplebucket</code>,
+ * use <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline void SetCopySource(const Aws::String& value) { m_copySourceHasBeenSet = true; m_copySource = value; }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and the key of the source object,
+ * separated by a slash (/). For example, to copy the object
+ * <code>reports/january.pdf</code> from the bucket <code>awsexamplebucket</code>,
+ * use <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline void SetCopySource(Aws::String&& value) { m_copySourceHasBeenSet = true; m_copySource = std::move(value); }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and the key of the source object,
+ * separated by a slash (/). For example, to copy the object
+ * <code>reports/january.pdf</code> from the bucket <code>awsexamplebucket</code>,
+ * use <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline void SetCopySource(const char* value) { m_copySourceHasBeenSet = true; m_copySource.assign(value); }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and the key of the source object,
+ * separated by a slash (/). For example, to copy the object
+ * <code>reports/january.pdf</code> from the bucket <code>awsexamplebucket</code>,
+ * use <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline CopyObjectRequest& WithCopySource(const Aws::String& value) { SetCopySource(value); return *this;}
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and the key of the source object,
+ * separated by a slash (/). For example, to copy the object
+ * <code>reports/january.pdf</code> from the bucket <code>awsexamplebucket</code>,
+ * use <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline CopyObjectRequest& WithCopySource(Aws::String&& value) { SetCopySource(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and the key of the source object,
+ * separated by a slash (/). For example, to copy the object
+ * <code>reports/january.pdf</code> from the bucket <code>awsexamplebucket</code>,
+ * use <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline CopyObjectRequest& WithCopySource(const char* value) { SetCopySource(value); return *this;}
+
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline const Aws::String& GetCopySourceIfMatch() const{ return m_copySourceIfMatch; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline bool CopySourceIfMatchHasBeenSet() const { return m_copySourceIfMatchHasBeenSet; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline void SetCopySourceIfMatch(const Aws::String& value) { m_copySourceIfMatchHasBeenSet = true; m_copySourceIfMatch = value; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline void SetCopySourceIfMatch(Aws::String&& value) { m_copySourceIfMatchHasBeenSet = true; m_copySourceIfMatch = std::move(value); }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline void SetCopySourceIfMatch(const char* value) { m_copySourceIfMatchHasBeenSet = true; m_copySourceIfMatch.assign(value); }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfMatch(const Aws::String& value) { SetCopySourceIfMatch(value); return *this;}
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfMatch(Aws::String&& value) { SetCopySourceIfMatch(std::move(value)); return *this;}
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfMatch(const char* value) { SetCopySourceIfMatch(value); return *this;}
+
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline const Aws::Utils::DateTime& GetCopySourceIfModifiedSince() const{ return m_copySourceIfModifiedSince; }
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline bool CopySourceIfModifiedSinceHasBeenSet() const { return m_copySourceIfModifiedSinceHasBeenSet; }
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline void SetCopySourceIfModifiedSince(const Aws::Utils::DateTime& value) { m_copySourceIfModifiedSinceHasBeenSet = true; m_copySourceIfModifiedSince = value; }
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline void SetCopySourceIfModifiedSince(Aws::Utils::DateTime&& value) { m_copySourceIfModifiedSinceHasBeenSet = true; m_copySourceIfModifiedSince = std::move(value); }
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfModifiedSince(const Aws::Utils::DateTime& value) { SetCopySourceIfModifiedSince(value); return *this;}
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfModifiedSince(Aws::Utils::DateTime&& value) { SetCopySourceIfModifiedSince(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline const Aws::String& GetCopySourceIfNoneMatch() const{ return m_copySourceIfNoneMatch; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline bool CopySourceIfNoneMatchHasBeenSet() const { return m_copySourceIfNoneMatchHasBeenSet; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline void SetCopySourceIfNoneMatch(const Aws::String& value) { m_copySourceIfNoneMatchHasBeenSet = true; m_copySourceIfNoneMatch = value; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline void SetCopySourceIfNoneMatch(Aws::String&& value) { m_copySourceIfNoneMatchHasBeenSet = true; m_copySourceIfNoneMatch = std::move(value); }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline void SetCopySourceIfNoneMatch(const char* value) { m_copySourceIfNoneMatchHasBeenSet = true; m_copySourceIfNoneMatch.assign(value); }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfNoneMatch(const Aws::String& value) { SetCopySourceIfNoneMatch(value); return *this;}
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfNoneMatch(Aws::String&& value) { SetCopySourceIfNoneMatch(std::move(value)); return *this;}
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfNoneMatch(const char* value) { SetCopySourceIfNoneMatch(value); return *this;}
+
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline const Aws::Utils::DateTime& GetCopySourceIfUnmodifiedSince() const{ return m_copySourceIfUnmodifiedSince; }
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline bool CopySourceIfUnmodifiedSinceHasBeenSet() const { return m_copySourceIfUnmodifiedSinceHasBeenSet; }
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline void SetCopySourceIfUnmodifiedSince(const Aws::Utils::DateTime& value) { m_copySourceIfUnmodifiedSinceHasBeenSet = true; m_copySourceIfUnmodifiedSince = value; }
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline void SetCopySourceIfUnmodifiedSince(Aws::Utils::DateTime&& value) { m_copySourceIfUnmodifiedSinceHasBeenSet = true; m_copySourceIfUnmodifiedSince = std::move(value); }
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfUnmodifiedSince(const Aws::Utils::DateTime& value) { SetCopySourceIfUnmodifiedSince(value); return *this;}
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceIfUnmodifiedSince(Aws::Utils::DateTime&& value) { SetCopySourceIfUnmodifiedSince(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline const Aws::Utils::DateTime& GetExpires() const{ return m_expires; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline bool ExpiresHasBeenSet() const { return m_expiresHasBeenSet; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline void SetExpires(const Aws::Utils::DateTime& value) { m_expiresHasBeenSet = true; m_expires = value; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline void SetExpires(Aws::Utils::DateTime&& value) { m_expiresHasBeenSet = true; m_expires = std::move(value); }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline CopyObjectRequest& WithExpires(const Aws::Utils::DateTime& value) { SetExpires(value); return *this;}
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline CopyObjectRequest& WithExpires(Aws::Utils::DateTime&& value) { SetExpires(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantFullControl() const{ return m_grantFullControl; }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantFullControlHasBeenSet() const { return m_grantFullControlHasBeenSet; }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(const Aws::String& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = value; }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(Aws::String&& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = std::move(value); }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(const char* value) { m_grantFullControlHasBeenSet = true; m_grantFullControl.assign(value); }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantFullControl(const Aws::String& value) { SetGrantFullControl(value); return *this;}
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantFullControl(Aws::String&& value) { SetGrantFullControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantFullControl(const char* value) { SetGrantFullControl(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantRead() const{ return m_grantRead; }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantReadHasBeenSet() const { return m_grantReadHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(const Aws::String& value) { m_grantReadHasBeenSet = true; m_grantRead = value; }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(Aws::String&& value) { m_grantReadHasBeenSet = true; m_grantRead = std::move(value); }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(const char* value) { m_grantReadHasBeenSet = true; m_grantRead.assign(value); }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantRead(const Aws::String& value) { SetGrantRead(value); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantRead(Aws::String&& value) { SetGrantRead(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantRead(const char* value) { SetGrantRead(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantReadACP() const{ return m_grantReadACP; }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantReadACPHasBeenSet() const { return m_grantReadACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(const Aws::String& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = value; }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(Aws::String&& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(const char* value) { m_grantReadACPHasBeenSet = true; m_grantReadACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantReadACP(const Aws::String& value) { SetGrantReadACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantReadACP(Aws::String&& value) { SetGrantReadACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantReadACP(const char* value) { SetGrantReadACP(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantWriteACP() const{ return m_grantWriteACP; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantWriteACPHasBeenSet() const { return m_grantWriteACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(const Aws::String& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = value; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(Aws::String&& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(const char* value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantWriteACP(const Aws::String& value) { SetGrantWriteACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantWriteACP(Aws::String&& value) { SetGrantWriteACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CopyObjectRequest& WithGrantWriteACP(const char* value) { SetGrantWriteACP(value); return *this;}
+
+
+ /**
+ * <p>The key of the destination object.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The key of the destination object.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The key of the destination object.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The key of the destination object.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The key of the destination object.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The key of the destination object.</p>
+ */
+ inline CopyObjectRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The key of the destination object.</p>
+ */
+ inline CopyObjectRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The key of the destination object.</p>
+ */
+ inline CopyObjectRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline const Aws::Map<Aws::String, Aws::String>& GetMetadata() const{ return m_metadata; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline bool MetadataHasBeenSet() const { return m_metadataHasBeenSet; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(const Aws::Map<Aws::String, Aws::String>& value) { m_metadataHasBeenSet = true; m_metadata = value; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(Aws::Map<Aws::String, Aws::String>&& value) { m_metadataHasBeenSet = true; m_metadata = std::move(value); }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CopyObjectRequest& WithMetadata(const Aws::Map<Aws::String, Aws::String>& value) { SetMetadata(value); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CopyObjectRequest& WithMetadata(Aws::Map<Aws::String, Aws::String>&& value) { SetMetadata(std::move(value)); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CopyObjectRequest& AddMetadata(const Aws::String& key, const Aws::String& value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CopyObjectRequest& AddMetadata(Aws::String&& key, const Aws::String& value) { m_metadataHasBeenSet = true; m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CopyObjectRequest& AddMetadata(const Aws::String& key, Aws::String&& value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CopyObjectRequest& AddMetadata(Aws::String&& key, Aws::String&& value) { m_metadataHasBeenSet = true; m_metadata.emplace(std::move(key), std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CopyObjectRequest& AddMetadata(const char* key, Aws::String&& value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CopyObjectRequest& AddMetadata(Aws::String&& key, const char* value) { m_metadataHasBeenSet = true; m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CopyObjectRequest& AddMetadata(const char* key, const char* value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, value); return *this; }
+
+
+ /**
+ * <p>Specifies whether the metadata is copied from the source object or replaced
+ * with metadata provided in the request.</p>
+ */
+ inline const MetadataDirective& GetMetadataDirective() const{ return m_metadataDirective; }
+
+ /**
+ * <p>Specifies whether the metadata is copied from the source object or replaced
+ * with metadata provided in the request.</p>
+ */
+ inline bool MetadataDirectiveHasBeenSet() const { return m_metadataDirectiveHasBeenSet; }
+
+ /**
+ * <p>Specifies whether the metadata is copied from the source object or replaced
+ * with metadata provided in the request.</p>
+ */
+ inline void SetMetadataDirective(const MetadataDirective& value) { m_metadataDirectiveHasBeenSet = true; m_metadataDirective = value; }
+
+ /**
+ * <p>Specifies whether the metadata is copied from the source object or replaced
+ * with metadata provided in the request.</p>
+ */
+ inline void SetMetadataDirective(MetadataDirective&& value) { m_metadataDirectiveHasBeenSet = true; m_metadataDirective = std::move(value); }
+
+ /**
+ * <p>Specifies whether the metadata is copied from the source object or replaced
+ * with metadata provided in the request.</p>
+ */
+ inline CopyObjectRequest& WithMetadataDirective(const MetadataDirective& value) { SetMetadataDirective(value); return *this;}
+
+ /**
+ * <p>Specifies whether the metadata is copied from the source object or replaced
+ * with metadata provided in the request.</p>
+ */
+ inline CopyObjectRequest& WithMetadataDirective(MetadataDirective&& value) { SetMetadataDirective(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether the object tag-set are copied from the source object or
+ * replaced with tag-set provided in the request.</p>
+ */
+ inline const TaggingDirective& GetTaggingDirective() const{ return m_taggingDirective; }
+
+ /**
+ * <p>Specifies whether the object tag-set are copied from the source object or
+ * replaced with tag-set provided in the request.</p>
+ */
+ inline bool TaggingDirectiveHasBeenSet() const { return m_taggingDirectiveHasBeenSet; }
+
+ /**
+ * <p>Specifies whether the object tag-set are copied from the source object or
+ * replaced with tag-set provided in the request.</p>
+ */
+ inline void SetTaggingDirective(const TaggingDirective& value) { m_taggingDirectiveHasBeenSet = true; m_taggingDirective = value; }
+
+ /**
+ * <p>Specifies whether the object tag-set are copied from the source object or
+ * replaced with tag-set provided in the request.</p>
+ */
+ inline void SetTaggingDirective(TaggingDirective&& value) { m_taggingDirectiveHasBeenSet = true; m_taggingDirective = std::move(value); }
+
+ /**
+ * <p>Specifies whether the object tag-set are copied from the source object or
+ * replaced with tag-set provided in the request.</p>
+ */
+ inline CopyObjectRequest& WithTaggingDirective(const TaggingDirective& value) { SetTaggingDirective(value); return *this;}
+
+ /**
+ * <p>Specifies whether the object tag-set are copied from the source object or
+ * replaced with tag-set provided in the request.</p>
+ */
+ inline CopyObjectRequest& WithTaggingDirective(TaggingDirective&& value) { SetTaggingDirective(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = value; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline CopyObjectRequest& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline CopyObjectRequest& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline void SetStorageClass(const StorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline void SetStorageClass(StorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline CopyObjectRequest& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline CopyObjectRequest& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline const Aws::String& GetWebsiteRedirectLocation() const{ return m_websiteRedirectLocation; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline bool WebsiteRedirectLocationHasBeenSet() const { return m_websiteRedirectLocationHasBeenSet; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(const Aws::String& value) { m_websiteRedirectLocationHasBeenSet = true; m_websiteRedirectLocation = value; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(Aws::String&& value) { m_websiteRedirectLocationHasBeenSet = true; m_websiteRedirectLocation = std::move(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(const char* value) { m_websiteRedirectLocationHasBeenSet = true; m_websiteRedirectLocation.assign(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline CopyObjectRequest& WithWebsiteRedirectLocation(const Aws::String& value) { SetWebsiteRedirectLocation(value); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline CopyObjectRequest& WithWebsiteRedirectLocation(Aws::String&& value) { SetWebsiteRedirectLocation(std::move(value)); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline CopyObjectRequest& WithWebsiteRedirectLocation(const char* value) { SetWebsiteRedirectLocation(value); return *this;}
+
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline bool SSECustomerAlgorithmHasBeenSet() const { return m_sSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline CopyObjectRequest& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline CopyObjectRequest& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline CopyObjectRequest& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline const Aws::String& GetSSECustomerKey() const{ return m_sSECustomerKey; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline bool SSECustomerKeyHasBeenSet() const { return m_sSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const Aws::String& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = value; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(Aws::String&& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = std::move(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const char* value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey.assign(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline CopyObjectRequest& WithSSECustomerKey(const Aws::String& value) { SetSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline CopyObjectRequest& WithSSECustomerKey(Aws::String&& value) { SetSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline CopyObjectRequest& WithSSECustomerKey(const char* value) { SetSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline bool SSECustomerKeyMD5HasBeenSet() const { return m_sSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline CopyObjectRequest& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline CopyObjectRequest& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline CopyObjectRequest& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
+ * requests for an object protected by AWS KMS will fail if not made via SSL or
+ * using SigV4. For information about configuring using any of the officially
+ * supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
+ * requests for an object protected by AWS KMS will fail if not made via SSL or
+ * using SigV4. For information about configuring using any of the officially
+ * supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; }
+
+ /**
+ * <p>Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
+ * requests for an object protected by AWS KMS will fail if not made via SSL or
+ * using SigV4. For information about configuring using any of the officially
+ * supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
+ * requests for an object protected by AWS KMS will fail if not made via SSL or
+ * using SigV4. For information about configuring using any of the officially
+ * supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
+ * requests for an object protected by AWS KMS will fail if not made via SSL or
+ * using SigV4. For information about configuring using any of the officially
+ * supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
+ * requests for an object protected by AWS KMS will fail if not made via SSL or
+ * using SigV4. For information about configuring using any of the officially
+ * supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline CopyObjectRequest& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
+ * requests for an object protected by AWS KMS will fail if not made via SSL or
+ * using SigV4. For information about configuring using any of the officially
+ * supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline CopyObjectRequest& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
+ * requests for an object protected by AWS KMS will fail if not made via SSL or
+ * using SigV4. For information about configuring using any of the officially
+ * supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline CopyObjectRequest& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = value; }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = std::move(value); }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext.assign(value); }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline CopyObjectRequest& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline CopyObjectRequest& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline CopyObjectRequest& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS. </p> <p>Specifying this header with a COPY operation doesn’t
+ * affect bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS. </p> <p>Specifying this header with a COPY operation doesn’t
+ * affect bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS. </p> <p>Specifying this header with a COPY operation doesn’t
+ * affect bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabledHasBeenSet = true; m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS. </p> <p>Specifying this header with a COPY operation doesn’t
+ * affect bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline CopyObjectRequest& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline const Aws::String& GetCopySourceSSECustomerAlgorithm() const{ return m_copySourceSSECustomerAlgorithm; }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline bool CopySourceSSECustomerAlgorithmHasBeenSet() const { return m_copySourceSSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline void SetCopySourceSSECustomerAlgorithm(const Aws::String& value) { m_copySourceSSECustomerAlgorithmHasBeenSet = true; m_copySourceSSECustomerAlgorithm = value; }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline void SetCopySourceSSECustomerAlgorithm(Aws::String&& value) { m_copySourceSSECustomerAlgorithmHasBeenSet = true; m_copySourceSSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline void SetCopySourceSSECustomerAlgorithm(const char* value) { m_copySourceSSECustomerAlgorithmHasBeenSet = true; m_copySourceSSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline CopyObjectRequest& WithCopySourceSSECustomerAlgorithm(const Aws::String& value) { SetCopySourceSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline CopyObjectRequest& WithCopySourceSSECustomerAlgorithm(Aws::String&& value) { SetCopySourceSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline CopyObjectRequest& WithCopySourceSSECustomerAlgorithm(const char* value) { SetCopySourceSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline const Aws::String& GetCopySourceSSECustomerKey() const{ return m_copySourceSSECustomerKey; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline bool CopySourceSSECustomerKeyHasBeenSet() const { return m_copySourceSSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline void SetCopySourceSSECustomerKey(const Aws::String& value) { m_copySourceSSECustomerKeyHasBeenSet = true; m_copySourceSSECustomerKey = value; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline void SetCopySourceSSECustomerKey(Aws::String&& value) { m_copySourceSSECustomerKeyHasBeenSet = true; m_copySourceSSECustomerKey = std::move(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline void SetCopySourceSSECustomerKey(const char* value) { m_copySourceSSECustomerKeyHasBeenSet = true; m_copySourceSSECustomerKey.assign(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceSSECustomerKey(const Aws::String& value) { SetCopySourceSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceSSECustomerKey(Aws::String&& value) { SetCopySourceSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceSSECustomerKey(const char* value) { SetCopySourceSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline const Aws::String& GetCopySourceSSECustomerKeyMD5() const{ return m_copySourceSSECustomerKeyMD5; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline bool CopySourceSSECustomerKeyMD5HasBeenSet() const { return m_copySourceSSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetCopySourceSSECustomerKeyMD5(const Aws::String& value) { m_copySourceSSECustomerKeyMD5HasBeenSet = true; m_copySourceSSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetCopySourceSSECustomerKeyMD5(Aws::String&& value) { m_copySourceSSECustomerKeyMD5HasBeenSet = true; m_copySourceSSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetCopySourceSSECustomerKeyMD5(const char* value) { m_copySourceSSECustomerKeyMD5HasBeenSet = true; m_copySourceSSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceSSECustomerKeyMD5(const Aws::String& value) { SetCopySourceSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceSSECustomerKeyMD5(Aws::String&& value) { SetCopySourceSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline CopyObjectRequest& WithCopySourceSSECustomerKeyMD5(const char* value) { SetCopySourceSSECustomerKeyMD5(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline CopyObjectRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline CopyObjectRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The tag-set for the object destination object this value must be used in
+ * conjunction with the <code>TaggingDirective</code>. The tag-set must be encoded
+ * as URL Query parameters.</p>
+ */
+ inline const Aws::String& GetTagging() const{ return m_tagging; }
+
+ /**
+ * <p>The tag-set for the object destination object this value must be used in
+ * conjunction with the <code>TaggingDirective</code>. The tag-set must be encoded
+ * as URL Query parameters.</p>
+ */
+ inline bool TaggingHasBeenSet() const { return m_taggingHasBeenSet; }
+
+ /**
+ * <p>The tag-set for the object destination object this value must be used in
+ * conjunction with the <code>TaggingDirective</code>. The tag-set must be encoded
+ * as URL Query parameters.</p>
+ */
+ inline void SetTagging(const Aws::String& value) { m_taggingHasBeenSet = true; m_tagging = value; }
+
+ /**
+ * <p>The tag-set for the object destination object this value must be used in
+ * conjunction with the <code>TaggingDirective</code>. The tag-set must be encoded
+ * as URL Query parameters.</p>
+ */
+ inline void SetTagging(Aws::String&& value) { m_taggingHasBeenSet = true; m_tagging = std::move(value); }
+
+ /**
+ * <p>The tag-set for the object destination object this value must be used in
+ * conjunction with the <code>TaggingDirective</code>. The tag-set must be encoded
+ * as URL Query parameters.</p>
+ */
+ inline void SetTagging(const char* value) { m_taggingHasBeenSet = true; m_tagging.assign(value); }
+
+ /**
+ * <p>The tag-set for the object destination object this value must be used in
+ * conjunction with the <code>TaggingDirective</code>. The tag-set must be encoded
+ * as URL Query parameters.</p>
+ */
+ inline CopyObjectRequest& WithTagging(const Aws::String& value) { SetTagging(value); return *this;}
+
+ /**
+ * <p>The tag-set for the object destination object this value must be used in
+ * conjunction with the <code>TaggingDirective</code>. The tag-set must be encoded
+ * as URL Query parameters.</p>
+ */
+ inline CopyObjectRequest& WithTagging(Aws::String&& value) { SetTagging(std::move(value)); return *this;}
+
+ /**
+ * <p>The tag-set for the object destination object this value must be used in
+ * conjunction with the <code>TaggingDirective</code>. The tag-set must be encoded
+ * as URL Query parameters.</p>
+ */
+ inline CopyObjectRequest& WithTagging(const char* value) { SetTagging(value); return *this;}
+
+
+ /**
+ * <p>The Object Lock mode that you want to apply to the copied object.</p>
+ */
+ inline const ObjectLockMode& GetObjectLockMode() const{ return m_objectLockMode; }
+
+ /**
+ * <p>The Object Lock mode that you want to apply to the copied object.</p>
+ */
+ inline bool ObjectLockModeHasBeenSet() const { return m_objectLockModeHasBeenSet; }
+
+ /**
+ * <p>The Object Lock mode that you want to apply to the copied object.</p>
+ */
+ inline void SetObjectLockMode(const ObjectLockMode& value) { m_objectLockModeHasBeenSet = true; m_objectLockMode = value; }
+
+ /**
+ * <p>The Object Lock mode that you want to apply to the copied object.</p>
+ */
+ inline void SetObjectLockMode(ObjectLockMode&& value) { m_objectLockModeHasBeenSet = true; m_objectLockMode = std::move(value); }
+
+ /**
+ * <p>The Object Lock mode that you want to apply to the copied object.</p>
+ */
+ inline CopyObjectRequest& WithObjectLockMode(const ObjectLockMode& value) { SetObjectLockMode(value); return *this;}
+
+ /**
+ * <p>The Object Lock mode that you want to apply to the copied object.</p>
+ */
+ inline CopyObjectRequest& WithObjectLockMode(ObjectLockMode&& value) { SetObjectLockMode(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The date and time when you want the copied object's Object Lock to
+ * expire.</p>
+ */
+ inline const Aws::Utils::DateTime& GetObjectLockRetainUntilDate() const{ return m_objectLockRetainUntilDate; }
+
+ /**
+ * <p>The date and time when you want the copied object's Object Lock to
+ * expire.</p>
+ */
+ inline bool ObjectLockRetainUntilDateHasBeenSet() const { return m_objectLockRetainUntilDateHasBeenSet; }
+
+ /**
+ * <p>The date and time when you want the copied object's Object Lock to
+ * expire.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { m_objectLockRetainUntilDateHasBeenSet = true; m_objectLockRetainUntilDate = value; }
+
+ /**
+ * <p>The date and time when you want the copied object's Object Lock to
+ * expire.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { m_objectLockRetainUntilDateHasBeenSet = true; m_objectLockRetainUntilDate = std::move(value); }
+
+ /**
+ * <p>The date and time when you want the copied object's Object Lock to
+ * expire.</p>
+ */
+ inline CopyObjectRequest& WithObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { SetObjectLockRetainUntilDate(value); return *this;}
+
+ /**
+ * <p>The date and time when you want the copied object's Object Lock to
+ * expire.</p>
+ */
+ inline CopyObjectRequest& WithObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { SetObjectLockRetainUntilDate(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the copied object.</p>
+ */
+ inline const ObjectLockLegalHoldStatus& GetObjectLockLegalHoldStatus() const{ return m_objectLockLegalHoldStatus; }
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the copied object.</p>
+ */
+ inline bool ObjectLockLegalHoldStatusHasBeenSet() const { return m_objectLockLegalHoldStatusHasBeenSet; }
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the copied object.</p>
+ */
+ inline void SetObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { m_objectLockLegalHoldStatusHasBeenSet = true; m_objectLockLegalHoldStatus = value; }
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the copied object.</p>
+ */
+ inline void SetObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { m_objectLockLegalHoldStatusHasBeenSet = true; m_objectLockLegalHoldStatus = std::move(value); }
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the copied object.</p>
+ */
+ inline CopyObjectRequest& WithObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { SetObjectLockLegalHoldStatus(value); return *this;}
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the copied object.</p>
+ */
+ inline CopyObjectRequest& WithObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { SetObjectLockLegalHoldStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline CopyObjectRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline CopyObjectRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline CopyObjectRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedSourceBucketOwner() const{ return m_expectedSourceBucketOwner; }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline bool ExpectedSourceBucketOwnerHasBeenSet() const { return m_expectedSourceBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedSourceBucketOwner(const Aws::String& value) { m_expectedSourceBucketOwnerHasBeenSet = true; m_expectedSourceBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedSourceBucketOwner(Aws::String&& value) { m_expectedSourceBucketOwnerHasBeenSet = true; m_expectedSourceBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedSourceBucketOwner(const char* value) { m_expectedSourceBucketOwnerHasBeenSet = true; m_expectedSourceBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline CopyObjectRequest& WithExpectedSourceBucketOwner(const Aws::String& value) { SetExpectedSourceBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline CopyObjectRequest& WithExpectedSourceBucketOwner(Aws::String&& value) { SetExpectedSourceBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline CopyObjectRequest& WithExpectedSourceBucketOwner(const char* value) { SetExpectedSourceBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline CopyObjectRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline CopyObjectRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline CopyObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline CopyObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline CopyObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline CopyObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline CopyObjectRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline CopyObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline CopyObjectRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ ObjectCannedACL m_aCL;
+ bool m_aCLHasBeenSet;
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_cacheControl;
+ bool m_cacheControlHasBeenSet;
+
+ Aws::String m_contentDisposition;
+ bool m_contentDispositionHasBeenSet;
+
+ Aws::String m_contentEncoding;
+ bool m_contentEncodingHasBeenSet;
+
+ Aws::String m_contentLanguage;
+ bool m_contentLanguageHasBeenSet;
+
+ Aws::String m_contentType;
+ bool m_contentTypeHasBeenSet;
+
+ Aws::String m_copySource;
+ bool m_copySourceHasBeenSet;
+
+ Aws::String m_copySourceIfMatch;
+ bool m_copySourceIfMatchHasBeenSet;
+
+ Aws::Utils::DateTime m_copySourceIfModifiedSince;
+ bool m_copySourceIfModifiedSinceHasBeenSet;
+
+ Aws::String m_copySourceIfNoneMatch;
+ bool m_copySourceIfNoneMatchHasBeenSet;
+
+ Aws::Utils::DateTime m_copySourceIfUnmodifiedSince;
+ bool m_copySourceIfUnmodifiedSinceHasBeenSet;
+
+ Aws::Utils::DateTime m_expires;
+ bool m_expiresHasBeenSet;
+
+ Aws::String m_grantFullControl;
+ bool m_grantFullControlHasBeenSet;
+
+ Aws::String m_grantRead;
+ bool m_grantReadHasBeenSet;
+
+ Aws::String m_grantReadACP;
+ bool m_grantReadACPHasBeenSet;
+
+ Aws::String m_grantWriteACP;
+ bool m_grantWriteACPHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_metadata;
+ bool m_metadataHasBeenSet;
+
+ MetadataDirective m_metadataDirective;
+ bool m_metadataDirectiveHasBeenSet;
+
+ TaggingDirective m_taggingDirective;
+ bool m_taggingDirectiveHasBeenSet;
+
+ ServerSideEncryption m_serverSideEncryption;
+ bool m_serverSideEncryptionHasBeenSet;
+
+ StorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+
+ Aws::String m_websiteRedirectLocation;
+ bool m_websiteRedirectLocationHasBeenSet;
+
+ Aws::String m_sSECustomerAlgorithm;
+ bool m_sSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_sSECustomerKey;
+ bool m_sSECustomerKeyHasBeenSet;
+
+ Aws::String m_sSECustomerKeyMD5;
+ bool m_sSECustomerKeyMD5HasBeenSet;
+
+ Aws::String m_sSEKMSKeyId;
+ bool m_sSEKMSKeyIdHasBeenSet;
+
+ Aws::String m_sSEKMSEncryptionContext;
+ bool m_sSEKMSEncryptionContextHasBeenSet;
+
+ bool m_bucketKeyEnabled;
+ bool m_bucketKeyEnabledHasBeenSet;
+
+ Aws::String m_copySourceSSECustomerAlgorithm;
+ bool m_copySourceSSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_copySourceSSECustomerKey;
+ bool m_copySourceSSECustomerKeyHasBeenSet;
+
+ Aws::String m_copySourceSSECustomerKeyMD5;
+ bool m_copySourceSSECustomerKeyMD5HasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_tagging;
+ bool m_taggingHasBeenSet;
+
+ ObjectLockMode m_objectLockMode;
+ bool m_objectLockModeHasBeenSet;
+
+ Aws::Utils::DateTime m_objectLockRetainUntilDate;
+ bool m_objectLockRetainUntilDateHasBeenSet;
+
+ ObjectLockLegalHoldStatus m_objectLockLegalHoldStatus;
+ bool m_objectLockLegalHoldStatusHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::String m_expectedSourceBucketOwner;
+ bool m_expectedSourceBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResult.h
new file mode 100644
index 00000000000..386f654c306
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResult.h
@@ -0,0 +1,471 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <aws/s3/model/CopyObjectResultDetails.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API CopyObjectResult
+ {
+ public:
+ CopyObjectResult();
+ CopyObjectResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ CopyObjectResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>If the object expiration is configured, the response includes this
+ * header.</p>
+ */
+ inline const Aws::String& GetExpiration() const{ return m_expiration; }
+
+ /**
+ * <p>If the object expiration is configured, the response includes this
+ * header.</p>
+ */
+ inline void SetExpiration(const Aws::String& value) { m_expiration = value; }
+
+ /**
+ * <p>If the object expiration is configured, the response includes this
+ * header.</p>
+ */
+ inline void SetExpiration(Aws::String&& value) { m_expiration = std::move(value); }
+
+ /**
+ * <p>If the object expiration is configured, the response includes this
+ * header.</p>
+ */
+ inline void SetExpiration(const char* value) { m_expiration.assign(value); }
+
+ /**
+ * <p>If the object expiration is configured, the response includes this
+ * header.</p>
+ */
+ inline CopyObjectResult& WithExpiration(const Aws::String& value) { SetExpiration(value); return *this;}
+
+ /**
+ * <p>If the object expiration is configured, the response includes this
+ * header.</p>
+ */
+ inline CopyObjectResult& WithExpiration(Aws::String&& value) { SetExpiration(std::move(value)); return *this;}
+
+ /**
+ * <p>If the object expiration is configured, the response includes this
+ * header.</p>
+ */
+ inline CopyObjectResult& WithExpiration(const char* value) { SetExpiration(value); return *this;}
+
+
+ /**
+ * <p>Version of the copied object in the destination bucket.</p>
+ */
+ inline const Aws::String& GetCopySourceVersionId() const{ return m_copySourceVersionId; }
+
+ /**
+ * <p>Version of the copied object in the destination bucket.</p>
+ */
+ inline void SetCopySourceVersionId(const Aws::String& value) { m_copySourceVersionId = value; }
+
+ /**
+ * <p>Version of the copied object in the destination bucket.</p>
+ */
+ inline void SetCopySourceVersionId(Aws::String&& value) { m_copySourceVersionId = std::move(value); }
+
+ /**
+ * <p>Version of the copied object in the destination bucket.</p>
+ */
+ inline void SetCopySourceVersionId(const char* value) { m_copySourceVersionId.assign(value); }
+
+ /**
+ * <p>Version of the copied object in the destination bucket.</p>
+ */
+ inline CopyObjectResult& WithCopySourceVersionId(const Aws::String& value) { SetCopySourceVersionId(value); return *this;}
+
+ /**
+ * <p>Version of the copied object in the destination bucket.</p>
+ */
+ inline CopyObjectResult& WithCopySourceVersionId(Aws::String&& value) { SetCopySourceVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>Version of the copied object in the destination bucket.</p>
+ */
+ inline CopyObjectResult& WithCopySourceVersionId(const char* value) { SetCopySourceVersionId(value); return *this;}
+
+
+ /**
+ * <p>Version ID of the newly created copy.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>Version ID of the newly created copy.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionId = value; }
+
+ /**
+ * <p>Version ID of the newly created copy.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionId = std::move(value); }
+
+ /**
+ * <p>Version ID of the newly created copy.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionId.assign(value); }
+
+ /**
+ * <p>Version ID of the newly created copy.</p>
+ */
+ inline CopyObjectResult& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>Version ID of the newly created copy.</p>
+ */
+ inline CopyObjectResult& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>Version ID of the newly created copy.</p>
+ */
+ inline CopyObjectResult& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline CopyObjectResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline CopyObjectResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline CopyObjectResult& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline CopyObjectResult& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline CopyObjectResult& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline CopyObjectResult& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline CopyObjectResult& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline CopyObjectResult& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline CopyObjectResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline CopyObjectResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline CopyObjectResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContext = std::move(value); }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContext.assign(value); }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline CopyObjectResult& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline CopyObjectResult& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline CopyObjectResult& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether the copied object uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Indicates whether the copied object uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Indicates whether the copied object uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline CopyObjectResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline CopyObjectResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline CopyObjectResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline const CopyObjectResultDetails& GetCopyObjectResultDetails() const{ return m_copyObjectResultDetails; }
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline void SetCopyObjectResultDetails(const CopyObjectResultDetails& value) { m_copyObjectResultDetails = value; }
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline void SetCopyObjectResultDetails(CopyObjectResultDetails&& value) { m_copyObjectResultDetails = std::move(value); }
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline CopyObjectResult& WithCopyObjectResultDetails(const CopyObjectResultDetails& value) { SetCopyObjectResultDetails(value); return *this;}
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline CopyObjectResult& WithCopyObjectResultDetails(CopyObjectResultDetails&& value) { SetCopyObjectResultDetails(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_expiration;
+
+ Aws::String m_copySourceVersionId;
+
+ Aws::String m_versionId;
+
+ ServerSideEncryption m_serverSideEncryption;
+
+ Aws::String m_sSECustomerAlgorithm;
+
+ Aws::String m_sSECustomerKeyMD5;
+
+ Aws::String m_sSEKMSKeyId;
+
+ Aws::String m_sSEKMSEncryptionContext;
+
+ bool m_bucketKeyEnabled;
+
+ RequestCharged m_requestCharged;
+
+ CopyObjectResultDetails m_copyObjectResultDetails;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResultDetails.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResultDetails.h
new file mode 100644
index 00000000000..9c9c0f47dde
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResultDetails.h
@@ -0,0 +1,139 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for all response elements.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObjectResult">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API CopyObjectResultDetails
+ {
+ public:
+ CopyObjectResultDetails();
+ CopyObjectResultDetails(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CopyObjectResultDetails& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Returns the ETag of the new object. The ETag reflects only changes to the
+ * contents of an object, not its metadata. The source and destination ETag is
+ * identical for a successfully copied object.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>Returns the ETag of the new object. The ETag reflects only changes to the
+ * contents of an object, not its metadata. The source and destination ETag is
+ * identical for a successfully copied object.</p>
+ */
+ inline bool ETagHasBeenSet() const { return m_eTagHasBeenSet; }
+
+ /**
+ * <p>Returns the ETag of the new object. The ETag reflects only changes to the
+ * contents of an object, not its metadata. The source and destination ETag is
+ * identical for a successfully copied object.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTagHasBeenSet = true; m_eTag = value; }
+
+ /**
+ * <p>Returns the ETag of the new object. The ETag reflects only changes to the
+ * contents of an object, not its metadata. The source and destination ETag is
+ * identical for a successfully copied object.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTagHasBeenSet = true; m_eTag = std::move(value); }
+
+ /**
+ * <p>Returns the ETag of the new object. The ETag reflects only changes to the
+ * contents of an object, not its metadata. The source and destination ETag is
+ * identical for a successfully copied object.</p>
+ */
+ inline void SetETag(const char* value) { m_eTagHasBeenSet = true; m_eTag.assign(value); }
+
+ /**
+ * <p>Returns the ETag of the new object. The ETag reflects only changes to the
+ * contents of an object, not its metadata. The source and destination ETag is
+ * identical for a successfully copied object.</p>
+ */
+ inline CopyObjectResultDetails& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>Returns the ETag of the new object. The ETag reflects only changes to the
+ * contents of an object, not its metadata. The source and destination ETag is
+ * identical for a successfully copied object.</p>
+ */
+ inline CopyObjectResultDetails& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>Returns the ETag of the new object. The ETag reflects only changes to the
+ * contents of an object, not its metadata. The source and destination ETag is
+ * identical for a successfully copied object.</p>
+ */
+ inline CopyObjectResultDetails& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>Returns the date that the object was last modified.</p>
+ */
+ inline const Aws::Utils::DateTime& GetLastModified() const{ return m_lastModified; }
+
+ /**
+ * <p>Returns the date that the object was last modified.</p>
+ */
+ inline bool LastModifiedHasBeenSet() const { return m_lastModifiedHasBeenSet; }
+
+ /**
+ * <p>Returns the date that the object was last modified.</p>
+ */
+ inline void SetLastModified(const Aws::Utils::DateTime& value) { m_lastModifiedHasBeenSet = true; m_lastModified = value; }
+
+ /**
+ * <p>Returns the date that the object was last modified.</p>
+ */
+ inline void SetLastModified(Aws::Utils::DateTime&& value) { m_lastModifiedHasBeenSet = true; m_lastModified = std::move(value); }
+
+ /**
+ * <p>Returns the date that the object was last modified.</p>
+ */
+ inline CopyObjectResultDetails& WithLastModified(const Aws::Utils::DateTime& value) { SetLastModified(value); return *this;}
+
+ /**
+ * <p>Returns the date that the object was last modified.</p>
+ */
+ inline CopyObjectResultDetails& WithLastModified(Aws::Utils::DateTime&& value) { SetLastModified(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_eTag;
+ bool m_eTagHasBeenSet;
+
+ Aws::Utils::DateTime m_lastModified;
+ bool m_lastModifiedHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyPartResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyPartResult.h
new file mode 100644
index 00000000000..d744384ae20
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CopyPartResult.h
@@ -0,0 +1,123 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for all response elements.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyPartResult">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API CopyPartResult
+ {
+ public:
+ CopyPartResult();
+ CopyPartResult(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CopyPartResult& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Entity tag of the object.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>Entity tag of the object.</p>
+ */
+ inline bool ETagHasBeenSet() const { return m_eTagHasBeenSet; }
+
+ /**
+ * <p>Entity tag of the object.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTagHasBeenSet = true; m_eTag = value; }
+
+ /**
+ * <p>Entity tag of the object.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTagHasBeenSet = true; m_eTag = std::move(value); }
+
+ /**
+ * <p>Entity tag of the object.</p>
+ */
+ inline void SetETag(const char* value) { m_eTagHasBeenSet = true; m_eTag.assign(value); }
+
+ /**
+ * <p>Entity tag of the object.</p>
+ */
+ inline CopyPartResult& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>Entity tag of the object.</p>
+ */
+ inline CopyPartResult& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>Entity tag of the object.</p>
+ */
+ inline CopyPartResult& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>Date and time at which the object was uploaded.</p>
+ */
+ inline const Aws::Utils::DateTime& GetLastModified() const{ return m_lastModified; }
+
+ /**
+ * <p>Date and time at which the object was uploaded.</p>
+ */
+ inline bool LastModifiedHasBeenSet() const { return m_lastModifiedHasBeenSet; }
+
+ /**
+ * <p>Date and time at which the object was uploaded.</p>
+ */
+ inline void SetLastModified(const Aws::Utils::DateTime& value) { m_lastModifiedHasBeenSet = true; m_lastModified = value; }
+
+ /**
+ * <p>Date and time at which the object was uploaded.</p>
+ */
+ inline void SetLastModified(Aws::Utils::DateTime&& value) { m_lastModifiedHasBeenSet = true; m_lastModified = std::move(value); }
+
+ /**
+ * <p>Date and time at which the object was uploaded.</p>
+ */
+ inline CopyPartResult& WithLastModified(const Aws::Utils::DateTime& value) { SetLastModified(value); return *this;}
+
+ /**
+ * <p>Date and time at which the object was uploaded.</p>
+ */
+ inline CopyPartResult& WithLastModified(Aws::Utils::DateTime&& value) { SetLastModified(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_eTag;
+ bool m_eTagHasBeenSet;
+
+ Aws::Utils::DateTime m_lastModified;
+ bool m_lastModifiedHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketConfiguration.h
new file mode 100644
index 00000000000..b43d6ea94fe
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketConfiguration.h
@@ -0,0 +1,90 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/BucketLocationConstraint.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The configuration information for the bucket.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucketConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API CreateBucketConfiguration
+ {
+ public:
+ CreateBucketConfiguration();
+ CreateBucketConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ CreateBucketConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you don't specify a
+ * Region, the bucket is created in the US East (N. Virginia) Region
+ * (us-east-1).</p>
+ */
+ inline const BucketLocationConstraint& GetLocationConstraint() const{ return m_locationConstraint; }
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you don't specify a
+ * Region, the bucket is created in the US East (N. Virginia) Region
+ * (us-east-1).</p>
+ */
+ inline bool LocationConstraintHasBeenSet() const { return m_locationConstraintHasBeenSet; }
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you don't specify a
+ * Region, the bucket is created in the US East (N. Virginia) Region
+ * (us-east-1).</p>
+ */
+ inline void SetLocationConstraint(const BucketLocationConstraint& value) { m_locationConstraintHasBeenSet = true; m_locationConstraint = value; }
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you don't specify a
+ * Region, the bucket is created in the US East (N. Virginia) Region
+ * (us-east-1).</p>
+ */
+ inline void SetLocationConstraint(BucketLocationConstraint&& value) { m_locationConstraintHasBeenSet = true; m_locationConstraint = std::move(value); }
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you don't specify a
+ * Region, the bucket is created in the US East (N. Virginia) Region
+ * (us-east-1).</p>
+ */
+ inline CreateBucketConfiguration& WithLocationConstraint(const BucketLocationConstraint& value) { SetLocationConstraint(value); return *this;}
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you don't specify a
+ * Region, the bucket is created in the US East (N. Virginia) Region
+ * (us-east-1).</p>
+ */
+ inline CreateBucketConfiguration& WithLocationConstraint(BucketLocationConstraint&& value) { SetLocationConstraint(std::move(value)); return *this;}
+
+ private:
+
+ BucketLocationConstraint m_locationConstraint;
+ bool m_locationConstraintHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketRequest.h
new file mode 100644
index 00000000000..ab18fd2bb71
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketRequest.h
@@ -0,0 +1,461 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/s3/model/BucketCannedACL.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/CreateBucketConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API CreateBucketRequest : public S3Request
+ {
+ public:
+ CreateBucketRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "CreateBucket"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline const BucketCannedACL& GetACL() const{ return m_aCL; }
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline bool ACLHasBeenSet() const { return m_aCLHasBeenSet; }
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline void SetACL(const BucketCannedACL& value) { m_aCLHasBeenSet = true; m_aCL = value; }
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline void SetACL(BucketCannedACL&& value) { m_aCLHasBeenSet = true; m_aCL = std::move(value); }
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline CreateBucketRequest& WithACL(const BucketCannedACL& value) { SetACL(value); return *this;}
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline CreateBucketRequest& WithACL(BucketCannedACL&& value) { SetACL(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The name of the bucket to create.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket to create.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket to create.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket to create.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket to create.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket to create.</p>
+ */
+ inline CreateBucketRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket to create.</p>
+ */
+ inline CreateBucketRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket to create.</p>
+ */
+ inline CreateBucketRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The configuration information for the bucket.</p>
+ */
+ inline const CreateBucketConfiguration& GetCreateBucketConfiguration() const{ return m_createBucketConfiguration; }
+
+ /**
+ * <p>The configuration information for the bucket.</p>
+ */
+ inline bool CreateBucketConfigurationHasBeenSet() const { return m_createBucketConfigurationHasBeenSet; }
+
+ /**
+ * <p>The configuration information for the bucket.</p>
+ */
+ inline void SetCreateBucketConfiguration(const CreateBucketConfiguration& value) { m_createBucketConfigurationHasBeenSet = true; m_createBucketConfiguration = value; }
+
+ /**
+ * <p>The configuration information for the bucket.</p>
+ */
+ inline void SetCreateBucketConfiguration(CreateBucketConfiguration&& value) { m_createBucketConfigurationHasBeenSet = true; m_createBucketConfiguration = std::move(value); }
+
+ /**
+ * <p>The configuration information for the bucket.</p>
+ */
+ inline CreateBucketRequest& WithCreateBucketConfiguration(const CreateBucketConfiguration& value) { SetCreateBucketConfiguration(value); return *this;}
+
+ /**
+ * <p>The configuration information for the bucket.</p>
+ */
+ inline CreateBucketRequest& WithCreateBucketConfiguration(CreateBucketConfiguration&& value) { SetCreateBucketConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline const Aws::String& GetGrantFullControl() const{ return m_grantFullControl; }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline bool GrantFullControlHasBeenSet() const { return m_grantFullControlHasBeenSet; }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline void SetGrantFullControl(const Aws::String& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = value; }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline void SetGrantFullControl(Aws::String&& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = std::move(value); }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline void SetGrantFullControl(const char* value) { m_grantFullControlHasBeenSet = true; m_grantFullControl.assign(value); }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantFullControl(const Aws::String& value) { SetGrantFullControl(value); return *this;}
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantFullControl(Aws::String&& value) { SetGrantFullControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantFullControl(const char* value) { SetGrantFullControl(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline const Aws::String& GetGrantRead() const{ return m_grantRead; }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline bool GrantReadHasBeenSet() const { return m_grantReadHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline void SetGrantRead(const Aws::String& value) { m_grantReadHasBeenSet = true; m_grantRead = value; }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline void SetGrantRead(Aws::String&& value) { m_grantReadHasBeenSet = true; m_grantRead = std::move(value); }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline void SetGrantRead(const char* value) { m_grantReadHasBeenSet = true; m_grantRead.assign(value); }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantRead(const Aws::String& value) { SetGrantRead(value); return *this;}
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantRead(Aws::String&& value) { SetGrantRead(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantRead(const char* value) { SetGrantRead(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline const Aws::String& GetGrantReadACP() const{ return m_grantReadACP; }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline bool GrantReadACPHasBeenSet() const { return m_grantReadACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline void SetGrantReadACP(const Aws::String& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = value; }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline void SetGrantReadACP(Aws::String&& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline void SetGrantReadACP(const char* value) { m_grantReadACPHasBeenSet = true; m_grantReadACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline CreateBucketRequest& WithGrantReadACP(const Aws::String& value) { SetGrantReadACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline CreateBucketRequest& WithGrantReadACP(Aws::String&& value) { SetGrantReadACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline CreateBucketRequest& WithGrantReadACP(const char* value) { SetGrantReadACP(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline const Aws::String& GetGrantWrite() const{ return m_grantWrite; }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline bool GrantWriteHasBeenSet() const { return m_grantWriteHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline void SetGrantWrite(const Aws::String& value) { m_grantWriteHasBeenSet = true; m_grantWrite = value; }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline void SetGrantWrite(Aws::String&& value) { m_grantWriteHasBeenSet = true; m_grantWrite = std::move(value); }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline void SetGrantWrite(const char* value) { m_grantWriteHasBeenSet = true; m_grantWrite.assign(value); }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantWrite(const Aws::String& value) { SetGrantWrite(value); return *this;}
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantWrite(Aws::String&& value) { SetGrantWrite(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantWrite(const char* value) { SetGrantWrite(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline const Aws::String& GetGrantWriteACP() const{ return m_grantWriteACP; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline bool GrantWriteACPHasBeenSet() const { return m_grantWriteACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline void SetGrantWriteACP(const Aws::String& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = value; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline void SetGrantWriteACP(Aws::String&& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline void SetGrantWriteACP(const char* value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantWriteACP(const Aws::String& value) { SetGrantWriteACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantWriteACP(Aws::String&& value) { SetGrantWriteACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline CreateBucketRequest& WithGrantWriteACP(const char* value) { SetGrantWriteACP(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether you want S3 Object Lock to be enabled for the new
+ * bucket.</p>
+ */
+ inline bool GetObjectLockEnabledForBucket() const{ return m_objectLockEnabledForBucket; }
+
+ /**
+ * <p>Specifies whether you want S3 Object Lock to be enabled for the new
+ * bucket.</p>
+ */
+ inline bool ObjectLockEnabledForBucketHasBeenSet() const { return m_objectLockEnabledForBucketHasBeenSet; }
+
+ /**
+ * <p>Specifies whether you want S3 Object Lock to be enabled for the new
+ * bucket.</p>
+ */
+ inline void SetObjectLockEnabledForBucket(bool value) { m_objectLockEnabledForBucketHasBeenSet = true; m_objectLockEnabledForBucket = value; }
+
+ /**
+ * <p>Specifies whether you want S3 Object Lock to be enabled for the new
+ * bucket.</p>
+ */
+ inline CreateBucketRequest& WithObjectLockEnabledForBucket(bool value) { SetObjectLockEnabledForBucket(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline CreateBucketRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline CreateBucketRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline CreateBucketRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline CreateBucketRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline CreateBucketRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline CreateBucketRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline CreateBucketRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline CreateBucketRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline CreateBucketRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ BucketCannedACL m_aCL;
+ bool m_aCLHasBeenSet;
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ CreateBucketConfiguration m_createBucketConfiguration;
+ bool m_createBucketConfigurationHasBeenSet;
+
+ Aws::String m_grantFullControl;
+ bool m_grantFullControlHasBeenSet;
+
+ Aws::String m_grantRead;
+ bool m_grantReadHasBeenSet;
+
+ Aws::String m_grantReadACP;
+ bool m_grantReadACPHasBeenSet;
+
+ Aws::String m_grantWrite;
+ bool m_grantWriteHasBeenSet;
+
+ Aws::String m_grantWriteACP;
+ bool m_grantWriteACPHasBeenSet;
+
+ bool m_objectLockEnabledForBucket;
+ bool m_objectLockEnabledForBucketHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketResult.h
new file mode 100644
index 00000000000..fb295991795
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateBucketResult.h
@@ -0,0 +1,91 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API CreateBucketResult
+ {
+ public:
+ CreateBucketResult();
+ CreateBucketResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ CreateBucketResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you are creating a
+ * bucket on the US East (N. Virginia) Region (us-east-1), you do not need to
+ * specify the location.</p>
+ */
+ inline const Aws::String& GetLocation() const{ return m_location; }
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you are creating a
+ * bucket on the US East (N. Virginia) Region (us-east-1), you do not need to
+ * specify the location.</p>
+ */
+ inline void SetLocation(const Aws::String& value) { m_location = value; }
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you are creating a
+ * bucket on the US East (N. Virginia) Region (us-east-1), you do not need to
+ * specify the location.</p>
+ */
+ inline void SetLocation(Aws::String&& value) { m_location = std::move(value); }
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you are creating a
+ * bucket on the US East (N. Virginia) Region (us-east-1), you do not need to
+ * specify the location.</p>
+ */
+ inline void SetLocation(const char* value) { m_location.assign(value); }
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you are creating a
+ * bucket on the US East (N. Virginia) Region (us-east-1), you do not need to
+ * specify the location.</p>
+ */
+ inline CreateBucketResult& WithLocation(const Aws::String& value) { SetLocation(value); return *this;}
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you are creating a
+ * bucket on the US East (N. Virginia) Region (us-east-1), you do not need to
+ * specify the location.</p>
+ */
+ inline CreateBucketResult& WithLocation(Aws::String&& value) { SetLocation(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the Region where the bucket will be created. If you are creating a
+ * bucket on the US East (N. Virginia) Region (us-east-1), you do not need to
+ * specify the location.</p>
+ */
+ inline CreateBucketResult& WithLocation(const char* value) { SetLocation(value); return *this;}
+
+ private:
+
+ Aws::String m_location;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadRequest.h
new file mode 100644
index 00000000000..0a5608dff50
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadRequest.h
@@ -0,0 +1,1709 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/s3/model/ObjectCannedACL.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/s3/model/ObjectLockMode.h>
+#include <aws/s3/model/ObjectLockLegalHoldStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API CreateMultipartUploadRequest : public S3Request
+ {
+ public:
+ CreateMultipartUploadRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "CreateMultipartUpload"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline const ObjectCannedACL& GetACL() const{ return m_aCL; }
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline bool ACLHasBeenSet() const { return m_aCLHasBeenSet; }
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetACL(const ObjectCannedACL& value) { m_aCLHasBeenSet = true; m_aCL = value; }
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetACL(ObjectCannedACL&& value) { m_aCLHasBeenSet = true; m_aCL = std::move(value); }
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithACL(const ObjectCannedACL& value) { SetACL(value); return *this;}
+
+ /**
+ * <p>The canned ACL to apply to the object.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithACL(ObjectCannedACL&& value) { SetACL(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The name of the bucket to which to initiate the upload</p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket to which to initiate the upload</p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket to which to initiate the upload</p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket to which to initiate the upload</p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket to which to initiate the upload</p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket to which to initiate the upload</p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CreateMultipartUploadRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket to which to initiate the upload</p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CreateMultipartUploadRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket to which to initiate the upload</p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CreateMultipartUploadRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline const Aws::String& GetCacheControl() const{ return m_cacheControl; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline bool CacheControlHasBeenSet() const { return m_cacheControlHasBeenSet; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(const Aws::String& value) { m_cacheControlHasBeenSet = true; m_cacheControl = value; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(Aws::String&& value) { m_cacheControlHasBeenSet = true; m_cacheControl = std::move(value); }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(const char* value) { m_cacheControlHasBeenSet = true; m_cacheControl.assign(value); }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline CreateMultipartUploadRequest& WithCacheControl(const Aws::String& value) { SetCacheControl(value); return *this;}
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline CreateMultipartUploadRequest& WithCacheControl(Aws::String&& value) { SetCacheControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline CreateMultipartUploadRequest& WithCacheControl(const char* value) { SetCacheControl(value); return *this;}
+
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline const Aws::String& GetContentDisposition() const{ return m_contentDisposition; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline bool ContentDispositionHasBeenSet() const { return m_contentDispositionHasBeenSet; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(const Aws::String& value) { m_contentDispositionHasBeenSet = true; m_contentDisposition = value; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(Aws::String&& value) { m_contentDispositionHasBeenSet = true; m_contentDisposition = std::move(value); }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(const char* value) { m_contentDispositionHasBeenSet = true; m_contentDisposition.assign(value); }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentDisposition(const Aws::String& value) { SetContentDisposition(value); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentDisposition(Aws::String&& value) { SetContentDisposition(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentDisposition(const char* value) { SetContentDisposition(value); return *this;}
+
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline const Aws::String& GetContentEncoding() const{ return m_contentEncoding; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline bool ContentEncodingHasBeenSet() const { return m_contentEncodingHasBeenSet; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(const Aws::String& value) { m_contentEncodingHasBeenSet = true; m_contentEncoding = value; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(Aws::String&& value) { m_contentEncodingHasBeenSet = true; m_contentEncoding = std::move(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(const char* value) { m_contentEncodingHasBeenSet = true; m_contentEncoding.assign(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentEncoding(const Aws::String& value) { SetContentEncoding(value); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentEncoding(Aws::String&& value) { SetContentEncoding(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentEncoding(const char* value) { SetContentEncoding(value); return *this;}
+
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline const Aws::String& GetContentLanguage() const{ return m_contentLanguage; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline bool ContentLanguageHasBeenSet() const { return m_contentLanguageHasBeenSet; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const Aws::String& value) { m_contentLanguageHasBeenSet = true; m_contentLanguage = value; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(Aws::String&& value) { m_contentLanguageHasBeenSet = true; m_contentLanguage = std::move(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const char* value) { m_contentLanguageHasBeenSet = true; m_contentLanguage.assign(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentLanguage(const Aws::String& value) { SetContentLanguage(value); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentLanguage(Aws::String&& value) { SetContentLanguage(std::move(value)); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentLanguage(const char* value) { SetContentLanguage(value); return *this;}
+
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline const Aws::String& GetContentType() const{ return m_contentType; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline bool ContentTypeHasBeenSet() const { return m_contentTypeHasBeenSet; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(const Aws::String& value) { m_contentTypeHasBeenSet = true; m_contentType = value; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(Aws::String&& value) { m_contentTypeHasBeenSet = true; m_contentType = std::move(value); }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(const char* value) { m_contentTypeHasBeenSet = true; m_contentType.assign(value); }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentType(const Aws::String& value) { SetContentType(value); return *this;}
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentType(Aws::String&& value) { SetContentType(std::move(value)); return *this;}
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline CreateMultipartUploadRequest& WithContentType(const char* value) { SetContentType(value); return *this;}
+
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline const Aws::Utils::DateTime& GetExpires() const{ return m_expires; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline bool ExpiresHasBeenSet() const { return m_expiresHasBeenSet; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline void SetExpires(const Aws::Utils::DateTime& value) { m_expiresHasBeenSet = true; m_expires = value; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline void SetExpires(Aws::Utils::DateTime&& value) { m_expiresHasBeenSet = true; m_expires = std::move(value); }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline CreateMultipartUploadRequest& WithExpires(const Aws::Utils::DateTime& value) { SetExpires(value); return *this;}
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline CreateMultipartUploadRequest& WithExpires(Aws::Utils::DateTime&& value) { SetExpires(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantFullControl() const{ return m_grantFullControl; }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantFullControlHasBeenSet() const { return m_grantFullControlHasBeenSet; }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(const Aws::String& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = value; }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(Aws::String&& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = std::move(value); }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(const char* value) { m_grantFullControlHasBeenSet = true; m_grantFullControl.assign(value); }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantFullControl(const Aws::String& value) { SetGrantFullControl(value); return *this;}
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantFullControl(Aws::String&& value) { SetGrantFullControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantFullControl(const char* value) { SetGrantFullControl(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantRead() const{ return m_grantRead; }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantReadHasBeenSet() const { return m_grantReadHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(const Aws::String& value) { m_grantReadHasBeenSet = true; m_grantRead = value; }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(Aws::String&& value) { m_grantReadHasBeenSet = true; m_grantRead = std::move(value); }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(const char* value) { m_grantReadHasBeenSet = true; m_grantRead.assign(value); }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantRead(const Aws::String& value) { SetGrantRead(value); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantRead(Aws::String&& value) { SetGrantRead(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantRead(const char* value) { SetGrantRead(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantReadACP() const{ return m_grantReadACP; }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantReadACPHasBeenSet() const { return m_grantReadACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(const Aws::String& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = value; }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(Aws::String&& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(const char* value) { m_grantReadACPHasBeenSet = true; m_grantReadACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantReadACP(const Aws::String& value) { SetGrantReadACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantReadACP(Aws::String&& value) { SetGrantReadACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantReadACP(const char* value) { SetGrantReadACP(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantWriteACP() const{ return m_grantWriteACP; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantWriteACPHasBeenSet() const { return m_grantWriteACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(const Aws::String& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = value; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(Aws::String&& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(const char* value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantWriteACP(const Aws::String& value) { SetGrantWriteACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantWriteACP(Aws::String&& value) { SetGrantWriteACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline CreateMultipartUploadRequest& WithGrantWriteACP(const char* value) { SetGrantWriteACP(value); return *this;}
+
+
+ /**
+ * <p>Object key for which the multipart upload is to be initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which the multipart upload is to be initiated.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Object key for which the multipart upload is to be initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Object key for which the multipart upload is to be initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which the multipart upload is to be initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Object key for which the multipart upload is to be initiated.</p>
+ */
+ inline CreateMultipartUploadRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload is to be initiated.</p>
+ */
+ inline CreateMultipartUploadRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload is to be initiated.</p>
+ */
+ inline CreateMultipartUploadRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline const Aws::Map<Aws::String, Aws::String>& GetMetadata() const{ return m_metadata; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline bool MetadataHasBeenSet() const { return m_metadataHasBeenSet; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(const Aws::Map<Aws::String, Aws::String>& value) { m_metadataHasBeenSet = true; m_metadata = value; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(Aws::Map<Aws::String, Aws::String>&& value) { m_metadataHasBeenSet = true; m_metadata = std::move(value); }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CreateMultipartUploadRequest& WithMetadata(const Aws::Map<Aws::String, Aws::String>& value) { SetMetadata(value); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CreateMultipartUploadRequest& WithMetadata(Aws::Map<Aws::String, Aws::String>&& value) { SetMetadata(std::move(value)); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CreateMultipartUploadRequest& AddMetadata(const Aws::String& key, const Aws::String& value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CreateMultipartUploadRequest& AddMetadata(Aws::String&& key, const Aws::String& value) { m_metadataHasBeenSet = true; m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CreateMultipartUploadRequest& AddMetadata(const Aws::String& key, Aws::String&& value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CreateMultipartUploadRequest& AddMetadata(Aws::String&& key, Aws::String&& value) { m_metadataHasBeenSet = true; m_metadata.emplace(std::move(key), std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CreateMultipartUploadRequest& AddMetadata(const char* key, Aws::String&& value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CreateMultipartUploadRequest& AddMetadata(Aws::String&& key, const char* value) { m_metadataHasBeenSet = true; m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline CreateMultipartUploadRequest& AddMetadata(const char* key, const char* value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, value); return *this; }
+
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = value; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline CreateMultipartUploadRequest& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline CreateMultipartUploadRequest& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline void SetStorageClass(const StorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline void SetStorageClass(StorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline CreateMultipartUploadRequest& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline CreateMultipartUploadRequest& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline const Aws::String& GetWebsiteRedirectLocation() const{ return m_websiteRedirectLocation; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline bool WebsiteRedirectLocationHasBeenSet() const { return m_websiteRedirectLocationHasBeenSet; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(const Aws::String& value) { m_websiteRedirectLocationHasBeenSet = true; m_websiteRedirectLocation = value; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(Aws::String&& value) { m_websiteRedirectLocationHasBeenSet = true; m_websiteRedirectLocation = std::move(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(const char* value) { m_websiteRedirectLocationHasBeenSet = true; m_websiteRedirectLocation.assign(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline CreateMultipartUploadRequest& WithWebsiteRedirectLocation(const Aws::String& value) { SetWebsiteRedirectLocation(value); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline CreateMultipartUploadRequest& WithWebsiteRedirectLocation(Aws::String&& value) { SetWebsiteRedirectLocation(std::move(value)); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline CreateMultipartUploadRequest& WithWebsiteRedirectLocation(const char* value) { SetWebsiteRedirectLocation(value); return *this;}
+
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline bool SSECustomerAlgorithmHasBeenSet() const { return m_sSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline const Aws::String& GetSSECustomerKey() const{ return m_sSECustomerKey; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline bool SSECustomerKeyHasBeenSet() const { return m_sSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const Aws::String& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = value; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(Aws::String&& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = std::move(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const char* value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey.assign(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSECustomerKey(const Aws::String& value) { SetSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSECustomerKey(Aws::String&& value) { SetSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSECustomerKey(const char* value) { SetSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline bool SSECustomerKeyMD5HasBeenSet() const { return m_sSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>Specifies the ID of the symmetric customer managed AWS KMS CMK to use for
+ * object encryption. All GET and PUT requests for an object protected by AWS KMS
+ * will fail if not made via SSL or using SigV4. For information about configuring
+ * using any of the officially supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>Specifies the ID of the symmetric customer managed AWS KMS CMK to use for
+ * object encryption. All GET and PUT requests for an object protected by AWS KMS
+ * will fail if not made via SSL or using SigV4. For information about configuring
+ * using any of the officially supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; }
+
+ /**
+ * <p>Specifies the ID of the symmetric customer managed AWS KMS CMK to use for
+ * object encryption. All GET and PUT requests for an object protected by AWS KMS
+ * will fail if not made via SSL or using SigV4. For information about configuring
+ * using any of the officially supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>Specifies the ID of the symmetric customer managed AWS KMS CMK to use for
+ * object encryption. All GET and PUT requests for an object protected by AWS KMS
+ * will fail if not made via SSL or using SigV4. For information about configuring
+ * using any of the officially supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>Specifies the ID of the symmetric customer managed AWS KMS CMK to use for
+ * object encryption. All GET and PUT requests for an object protected by AWS KMS
+ * will fail if not made via SSL or using SigV4. For information about configuring
+ * using any of the officially supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>Specifies the ID of the symmetric customer managed AWS KMS CMK to use for
+ * object encryption. All GET and PUT requests for an object protected by AWS KMS
+ * will fail if not made via SSL or using SigV4. For information about configuring
+ * using any of the officially supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>Specifies the ID of the symmetric customer managed AWS KMS CMK to use for
+ * object encryption. All GET and PUT requests for an object protected by AWS KMS
+ * will fail if not made via SSL or using SigV4. For information about configuring
+ * using any of the officially supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the ID of the symmetric customer managed AWS KMS CMK to use for
+ * object encryption. All GET and PUT requests for an object protected by AWS KMS
+ * will fail if not made via SSL or using SigV4. For information about configuring
+ * using any of the officially supported AWS SDKs and AWS CLI, see <a
+ * href="https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version">Specifying
+ * the Signature Version in Request Authentication</a> in the <i>Amazon S3
+ * Developer Guide</i>.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = value; }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = std::move(value); }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext.assign(value); }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline CreateMultipartUploadRequest& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS.</p> <p>Specifying this header with an object operation doesn’t
+ * affect bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS.</p> <p>Specifying this header with an object operation doesn’t
+ * affect bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS.</p> <p>Specifying this header with an object operation doesn’t
+ * affect bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabledHasBeenSet = true; m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS.</p> <p>Specifying this header with an object operation doesn’t
+ * affect bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline CreateMultipartUploadRequest& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline CreateMultipartUploadRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline CreateMultipartUploadRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters.</p>
+ */
+ inline const Aws::String& GetTagging() const{ return m_tagging; }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters.</p>
+ */
+ inline bool TaggingHasBeenSet() const { return m_taggingHasBeenSet; }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters.</p>
+ */
+ inline void SetTagging(const Aws::String& value) { m_taggingHasBeenSet = true; m_tagging = value; }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters.</p>
+ */
+ inline void SetTagging(Aws::String&& value) { m_taggingHasBeenSet = true; m_tagging = std::move(value); }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters.</p>
+ */
+ inline void SetTagging(const char* value) { m_taggingHasBeenSet = true; m_tagging.assign(value); }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters.</p>
+ */
+ inline CreateMultipartUploadRequest& WithTagging(const Aws::String& value) { SetTagging(value); return *this;}
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters.</p>
+ */
+ inline CreateMultipartUploadRequest& WithTagging(Aws::String&& value) { SetTagging(std::move(value)); return *this;}
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters.</p>
+ */
+ inline CreateMultipartUploadRequest& WithTagging(const char* value) { SetTagging(value); return *this;}
+
+
+ /**
+ * <p>Specifies the Object Lock mode that you want to apply to the uploaded
+ * object.</p>
+ */
+ inline const ObjectLockMode& GetObjectLockMode() const{ return m_objectLockMode; }
+
+ /**
+ * <p>Specifies the Object Lock mode that you want to apply to the uploaded
+ * object.</p>
+ */
+ inline bool ObjectLockModeHasBeenSet() const { return m_objectLockModeHasBeenSet; }
+
+ /**
+ * <p>Specifies the Object Lock mode that you want to apply to the uploaded
+ * object.</p>
+ */
+ inline void SetObjectLockMode(const ObjectLockMode& value) { m_objectLockModeHasBeenSet = true; m_objectLockMode = value; }
+
+ /**
+ * <p>Specifies the Object Lock mode that you want to apply to the uploaded
+ * object.</p>
+ */
+ inline void SetObjectLockMode(ObjectLockMode&& value) { m_objectLockModeHasBeenSet = true; m_objectLockMode = std::move(value); }
+
+ /**
+ * <p>Specifies the Object Lock mode that you want to apply to the uploaded
+ * object.</p>
+ */
+ inline CreateMultipartUploadRequest& WithObjectLockMode(const ObjectLockMode& value) { SetObjectLockMode(value); return *this;}
+
+ /**
+ * <p>Specifies the Object Lock mode that you want to apply to the uploaded
+ * object.</p>
+ */
+ inline CreateMultipartUploadRequest& WithObjectLockMode(ObjectLockMode&& value) { SetObjectLockMode(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the date and time when you want the Object Lock to expire.</p>
+ */
+ inline const Aws::Utils::DateTime& GetObjectLockRetainUntilDate() const{ return m_objectLockRetainUntilDate; }
+
+ /**
+ * <p>Specifies the date and time when you want the Object Lock to expire.</p>
+ */
+ inline bool ObjectLockRetainUntilDateHasBeenSet() const { return m_objectLockRetainUntilDateHasBeenSet; }
+
+ /**
+ * <p>Specifies the date and time when you want the Object Lock to expire.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { m_objectLockRetainUntilDateHasBeenSet = true; m_objectLockRetainUntilDate = value; }
+
+ /**
+ * <p>Specifies the date and time when you want the Object Lock to expire.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { m_objectLockRetainUntilDateHasBeenSet = true; m_objectLockRetainUntilDate = std::move(value); }
+
+ /**
+ * <p>Specifies the date and time when you want the Object Lock to expire.</p>
+ */
+ inline CreateMultipartUploadRequest& WithObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { SetObjectLockRetainUntilDate(value); return *this;}
+
+ /**
+ * <p>Specifies the date and time when you want the Object Lock to expire.</p>
+ */
+ inline CreateMultipartUploadRequest& WithObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { SetObjectLockRetainUntilDate(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the uploaded object.</p>
+ */
+ inline const ObjectLockLegalHoldStatus& GetObjectLockLegalHoldStatus() const{ return m_objectLockLegalHoldStatus; }
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the uploaded object.</p>
+ */
+ inline bool ObjectLockLegalHoldStatusHasBeenSet() const { return m_objectLockLegalHoldStatusHasBeenSet; }
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the uploaded object.</p>
+ */
+ inline void SetObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { m_objectLockLegalHoldStatusHasBeenSet = true; m_objectLockLegalHoldStatus = value; }
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the uploaded object.</p>
+ */
+ inline void SetObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { m_objectLockLegalHoldStatusHasBeenSet = true; m_objectLockLegalHoldStatus = std::move(value); }
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the uploaded object.</p>
+ */
+ inline CreateMultipartUploadRequest& WithObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { SetObjectLockLegalHoldStatus(value); return *this;}
+
+ /**
+ * <p>Specifies whether you want to apply a Legal Hold to the uploaded object.</p>
+ */
+ inline CreateMultipartUploadRequest& WithObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { SetObjectLockLegalHoldStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline CreateMultipartUploadRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline CreateMultipartUploadRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline CreateMultipartUploadRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline CreateMultipartUploadRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline CreateMultipartUploadRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline CreateMultipartUploadRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline CreateMultipartUploadRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline CreateMultipartUploadRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline CreateMultipartUploadRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline CreateMultipartUploadRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline CreateMultipartUploadRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline CreateMultipartUploadRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ ObjectCannedACL m_aCL;
+ bool m_aCLHasBeenSet;
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_cacheControl;
+ bool m_cacheControlHasBeenSet;
+
+ Aws::String m_contentDisposition;
+ bool m_contentDispositionHasBeenSet;
+
+ Aws::String m_contentEncoding;
+ bool m_contentEncodingHasBeenSet;
+
+ Aws::String m_contentLanguage;
+ bool m_contentLanguageHasBeenSet;
+
+ Aws::String m_contentType;
+ bool m_contentTypeHasBeenSet;
+
+ Aws::Utils::DateTime m_expires;
+ bool m_expiresHasBeenSet;
+
+ Aws::String m_grantFullControl;
+ bool m_grantFullControlHasBeenSet;
+
+ Aws::String m_grantRead;
+ bool m_grantReadHasBeenSet;
+
+ Aws::String m_grantReadACP;
+ bool m_grantReadACPHasBeenSet;
+
+ Aws::String m_grantWriteACP;
+ bool m_grantWriteACPHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_metadata;
+ bool m_metadataHasBeenSet;
+
+ ServerSideEncryption m_serverSideEncryption;
+ bool m_serverSideEncryptionHasBeenSet;
+
+ StorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+
+ Aws::String m_websiteRedirectLocation;
+ bool m_websiteRedirectLocationHasBeenSet;
+
+ Aws::String m_sSECustomerAlgorithm;
+ bool m_sSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_sSECustomerKey;
+ bool m_sSECustomerKeyHasBeenSet;
+
+ Aws::String m_sSECustomerKeyMD5;
+ bool m_sSECustomerKeyMD5HasBeenSet;
+
+ Aws::String m_sSEKMSKeyId;
+ bool m_sSEKMSKeyIdHasBeenSet;
+
+ Aws::String m_sSEKMSEncryptionContext;
+ bool m_sSEKMSEncryptionContextHasBeenSet;
+
+ bool m_bucketKeyEnabled;
+ bool m_bucketKeyEnabledHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_tagging;
+ bool m_taggingHasBeenSet;
+
+ ObjectLockMode m_objectLockMode;
+ bool m_objectLockModeHasBeenSet;
+
+ Aws::Utils::DateTime m_objectLockRetainUntilDate;
+ bool m_objectLockRetainUntilDateHasBeenSet;
+
+ ObjectLockLegalHoldStatus m_objectLockLegalHoldStatus;
+ bool m_objectLockLegalHoldStatusHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadResult.h
new file mode 100644
index 00000000000..f4692da0e81
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadResult.h
@@ -0,0 +1,687 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API CreateMultipartUploadResult
+ {
+ public:
+ CreateMultipartUploadResult();
+ CreateMultipartUploadResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ CreateMultipartUploadResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, the response includes this header. The header
+ * indicates when the initiated multipart upload becomes eligible for an abort
+ * operation. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">
+ * Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p>
+ * <p>The response also includes the <code>x-amz-abort-rule-id</code> header that
+ * provides the ID of the lifecycle configuration rule that defines this
+ * action.</p>
+ */
+ inline const Aws::Utils::DateTime& GetAbortDate() const{ return m_abortDate; }
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, the response includes this header. The header
+ * indicates when the initiated multipart upload becomes eligible for an abort
+ * operation. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">
+ * Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p>
+ * <p>The response also includes the <code>x-amz-abort-rule-id</code> header that
+ * provides the ID of the lifecycle configuration rule that defines this
+ * action.</p>
+ */
+ inline void SetAbortDate(const Aws::Utils::DateTime& value) { m_abortDate = value; }
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, the response includes this header. The header
+ * indicates when the initiated multipart upload becomes eligible for an abort
+ * operation. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">
+ * Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p>
+ * <p>The response also includes the <code>x-amz-abort-rule-id</code> header that
+ * provides the ID of the lifecycle configuration rule that defines this
+ * action.</p>
+ */
+ inline void SetAbortDate(Aws::Utils::DateTime&& value) { m_abortDate = std::move(value); }
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, the response includes this header. The header
+ * indicates when the initiated multipart upload becomes eligible for an abort
+ * operation. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">
+ * Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p>
+ * <p>The response also includes the <code>x-amz-abort-rule-id</code> header that
+ * provides the ID of the lifecycle configuration rule that defines this
+ * action.</p>
+ */
+ inline CreateMultipartUploadResult& WithAbortDate(const Aws::Utils::DateTime& value) { SetAbortDate(value); return *this;}
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, the response includes this header. The header
+ * indicates when the initiated multipart upload becomes eligible for an abort
+ * operation. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">
+ * Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p>
+ * <p>The response also includes the <code>x-amz-abort-rule-id</code> header that
+ * provides the ID of the lifecycle configuration rule that defines this
+ * action.</p>
+ */
+ inline CreateMultipartUploadResult& WithAbortDate(Aws::Utils::DateTime&& value) { SetAbortDate(std::move(value)); return *this;}
+
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies the applicable lifecycle configuration rule that defines the
+ * action to abort incomplete multipart uploads.</p>
+ */
+ inline const Aws::String& GetAbortRuleId() const{ return m_abortRuleId; }
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies the applicable lifecycle configuration rule that defines the
+ * action to abort incomplete multipart uploads.</p>
+ */
+ inline void SetAbortRuleId(const Aws::String& value) { m_abortRuleId = value; }
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies the applicable lifecycle configuration rule that defines the
+ * action to abort incomplete multipart uploads.</p>
+ */
+ inline void SetAbortRuleId(Aws::String&& value) { m_abortRuleId = std::move(value); }
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies the applicable lifecycle configuration rule that defines the
+ * action to abort incomplete multipart uploads.</p>
+ */
+ inline void SetAbortRuleId(const char* value) { m_abortRuleId.assign(value); }
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies the applicable lifecycle configuration rule that defines the
+ * action to abort incomplete multipart uploads.</p>
+ */
+ inline CreateMultipartUploadResult& WithAbortRuleId(const Aws::String& value) { SetAbortRuleId(value); return *this;}
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies the applicable lifecycle configuration rule that defines the
+ * action to abort incomplete multipart uploads.</p>
+ */
+ inline CreateMultipartUploadResult& WithAbortRuleId(Aws::String&& value) { SetAbortRuleId(std::move(value)); return *this;}
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies the applicable lifecycle configuration rule that defines the
+ * action to abort incomplete multipart uploads.</p>
+ */
+ inline CreateMultipartUploadResult& WithAbortRuleId(const char* value) { SetAbortRuleId(value); return *this;}
+
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CreateMultipartUploadResult& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CreateMultipartUploadResult& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline CreateMultipartUploadResult& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_key = value; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_key.assign(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline CreateMultipartUploadResult& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline CreateMultipartUploadResult& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline CreateMultipartUploadResult& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline const Aws::String& GetUploadId() const{ return m_uploadId; }
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline void SetUploadId(const Aws::String& value) { m_uploadId = value; }
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline void SetUploadId(Aws::String&& value) { m_uploadId = std::move(value); }
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline void SetUploadId(const char* value) { m_uploadId.assign(value); }
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline CreateMultipartUploadResult& WithUploadId(const Aws::String& value) { SetUploadId(value); return *this;}
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline CreateMultipartUploadResult& WithUploadId(Aws::String&& value) { SetUploadId(std::move(value)); return *this;}
+
+ /**
+ * <p>ID for the initiated multipart upload.</p>
+ */
+ inline CreateMultipartUploadResult& WithUploadId(const char* value) { SetUploadId(value); return *this;}
+
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline CreateMultipartUploadResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline CreateMultipartUploadResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContext = std::move(value); }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContext.assign(value); }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline CreateMultipartUploadResult& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline CreateMultipartUploadResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline CreateMultipartUploadResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline CreateMultipartUploadResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ Aws::Utils::DateTime m_abortDate;
+
+ Aws::String m_abortRuleId;
+
+ Aws::String m_bucket;
+
+ Aws::String m_key;
+
+ Aws::String m_uploadId;
+
+ ServerSideEncryption m_serverSideEncryption;
+
+ Aws::String m_sSECustomerAlgorithm;
+
+ Aws::String m_sSECustomerKeyMD5;
+
+ Aws::String m_sSEKMSKeyId;
+
+ Aws::String m_sSEKMSEncryptionContext;
+
+ bool m_bucketKeyEnabled;
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DefaultRetention.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DefaultRetention.h
new file mode 100644
index 00000000000..a8e3c5db657
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DefaultRetention.h
@@ -0,0 +1,142 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ObjectLockRetentionMode.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The container element for specifying the default Object Lock retention
+ * settings for new objects placed in the specified bucket.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DefaultRetention">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API DefaultRetention
+ {
+ public:
+ DefaultRetention();
+ DefaultRetention(const Aws::Utils::Xml::XmlNode& xmlNode);
+ DefaultRetention& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The default Object Lock retention mode you want to apply to new objects
+ * placed in the specified bucket.</p>
+ */
+ inline const ObjectLockRetentionMode& GetMode() const{ return m_mode; }
+
+ /**
+ * <p>The default Object Lock retention mode you want to apply to new objects
+ * placed in the specified bucket.</p>
+ */
+ inline bool ModeHasBeenSet() const { return m_modeHasBeenSet; }
+
+ /**
+ * <p>The default Object Lock retention mode you want to apply to new objects
+ * placed in the specified bucket.</p>
+ */
+ inline void SetMode(const ObjectLockRetentionMode& value) { m_modeHasBeenSet = true; m_mode = value; }
+
+ /**
+ * <p>The default Object Lock retention mode you want to apply to new objects
+ * placed in the specified bucket.</p>
+ */
+ inline void SetMode(ObjectLockRetentionMode&& value) { m_modeHasBeenSet = true; m_mode = std::move(value); }
+
+ /**
+ * <p>The default Object Lock retention mode you want to apply to new objects
+ * placed in the specified bucket.</p>
+ */
+ inline DefaultRetention& WithMode(const ObjectLockRetentionMode& value) { SetMode(value); return *this;}
+
+ /**
+ * <p>The default Object Lock retention mode you want to apply to new objects
+ * placed in the specified bucket.</p>
+ */
+ inline DefaultRetention& WithMode(ObjectLockRetentionMode&& value) { SetMode(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The number of days that you want to specify for the default retention
+ * period.</p>
+ */
+ inline int GetDays() const{ return m_days; }
+
+ /**
+ * <p>The number of days that you want to specify for the default retention
+ * period.</p>
+ */
+ inline bool DaysHasBeenSet() const { return m_daysHasBeenSet; }
+
+ /**
+ * <p>The number of days that you want to specify for the default retention
+ * period.</p>
+ */
+ inline void SetDays(int value) { m_daysHasBeenSet = true; m_days = value; }
+
+ /**
+ * <p>The number of days that you want to specify for the default retention
+ * period.</p>
+ */
+ inline DefaultRetention& WithDays(int value) { SetDays(value); return *this;}
+
+
+ /**
+ * <p>The number of years that you want to specify for the default retention
+ * period.</p>
+ */
+ inline int GetYears() const{ return m_years; }
+
+ /**
+ * <p>The number of years that you want to specify for the default retention
+ * period.</p>
+ */
+ inline bool YearsHasBeenSet() const { return m_yearsHasBeenSet; }
+
+ /**
+ * <p>The number of years that you want to specify for the default retention
+ * period.</p>
+ */
+ inline void SetYears(int value) { m_yearsHasBeenSet = true; m_years = value; }
+
+ /**
+ * <p>The number of years that you want to specify for the default retention
+ * period.</p>
+ */
+ inline DefaultRetention& WithYears(int value) { SetYears(value); return *this;}
+
+ private:
+
+ ObjectLockRetentionMode m_mode;
+ bool m_modeHasBeenSet;
+
+ int m_days;
+ bool m_daysHasBeenSet;
+
+ int m_years;
+ bool m_yearsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Delete.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Delete.h
new file mode 100644
index 00000000000..c40ac3062a9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Delete.h
@@ -0,0 +1,117 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/ObjectIdentifier.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for the objects to delete.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Delete">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Delete
+ {
+ public:
+ Delete();
+ Delete(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Delete& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The objects to delete.</p>
+ */
+ inline const Aws::Vector<ObjectIdentifier>& GetObjects() const{ return m_objects; }
+
+ /**
+ * <p>The objects to delete.</p>
+ */
+ inline bool ObjectsHasBeenSet() const { return m_objectsHasBeenSet; }
+
+ /**
+ * <p>The objects to delete.</p>
+ */
+ inline void SetObjects(const Aws::Vector<ObjectIdentifier>& value) { m_objectsHasBeenSet = true; m_objects = value; }
+
+ /**
+ * <p>The objects to delete.</p>
+ */
+ inline void SetObjects(Aws::Vector<ObjectIdentifier>&& value) { m_objectsHasBeenSet = true; m_objects = std::move(value); }
+
+ /**
+ * <p>The objects to delete.</p>
+ */
+ inline Delete& WithObjects(const Aws::Vector<ObjectIdentifier>& value) { SetObjects(value); return *this;}
+
+ /**
+ * <p>The objects to delete.</p>
+ */
+ inline Delete& WithObjects(Aws::Vector<ObjectIdentifier>&& value) { SetObjects(std::move(value)); return *this;}
+
+ /**
+ * <p>The objects to delete.</p>
+ */
+ inline Delete& AddObjects(const ObjectIdentifier& value) { m_objectsHasBeenSet = true; m_objects.push_back(value); return *this; }
+
+ /**
+ * <p>The objects to delete.</p>
+ */
+ inline Delete& AddObjects(ObjectIdentifier&& value) { m_objectsHasBeenSet = true; m_objects.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Element to enable quiet mode for the request. When you add this element, you
+ * must set its value to true.</p>
+ */
+ inline bool GetQuiet() const{ return m_quiet; }
+
+ /**
+ * <p>Element to enable quiet mode for the request. When you add this element, you
+ * must set its value to true.</p>
+ */
+ inline bool QuietHasBeenSet() const { return m_quietHasBeenSet; }
+
+ /**
+ * <p>Element to enable quiet mode for the request. When you add this element, you
+ * must set its value to true.</p>
+ */
+ inline void SetQuiet(bool value) { m_quietHasBeenSet = true; m_quiet = value; }
+
+ /**
+ * <p>Element to enable quiet mode for the request. When you add this element, you
+ * must set its value to true.</p>
+ */
+ inline Delete& WithQuiet(bool value) { SetQuiet(value); return *this;}
+
+ private:
+
+ Aws::Vector<ObjectIdentifier> m_objects;
+ bool m_objectsHasBeenSet;
+
+ bool m_quiet;
+ bool m_quietHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketAnalyticsConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketAnalyticsConfigurationRequest.h
new file mode 100644
index 00000000000..c1c6240f430
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketAnalyticsConfigurationRequest.h
@@ -0,0 +1,239 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketAnalyticsConfigurationRequest : public S3Request
+ {
+ public:
+ DeleteBucketAnalyticsConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketAnalyticsConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is deleted.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is deleted.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is deleted.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is deleted.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is deleted.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is deleted.</p>
+ */
+ inline DeleteBucketAnalyticsConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is deleted.</p>
+ */
+ inline DeleteBucketAnalyticsConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is deleted.</p>
+ */
+ inline DeleteBucketAnalyticsConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline DeleteBucketAnalyticsConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline DeleteBucketAnalyticsConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline DeleteBucketAnalyticsConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketAnalyticsConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketAnalyticsConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketAnalyticsConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketAnalyticsConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketAnalyticsConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketCorsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketCorsRequest.h
new file mode 100644
index 00000000000..6fecd43b08d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketCorsRequest.h
@@ -0,0 +1,203 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketCorsRequest : public S3Request
+ {
+ public:
+ DeleteBucketCorsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketCors"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>Specifies the bucket whose <code>cors</code> configuration is being
+ * deleted.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>Specifies the bucket whose <code>cors</code> configuration is being
+ * deleted.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>Specifies the bucket whose <code>cors</code> configuration is being
+ * deleted.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>Specifies the bucket whose <code>cors</code> configuration is being
+ * deleted.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>Specifies the bucket whose <code>cors</code> configuration is being
+ * deleted.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>Specifies the bucket whose <code>cors</code> configuration is being
+ * deleted.</p>
+ */
+ inline DeleteBucketCorsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>Specifies the bucket whose <code>cors</code> configuration is being
+ * deleted.</p>
+ */
+ inline DeleteBucketCorsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the bucket whose <code>cors</code> configuration is being
+ * deleted.</p>
+ */
+ inline DeleteBucketCorsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketCorsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketCorsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketCorsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketCorsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketCorsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketCorsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketCorsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketCorsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketCorsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketCorsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketCorsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketCorsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketEncryptionRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketEncryptionRequest.h
new file mode 100644
index 00000000000..38740e4b41b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketEncryptionRequest.h
@@ -0,0 +1,203 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketEncryptionRequest : public S3Request
+ {
+ public:
+ DeleteBucketEncryptionRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketEncryption"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the server-side encryption configuration to
+ * delete.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the server-side encryption configuration to
+ * delete.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the server-side encryption configuration to
+ * delete.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the server-side encryption configuration to
+ * delete.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the server-side encryption configuration to
+ * delete.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the server-side encryption configuration to
+ * delete.</p>
+ */
+ inline DeleteBucketEncryptionRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the server-side encryption configuration to
+ * delete.</p>
+ */
+ inline DeleteBucketEncryptionRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the server-side encryption configuration to
+ * delete.</p>
+ */
+ inline DeleteBucketEncryptionRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketEncryptionRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketEncryptionRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketEncryptionRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketEncryptionRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketEncryptionRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketEncryptionRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketEncryptionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketEncryptionRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketEncryptionRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketEncryptionRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketEncryptionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketEncryptionRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketIntelligentTieringConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketIntelligentTieringConfigurationRequest.h
new file mode 100644
index 00000000000..7beaad6ec90
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketIntelligentTieringConfigurationRequest.h
@@ -0,0 +1,185 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketIntelligentTieringConfigurationRequest : public S3Request
+ {
+ public:
+ DeleteBucketIntelligentTieringConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketIntelligentTieringConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline DeleteBucketIntelligentTieringConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline DeleteBucketIntelligentTieringConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline DeleteBucketIntelligentTieringConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline DeleteBucketIntelligentTieringConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline DeleteBucketIntelligentTieringConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline DeleteBucketIntelligentTieringConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketIntelligentTieringConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketIntelligentTieringConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketInventoryConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketInventoryConfigurationRequest.h
new file mode 100644
index 00000000000..09d13f4a8b7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketInventoryConfigurationRequest.h
@@ -0,0 +1,239 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketInventoryConfigurationRequest : public S3Request
+ {
+ public:
+ DeleteBucketInventoryConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketInventoryConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to delete.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to delete.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to delete.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to delete.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to delete.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to delete.</p>
+ */
+ inline DeleteBucketInventoryConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to delete.</p>
+ */
+ inline DeleteBucketInventoryConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to delete.</p>
+ */
+ inline DeleteBucketInventoryConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline DeleteBucketInventoryConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline DeleteBucketInventoryConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline DeleteBucketInventoryConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketInventoryConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketInventoryConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketInventoryConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketInventoryConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketInventoryConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketLifecycleRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketLifecycleRequest.h
new file mode 100644
index 00000000000..758f5231537
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketLifecycleRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketLifecycleRequest : public S3Request
+ {
+ public:
+ DeleteBucketLifecycleRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketLifecycle"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name of the lifecycle to delete.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name of the lifecycle to delete.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name of the lifecycle to delete.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name of the lifecycle to delete.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name of the lifecycle to delete.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name of the lifecycle to delete.</p>
+ */
+ inline DeleteBucketLifecycleRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name of the lifecycle to delete.</p>
+ */
+ inline DeleteBucketLifecycleRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name of the lifecycle to delete.</p>
+ */
+ inline DeleteBucketLifecycleRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketLifecycleRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketLifecycleRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketLifecycleRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketLifecycleRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketLifecycleRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketLifecycleRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketLifecycleRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketLifecycleRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketLifecycleRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketLifecycleRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketLifecycleRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketLifecycleRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketMetricsConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketMetricsConfigurationRequest.h
new file mode 100644
index 00000000000..18bbf7cdb61
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketMetricsConfigurationRequest.h
@@ -0,0 +1,239 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketMetricsConfigurationRequest : public S3Request
+ {
+ public:
+ DeleteBucketMetricsConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketMetricsConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to delete.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to delete.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to delete.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to delete.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to delete.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to delete.</p>
+ */
+ inline DeleteBucketMetricsConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to delete.</p>
+ */
+ inline DeleteBucketMetricsConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to delete.</p>
+ */
+ inline DeleteBucketMetricsConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline DeleteBucketMetricsConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline DeleteBucketMetricsConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline DeleteBucketMetricsConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketMetricsConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketMetricsConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketMetricsConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketMetricsConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketMetricsConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketOwnershipControlsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketOwnershipControlsRequest.h
new file mode 100644
index 00000000000..69f529f94b1
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketOwnershipControlsRequest.h
@@ -0,0 +1,203 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketOwnershipControlsRequest : public S3Request
+ {
+ public:
+ DeleteBucketOwnershipControlsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketOwnershipControls"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>OwnershipControls</code> you want to delete.
+ * </p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>OwnershipControls</code> you want to delete.
+ * </p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>OwnershipControls</code> you want to delete.
+ * </p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>OwnershipControls</code> you want to delete.
+ * </p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>OwnershipControls</code> you want to delete.
+ * </p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>OwnershipControls</code> you want to delete.
+ * </p>
+ */
+ inline DeleteBucketOwnershipControlsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>OwnershipControls</code> you want to delete.
+ * </p>
+ */
+ inline DeleteBucketOwnershipControlsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>OwnershipControls</code> you want to delete.
+ * </p>
+ */
+ inline DeleteBucketOwnershipControlsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketOwnershipControlsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketOwnershipControlsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketOwnershipControlsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketOwnershipControlsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketOwnershipControlsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketPolicyRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketPolicyRequest.h
new file mode 100644
index 00000000000..3b2dfe59762
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketPolicyRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketPolicyRequest : public S3Request
+ {
+ public:
+ DeleteBucketPolicyRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketPolicy"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline DeleteBucketPolicyRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline DeleteBucketPolicyRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline DeleteBucketPolicyRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketPolicyRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketPolicyRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketPolicyRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketPolicyRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketPolicyRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketPolicyRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketPolicyRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketPolicyRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketPolicyRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketPolicyRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketPolicyRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketPolicyRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketReplicationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketReplicationRequest.h
new file mode 100644
index 00000000000..311a97bdeae
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketReplicationRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketReplicationRequest : public S3Request
+ {
+ public:
+ DeleteBucketReplicationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketReplication"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p> The bucket name. </p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p> The bucket name. </p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p> The bucket name. </p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p> The bucket name. </p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p> The bucket name. </p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p> The bucket name. </p>
+ */
+ inline DeleteBucketReplicationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p> The bucket name. </p>
+ */
+ inline DeleteBucketReplicationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p> The bucket name. </p>
+ */
+ inline DeleteBucketReplicationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketReplicationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketReplicationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketReplicationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketReplicationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketReplicationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketReplicationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketReplicationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketReplicationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketReplicationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketReplicationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketReplicationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketReplicationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketRequest.h
new file mode 100644
index 00000000000..08950393ce7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketRequest : public S3Request
+ {
+ public:
+ DeleteBucketRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucket"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>Specifies the bucket being deleted.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>Specifies the bucket being deleted.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>Specifies the bucket being deleted.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>Specifies the bucket being deleted.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>Specifies the bucket being deleted.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>Specifies the bucket being deleted.</p>
+ */
+ inline DeleteBucketRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>Specifies the bucket being deleted.</p>
+ */
+ inline DeleteBucketRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the bucket being deleted.</p>
+ */
+ inline DeleteBucketRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketTaggingRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketTaggingRequest.h
new file mode 100644
index 00000000000..7640c5bac27
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketTaggingRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketTaggingRequest : public S3Request
+ {
+ public:
+ DeleteBucketTaggingRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketTagging"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket that has the tag set to be removed.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket that has the tag set to be removed.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket that has the tag set to be removed.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket that has the tag set to be removed.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket that has the tag set to be removed.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket that has the tag set to be removed.</p>
+ */
+ inline DeleteBucketTaggingRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket that has the tag set to be removed.</p>
+ */
+ inline DeleteBucketTaggingRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket that has the tag set to be removed.</p>
+ */
+ inline DeleteBucketTaggingRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketTaggingRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketTaggingRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketTaggingRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketTaggingRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketTaggingRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketTaggingRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketTaggingRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketWebsiteRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketWebsiteRequest.h
new file mode 100644
index 00000000000..36e31f18655
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketWebsiteRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteBucketWebsiteRequest : public S3Request
+ {
+ public:
+ DeleteBucketWebsiteRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteBucketWebsite"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name for which you want to remove the website configuration. </p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name for which you want to remove the website configuration. </p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name for which you want to remove the website configuration. </p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name for which you want to remove the website configuration. </p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name for which you want to remove the website configuration. </p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name for which you want to remove the website configuration. </p>
+ */
+ inline DeleteBucketWebsiteRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name for which you want to remove the website configuration. </p>
+ */
+ inline DeleteBucketWebsiteRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name for which you want to remove the website configuration. </p>
+ */
+ inline DeleteBucketWebsiteRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketWebsiteRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketWebsiteRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteBucketWebsiteRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteBucketWebsiteRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteBucketWebsiteRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteBucketWebsiteRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteBucketWebsiteRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketWebsiteRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketWebsiteRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteBucketWebsiteRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteBucketWebsiteRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteBucketWebsiteRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerEntry.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerEntry.h
new file mode 100644
index 00000000000..60ee780db65
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerEntry.h
@@ -0,0 +1,230 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Owner.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Information about the delete marker.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteMarkerEntry">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API DeleteMarkerEntry
+ {
+ public:
+ DeleteMarkerEntry();
+ DeleteMarkerEntry(const Aws::Utils::Xml::XmlNode& xmlNode);
+ DeleteMarkerEntry& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The account that created the delete marker.&gt;</p>
+ */
+ inline const Owner& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p>The account that created the delete marker.&gt;</p>
+ */
+ inline bool OwnerHasBeenSet() const { return m_ownerHasBeenSet; }
+
+ /**
+ * <p>The account that created the delete marker.&gt;</p>
+ */
+ inline void SetOwner(const Owner& value) { m_ownerHasBeenSet = true; m_owner = value; }
+
+ /**
+ * <p>The account that created the delete marker.&gt;</p>
+ */
+ inline void SetOwner(Owner&& value) { m_ownerHasBeenSet = true; m_owner = std::move(value); }
+
+ /**
+ * <p>The account that created the delete marker.&gt;</p>
+ */
+ inline DeleteMarkerEntry& WithOwner(const Owner& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p>The account that created the delete marker.&gt;</p>
+ */
+ inline DeleteMarkerEntry& WithOwner(Owner&& value) { SetOwner(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline DeleteMarkerEntry& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline DeleteMarkerEntry& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline DeleteMarkerEntry& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline DeleteMarkerEntry& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline DeleteMarkerEntry& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline DeleteMarkerEntry& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether the object is (true) or is not (false) the latest version
+ * of an object.</p>
+ */
+ inline bool GetIsLatest() const{ return m_isLatest; }
+
+ /**
+ * <p>Specifies whether the object is (true) or is not (false) the latest version
+ * of an object.</p>
+ */
+ inline bool IsLatestHasBeenSet() const { return m_isLatestHasBeenSet; }
+
+ /**
+ * <p>Specifies whether the object is (true) or is not (false) the latest version
+ * of an object.</p>
+ */
+ inline void SetIsLatest(bool value) { m_isLatestHasBeenSet = true; m_isLatest = value; }
+
+ /**
+ * <p>Specifies whether the object is (true) or is not (false) the latest version
+ * of an object.</p>
+ */
+ inline DeleteMarkerEntry& WithIsLatest(bool value) { SetIsLatest(value); return *this;}
+
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline const Aws::Utils::DateTime& GetLastModified() const{ return m_lastModified; }
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline bool LastModifiedHasBeenSet() const { return m_lastModifiedHasBeenSet; }
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline void SetLastModified(const Aws::Utils::DateTime& value) { m_lastModifiedHasBeenSet = true; m_lastModified = value; }
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline void SetLastModified(Aws::Utils::DateTime&& value) { m_lastModifiedHasBeenSet = true; m_lastModified = std::move(value); }
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline DeleteMarkerEntry& WithLastModified(const Aws::Utils::DateTime& value) { SetLastModified(value); return *this;}
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline DeleteMarkerEntry& WithLastModified(Aws::Utils::DateTime&& value) { SetLastModified(std::move(value)); return *this;}
+
+ private:
+
+ Owner m_owner;
+ bool m_ownerHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ bool m_isLatest;
+ bool m_isLatestHasBeenSet;
+
+ Aws::Utils::DateTime m_lastModified;
+ bool m_lastModifiedHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerReplication.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerReplication.h
new file mode 100644
index 00000000000..fdaecb83463
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerReplication.h
@@ -0,0 +1,99 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/DeleteMarkerReplicationStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates delete markers. If you specify a
+ * <code>Filter</code> in your replication configuration, you must also include a
+ * <code>DeleteMarkerReplication</code> element. If your <code>Filter</code>
+ * includes a <code>Tag</code> element, the <code>DeleteMarkerReplication</code>
+ * <code>Status</code> must be set to Disabled, because Amazon S3 does not support
+ * replicating delete markers for tag-based rules. For an example configuration,
+ * see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config">Basic
+ * Rule Configuration</a>. </p> <p>For more information about delete marker
+ * replication, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html">Basic
+ * Rule Configuration</a>. </p> <p>If you are using an earlier version of
+ * the replication configuration, Amazon S3 handles replication of delete markers
+ * differently. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations">Backward
+ * Compatibility</a>.</p> <p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteMarkerReplication">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API DeleteMarkerReplication
+ {
+ public:
+ DeleteMarkerReplication();
+ DeleteMarkerReplication(const Aws::Utils::Xml::XmlNode& xmlNode);
+ DeleteMarkerReplication& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Indicates whether to replicate delete markers.</p> <p>Indicates
+ * whether to replicate delete markers.</p>
+ */
+ inline const DeleteMarkerReplicationStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>Indicates whether to replicate delete markers.</p> <p>Indicates
+ * whether to replicate delete markers.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>Indicates whether to replicate delete markers.</p> <p>Indicates
+ * whether to replicate delete markers.</p>
+ */
+ inline void SetStatus(const DeleteMarkerReplicationStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>Indicates whether to replicate delete markers.</p> <p>Indicates
+ * whether to replicate delete markers.</p>
+ */
+ inline void SetStatus(DeleteMarkerReplicationStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>Indicates whether to replicate delete markers.</p> <p>Indicates
+ * whether to replicate delete markers.</p>
+ */
+ inline DeleteMarkerReplication& WithStatus(const DeleteMarkerReplicationStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>Indicates whether to replicate delete markers.</p> <p>Indicates
+ * whether to replicate delete markers.</p>
+ */
+ inline DeleteMarkerReplication& WithStatus(DeleteMarkerReplicationStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+ private:
+
+ DeleteMarkerReplicationStatus m_status;
+ bool m_statusHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerReplicationStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerReplicationStatus.h
new file mode 100644
index 00000000000..f26f0df2ac5
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteMarkerReplicationStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class DeleteMarkerReplicationStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace DeleteMarkerReplicationStatusMapper
+{
+AWS_S3_API DeleteMarkerReplicationStatus GetDeleteMarkerReplicationStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForDeleteMarkerReplicationStatus(DeleteMarkerReplicationStatus value);
+} // namespace DeleteMarkerReplicationStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectRequest.h
new file mode 100644
index 00000000000..fbed182fb6b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectRequest.h
@@ -0,0 +1,546 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteObjectRequest : public S3Request
+ {
+ public:
+ DeleteObjectRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteObject"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name of the bucket containing the object. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name of the bucket containing the object. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name of the bucket containing the object. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name of the bucket containing the object. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name of the bucket containing the object. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name of the bucket containing the object. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline DeleteObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name of the bucket containing the object. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline DeleteObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name of the bucket containing the object. </p> <p>When using this
+ * API with an access point, you must direct requests to the access point hostname.
+ * The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline DeleteObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline DeleteObjectRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline DeleteObjectRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline DeleteObjectRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline const Aws::String& GetMFA() const{ return m_mFA; }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline bool MFAHasBeenSet() const { return m_mFAHasBeenSet; }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline void SetMFA(const Aws::String& value) { m_mFAHasBeenSet = true; m_mFA = value; }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline void SetMFA(Aws::String&& value) { m_mFAHasBeenSet = true; m_mFA = std::move(value); }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline void SetMFA(const char* value) { m_mFAHasBeenSet = true; m_mFA.assign(value); }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline DeleteObjectRequest& WithMFA(const Aws::String& value) { SetMFA(value); return *this;}
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline DeleteObjectRequest& WithMFA(Aws::String&& value) { SetMFA(std::move(value)); return *this;}
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline DeleteObjectRequest& WithMFA(const char* value) { SetMFA(value); return *this;}
+
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline DeleteObjectRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline DeleteObjectRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline DeleteObjectRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline DeleteObjectRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline DeleteObjectRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Indicates whether S3 Object Lock should bypass Governance-mode restrictions
+ * to process this operation.</p>
+ */
+ inline bool GetBypassGovernanceRetention() const{ return m_bypassGovernanceRetention; }
+
+ /**
+ * <p>Indicates whether S3 Object Lock should bypass Governance-mode restrictions
+ * to process this operation.</p>
+ */
+ inline bool BypassGovernanceRetentionHasBeenSet() const { return m_bypassGovernanceRetentionHasBeenSet; }
+
+ /**
+ * <p>Indicates whether S3 Object Lock should bypass Governance-mode restrictions
+ * to process this operation.</p>
+ */
+ inline void SetBypassGovernanceRetention(bool value) { m_bypassGovernanceRetentionHasBeenSet = true; m_bypassGovernanceRetention = value; }
+
+ /**
+ * <p>Indicates whether S3 Object Lock should bypass Governance-mode restrictions
+ * to process this operation.</p>
+ */
+ inline DeleteObjectRequest& WithBypassGovernanceRetention(bool value) { SetBypassGovernanceRetention(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteObjectRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteObjectRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteObjectRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteObjectRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteObjectRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteObjectRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteObjectRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_mFA;
+ bool m_mFAHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ bool m_bypassGovernanceRetention;
+ bool m_bypassGovernanceRetentionHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectResult.h
new file mode 100644
index 00000000000..15a886bf11e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectResult.h
@@ -0,0 +1,124 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API DeleteObjectResult
+ {
+ public:
+ DeleteObjectResult();
+ DeleteObjectResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ DeleteObjectResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Specifies whether the versioned object that was permanently deleted was
+ * (true) or was not (false) a delete marker.</p>
+ */
+ inline bool GetDeleteMarker() const{ return m_deleteMarker; }
+
+ /**
+ * <p>Specifies whether the versioned object that was permanently deleted was
+ * (true) or was not (false) a delete marker.</p>
+ */
+ inline void SetDeleteMarker(bool value) { m_deleteMarker = value; }
+
+ /**
+ * <p>Specifies whether the versioned object that was permanently deleted was
+ * (true) or was not (false) a delete marker.</p>
+ */
+ inline DeleteObjectResult& WithDeleteMarker(bool value) { SetDeleteMarker(value); return *this;}
+
+
+ /**
+ * <p>Returns the version ID of the delete marker created as a result of the DELETE
+ * operation.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>Returns the version ID of the delete marker created as a result of the DELETE
+ * operation.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionId = value; }
+
+ /**
+ * <p>Returns the version ID of the delete marker created as a result of the DELETE
+ * operation.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionId = std::move(value); }
+
+ /**
+ * <p>Returns the version ID of the delete marker created as a result of the DELETE
+ * operation.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionId.assign(value); }
+
+ /**
+ * <p>Returns the version ID of the delete marker created as a result of the DELETE
+ * operation.</p>
+ */
+ inline DeleteObjectResult& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>Returns the version ID of the delete marker created as a result of the DELETE
+ * operation.</p>
+ */
+ inline DeleteObjectResult& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>Returns the version ID of the delete marker created as a result of the DELETE
+ * operation.</p>
+ */
+ inline DeleteObjectResult& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline DeleteObjectResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline DeleteObjectResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ bool m_deleteMarker;
+
+ Aws::String m_versionId;
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectTaggingRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectTaggingRequest.h
new file mode 100644
index 00000000000..5122ee920ff
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectTaggingRequest.h
@@ -0,0 +1,427 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteObjectTaggingRequest : public S3Request
+ {
+ public:
+ DeleteObjectTaggingRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteObjectTagging"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name containing the objects from which to remove the tags. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name containing the objects from which to remove the tags. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name containing the objects from which to remove the tags. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name containing the objects from which to remove the tags. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name containing the objects from which to remove the tags. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name containing the objects from which to remove the tags. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name containing the objects from which to remove the tags. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name containing the objects from which to remove the tags. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The versionId of the object that the tag-set will be removed from.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be removed from.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be removed from.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be removed from.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be removed from.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be removed from.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The versionId of the object that the tag-set will be removed from.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The versionId of the object that the tag-set will be removed from.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteObjectTaggingRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteObjectTaggingRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteObjectTaggingRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteObjectTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteObjectTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteObjectTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteObjectTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteObjectTaggingRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteObjectTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteObjectTaggingRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectTaggingResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectTaggingResult.h
new file mode 100644
index 00000000000..103267f2217
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectTaggingResult.h
@@ -0,0 +1,77 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API DeleteObjectTaggingResult
+ {
+ public:
+ DeleteObjectTaggingResult();
+ DeleteObjectTaggingResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ DeleteObjectTaggingResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The versionId of the object the tag-set was removed from.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The versionId of the object the tag-set was removed from.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionId = value; }
+
+ /**
+ * <p>The versionId of the object the tag-set was removed from.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionId = std::move(value); }
+
+ /**
+ * <p>The versionId of the object the tag-set was removed from.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionId.assign(value); }
+
+ /**
+ * <p>The versionId of the object the tag-set was removed from.</p>
+ */
+ inline DeleteObjectTaggingResult& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The versionId of the object the tag-set was removed from.</p>
+ */
+ inline DeleteObjectTaggingResult& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The versionId of the object the tag-set was removed from.</p>
+ */
+ inline DeleteObjectTaggingResult& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+ private:
+
+ Aws::String m_versionId;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectsRequest.h
new file mode 100644
index 00000000000..fa8b812827d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectsRequest.h
@@ -0,0 +1,499 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Delete.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeleteObjectsRequest : public S3Request
+ {
+ public:
+ DeleteObjectsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeleteObjects"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The bucket name containing the objects to delete. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name containing the objects to delete. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name containing the objects to delete. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name containing the objects to delete. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name containing the objects to delete. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name containing the objects to delete. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline DeleteObjectsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name containing the objects to delete. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline DeleteObjectsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name containing the objects to delete. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline DeleteObjectsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline const Delete& GetDelete() const{ return m_delete; }
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline bool DeleteHasBeenSet() const { return m_deleteHasBeenSet; }
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline void SetDelete(const Delete& value) { m_deleteHasBeenSet = true; m_delete = value; }
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline void SetDelete(Delete&& value) { m_deleteHasBeenSet = true; m_delete = std::move(value); }
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline DeleteObjectsRequest& WithDelete(const Delete& value) { SetDelete(value); return *this;}
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline DeleteObjectsRequest& WithDelete(Delete&& value) { SetDelete(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline const Aws::String& GetMFA() const{ return m_mFA; }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline bool MFAHasBeenSet() const { return m_mFAHasBeenSet; }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline void SetMFA(const Aws::String& value) { m_mFAHasBeenSet = true; m_mFA = value; }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline void SetMFA(Aws::String&& value) { m_mFAHasBeenSet = true; m_mFA = std::move(value); }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline void SetMFA(const char* value) { m_mFAHasBeenSet = true; m_mFA.assign(value); }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline DeleteObjectsRequest& WithMFA(const Aws::String& value) { SetMFA(value); return *this;}
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline DeleteObjectsRequest& WithMFA(Aws::String&& value) { SetMFA(std::move(value)); return *this;}
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device. Required to
+ * permanently delete a versioned object if versioning is configured with MFA
+ * delete enabled.</p>
+ */
+ inline DeleteObjectsRequest& WithMFA(const char* value) { SetMFA(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline DeleteObjectsRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline DeleteObjectsRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether you want to delete this object even if it has a
+ * Governance-type Object Lock in place. You must have sufficient permissions to
+ * perform this operation.</p>
+ */
+ inline bool GetBypassGovernanceRetention() const{ return m_bypassGovernanceRetention; }
+
+ /**
+ * <p>Specifies whether you want to delete this object even if it has a
+ * Governance-type Object Lock in place. You must have sufficient permissions to
+ * perform this operation.</p>
+ */
+ inline bool BypassGovernanceRetentionHasBeenSet() const { return m_bypassGovernanceRetentionHasBeenSet; }
+
+ /**
+ * <p>Specifies whether you want to delete this object even if it has a
+ * Governance-type Object Lock in place. You must have sufficient permissions to
+ * perform this operation.</p>
+ */
+ inline void SetBypassGovernanceRetention(bool value) { m_bypassGovernanceRetentionHasBeenSet = true; m_bypassGovernanceRetention = value; }
+
+ /**
+ * <p>Specifies whether you want to delete this object even if it has a
+ * Governance-type Object Lock in place. You must have sufficient permissions to
+ * perform this operation.</p>
+ */
+ inline DeleteObjectsRequest& WithBypassGovernanceRetention(bool value) { SetBypassGovernanceRetention(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteObjectsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteObjectsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeleteObjectsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeleteObjectsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeleteObjectsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeleteObjectsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeleteObjectsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteObjectsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteObjectsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeleteObjectsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeleteObjectsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeleteObjectsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Delete m_delete;
+ bool m_deleteHasBeenSet;
+
+ Aws::String m_mFA;
+ bool m_mFAHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ bool m_bypassGovernanceRetention;
+ bool m_bypassGovernanceRetentionHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectsResult.h
new file mode 100644
index 00000000000..83c8863f5ec
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeleteObjectsResult.h
@@ -0,0 +1,150 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <aws/s3/model/DeletedObject.h>
+#include <aws/s3/model/Error.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API DeleteObjectsResult
+ {
+ public:
+ DeleteObjectsResult();
+ DeleteObjectsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ DeleteObjectsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Container element for a successful delete. It identifies the object that was
+ * successfully deleted.</p>
+ */
+ inline const Aws::Vector<DeletedObject>& GetDeleted() const{ return m_deleted; }
+
+ /**
+ * <p>Container element for a successful delete. It identifies the object that was
+ * successfully deleted.</p>
+ */
+ inline void SetDeleted(const Aws::Vector<DeletedObject>& value) { m_deleted = value; }
+
+ /**
+ * <p>Container element for a successful delete. It identifies the object that was
+ * successfully deleted.</p>
+ */
+ inline void SetDeleted(Aws::Vector<DeletedObject>&& value) { m_deleted = std::move(value); }
+
+ /**
+ * <p>Container element for a successful delete. It identifies the object that was
+ * successfully deleted.</p>
+ */
+ inline DeleteObjectsResult& WithDeleted(const Aws::Vector<DeletedObject>& value) { SetDeleted(value); return *this;}
+
+ /**
+ * <p>Container element for a successful delete. It identifies the object that was
+ * successfully deleted.</p>
+ */
+ inline DeleteObjectsResult& WithDeleted(Aws::Vector<DeletedObject>&& value) { SetDeleted(std::move(value)); return *this;}
+
+ /**
+ * <p>Container element for a successful delete. It identifies the object that was
+ * successfully deleted.</p>
+ */
+ inline DeleteObjectsResult& AddDeleted(const DeletedObject& value) { m_deleted.push_back(value); return *this; }
+
+ /**
+ * <p>Container element for a successful delete. It identifies the object that was
+ * successfully deleted.</p>
+ */
+ inline DeleteObjectsResult& AddDeleted(DeletedObject&& value) { m_deleted.push_back(std::move(value)); return *this; }
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline DeleteObjectsResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline DeleteObjectsResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Container for a failed delete operation that describes the object that Amazon
+ * S3 attempted to delete and the error it encountered.</p>
+ */
+ inline const Aws::Vector<Error>& GetErrors() const{ return m_errors; }
+
+ /**
+ * <p>Container for a failed delete operation that describes the object that Amazon
+ * S3 attempted to delete and the error it encountered.</p>
+ */
+ inline void SetErrors(const Aws::Vector<Error>& value) { m_errors = value; }
+
+ /**
+ * <p>Container for a failed delete operation that describes the object that Amazon
+ * S3 attempted to delete and the error it encountered.</p>
+ */
+ inline void SetErrors(Aws::Vector<Error>&& value) { m_errors = std::move(value); }
+
+ /**
+ * <p>Container for a failed delete operation that describes the object that Amazon
+ * S3 attempted to delete and the error it encountered.</p>
+ */
+ inline DeleteObjectsResult& WithErrors(const Aws::Vector<Error>& value) { SetErrors(value); return *this;}
+
+ /**
+ * <p>Container for a failed delete operation that describes the object that Amazon
+ * S3 attempted to delete and the error it encountered.</p>
+ */
+ inline DeleteObjectsResult& WithErrors(Aws::Vector<Error>&& value) { SetErrors(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for a failed delete operation that describes the object that Amazon
+ * S3 attempted to delete and the error it encountered.</p>
+ */
+ inline DeleteObjectsResult& AddErrors(const Error& value) { m_errors.push_back(value); return *this; }
+
+ /**
+ * <p>Container for a failed delete operation that describes the object that Amazon
+ * S3 attempted to delete and the error it encountered.</p>
+ */
+ inline DeleteObjectsResult& AddErrors(Error&& value) { m_errors.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<DeletedObject> m_deleted;
+
+ RequestCharged m_requestCharged;
+
+ Aws::Vector<Error> m_errors;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeletePublicAccessBlockRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeletePublicAccessBlockRequest.h
new file mode 100644
index 00000000000..fd8650c5a1d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeletePublicAccessBlockRequest.h
@@ -0,0 +1,203 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API DeletePublicAccessBlockRequest : public S3Request
+ {
+ public:
+ DeletePublicAccessBlockRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "DeletePublicAccessBlock"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>PublicAccessBlock</code> configuration you
+ * want to delete. </p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>PublicAccessBlock</code> configuration you
+ * want to delete. </p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>PublicAccessBlock</code> configuration you
+ * want to delete. </p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>PublicAccessBlock</code> configuration you
+ * want to delete. </p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>PublicAccessBlock</code> configuration you
+ * want to delete. </p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>PublicAccessBlock</code> configuration you
+ * want to delete. </p>
+ */
+ inline DeletePublicAccessBlockRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>PublicAccessBlock</code> configuration you
+ * want to delete. </p>
+ */
+ inline DeletePublicAccessBlockRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon S3 bucket whose <code>PublicAccessBlock</code> configuration you
+ * want to delete. </p>
+ */
+ inline DeletePublicAccessBlockRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeletePublicAccessBlockRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeletePublicAccessBlockRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline DeletePublicAccessBlockRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline DeletePublicAccessBlockRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline DeletePublicAccessBlockRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline DeletePublicAccessBlockRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline DeletePublicAccessBlockRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeletePublicAccessBlockRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeletePublicAccessBlockRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline DeletePublicAccessBlockRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline DeletePublicAccessBlockRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline DeletePublicAccessBlockRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeletedObject.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeletedObject.h
new file mode 100644
index 00000000000..72f1b97e855
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/DeletedObject.h
@@ -0,0 +1,224 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Information about the deleted object.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletedObject">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API DeletedObject
+ {
+ public:
+ DeletedObject();
+ DeletedObject(const Aws::Utils::Xml::XmlNode& xmlNode);
+ DeletedObject& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The name of the deleted object.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The name of the deleted object.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The name of the deleted object.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The name of the deleted object.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The name of the deleted object.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The name of the deleted object.</p>
+ */
+ inline DeletedObject& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The name of the deleted object.</p>
+ */
+ inline DeletedObject& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the deleted object.</p>
+ */
+ inline DeletedObject& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The version ID of the deleted object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The version ID of the deleted object.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>The version ID of the deleted object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>The version ID of the deleted object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>The version ID of the deleted object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>The version ID of the deleted object.</p>
+ */
+ inline DeletedObject& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The version ID of the deleted object.</p>
+ */
+ inline DeletedObject& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The version ID of the deleted object.</p>
+ */
+ inline DeletedObject& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether the versioned object that was permanently deleted was
+ * (true) or was not (false) a delete marker. In a simple DELETE, this header
+ * indicates whether (true) or not (false) a delete marker was created.</p>
+ */
+ inline bool GetDeleteMarker() const{ return m_deleteMarker; }
+
+ /**
+ * <p>Specifies whether the versioned object that was permanently deleted was
+ * (true) or was not (false) a delete marker. In a simple DELETE, this header
+ * indicates whether (true) or not (false) a delete marker was created.</p>
+ */
+ inline bool DeleteMarkerHasBeenSet() const { return m_deleteMarkerHasBeenSet; }
+
+ /**
+ * <p>Specifies whether the versioned object that was permanently deleted was
+ * (true) or was not (false) a delete marker. In a simple DELETE, this header
+ * indicates whether (true) or not (false) a delete marker was created.</p>
+ */
+ inline void SetDeleteMarker(bool value) { m_deleteMarkerHasBeenSet = true; m_deleteMarker = value; }
+
+ /**
+ * <p>Specifies whether the versioned object that was permanently deleted was
+ * (true) or was not (false) a delete marker. In a simple DELETE, this header
+ * indicates whether (true) or not (false) a delete marker was created.</p>
+ */
+ inline DeletedObject& WithDeleteMarker(bool value) { SetDeleteMarker(value); return *this;}
+
+
+ /**
+ * <p>The version ID of the delete marker created as a result of the DELETE
+ * operation. If you delete a specific object version, the value returned by this
+ * header is the version ID of the object version deleted.</p>
+ */
+ inline const Aws::String& GetDeleteMarkerVersionId() const{ return m_deleteMarkerVersionId; }
+
+ /**
+ * <p>The version ID of the delete marker created as a result of the DELETE
+ * operation. If you delete a specific object version, the value returned by this
+ * header is the version ID of the object version deleted.</p>
+ */
+ inline bool DeleteMarkerVersionIdHasBeenSet() const { return m_deleteMarkerVersionIdHasBeenSet; }
+
+ /**
+ * <p>The version ID of the delete marker created as a result of the DELETE
+ * operation. If you delete a specific object version, the value returned by this
+ * header is the version ID of the object version deleted.</p>
+ */
+ inline void SetDeleteMarkerVersionId(const Aws::String& value) { m_deleteMarkerVersionIdHasBeenSet = true; m_deleteMarkerVersionId = value; }
+
+ /**
+ * <p>The version ID of the delete marker created as a result of the DELETE
+ * operation. If you delete a specific object version, the value returned by this
+ * header is the version ID of the object version deleted.</p>
+ */
+ inline void SetDeleteMarkerVersionId(Aws::String&& value) { m_deleteMarkerVersionIdHasBeenSet = true; m_deleteMarkerVersionId = std::move(value); }
+
+ /**
+ * <p>The version ID of the delete marker created as a result of the DELETE
+ * operation. If you delete a specific object version, the value returned by this
+ * header is the version ID of the object version deleted.</p>
+ */
+ inline void SetDeleteMarkerVersionId(const char* value) { m_deleteMarkerVersionIdHasBeenSet = true; m_deleteMarkerVersionId.assign(value); }
+
+ /**
+ * <p>The version ID of the delete marker created as a result of the DELETE
+ * operation. If you delete a specific object version, the value returned by this
+ * header is the version ID of the object version deleted.</p>
+ */
+ inline DeletedObject& WithDeleteMarkerVersionId(const Aws::String& value) { SetDeleteMarkerVersionId(value); return *this;}
+
+ /**
+ * <p>The version ID of the delete marker created as a result of the DELETE
+ * operation. If you delete a specific object version, the value returned by this
+ * header is the version ID of the object version deleted.</p>
+ */
+ inline DeletedObject& WithDeleteMarkerVersionId(Aws::String&& value) { SetDeleteMarkerVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The version ID of the delete marker created as a result of the DELETE
+ * operation. If you delete a specific object version, the value returned by this
+ * header is the version ID of the object version deleted.</p>
+ */
+ inline DeletedObject& WithDeleteMarkerVersionId(const char* value) { SetDeleteMarkerVersionId(value); return *this;}
+
+ private:
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ bool m_deleteMarker;
+ bool m_deleteMarkerHasBeenSet;
+
+ Aws::String m_deleteMarkerVersionId;
+ bool m_deleteMarkerVersionIdHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Destination.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Destination.h
new file mode 100644
index 00000000000..eabf57c69a6
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Destination.h
@@ -0,0 +1,469 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/AccessControlTranslation.h>
+#include <aws/s3/model/EncryptionConfiguration.h>
+#include <aws/s3/model/ReplicationTime.h>
+#include <aws/s3/model/Metrics.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies information about where to publish analysis or configuration
+ * results for an Amazon S3 bucket and S3 Replication Time Control (S3
+ * RTC).</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Destination">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Destination
+ {
+ public:
+ Destination();
+ Destination(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Destination& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p> The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
+ * store the results.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p> The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
+ * store the results.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p> The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
+ * store the results.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p> The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
+ * store the results.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p> The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
+ * store the results.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p> The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
+ * store the results.</p>
+ */
+ inline Destination& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p> The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
+ * store the results.</p>
+ */
+ inline Destination& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p> The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
+ * store the results.</p>
+ */
+ inline Destination& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Destination bucket owner account ID. In a cross-account scenario, if you
+ * direct Amazon S3 to change replica ownership to the AWS account that owns the
+ * destination bucket by specifying the <code>AccessControlTranslation</code>
+ * property, this is the account ID of the destination bucket owner. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html">Replication
+ * Additional Configuration: Changing the Replica Owner</a> in the <i>Amazon Simple
+ * Storage Service Developer Guide</i>.</p>
+ */
+ inline const Aws::String& GetAccount() const{ return m_account; }
+
+ /**
+ * <p>Destination bucket owner account ID. In a cross-account scenario, if you
+ * direct Amazon S3 to change replica ownership to the AWS account that owns the
+ * destination bucket by specifying the <code>AccessControlTranslation</code>
+ * property, this is the account ID of the destination bucket owner. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html">Replication
+ * Additional Configuration: Changing the Replica Owner</a> in the <i>Amazon Simple
+ * Storage Service Developer Guide</i>.</p>
+ */
+ inline bool AccountHasBeenSet() const { return m_accountHasBeenSet; }
+
+ /**
+ * <p>Destination bucket owner account ID. In a cross-account scenario, if you
+ * direct Amazon S3 to change replica ownership to the AWS account that owns the
+ * destination bucket by specifying the <code>AccessControlTranslation</code>
+ * property, this is the account ID of the destination bucket owner. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html">Replication
+ * Additional Configuration: Changing the Replica Owner</a> in the <i>Amazon Simple
+ * Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetAccount(const Aws::String& value) { m_accountHasBeenSet = true; m_account = value; }
+
+ /**
+ * <p>Destination bucket owner account ID. In a cross-account scenario, if you
+ * direct Amazon S3 to change replica ownership to the AWS account that owns the
+ * destination bucket by specifying the <code>AccessControlTranslation</code>
+ * property, this is the account ID of the destination bucket owner. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html">Replication
+ * Additional Configuration: Changing the Replica Owner</a> in the <i>Amazon Simple
+ * Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetAccount(Aws::String&& value) { m_accountHasBeenSet = true; m_account = std::move(value); }
+
+ /**
+ * <p>Destination bucket owner account ID. In a cross-account scenario, if you
+ * direct Amazon S3 to change replica ownership to the AWS account that owns the
+ * destination bucket by specifying the <code>AccessControlTranslation</code>
+ * property, this is the account ID of the destination bucket owner. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html">Replication
+ * Additional Configuration: Changing the Replica Owner</a> in the <i>Amazon Simple
+ * Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetAccount(const char* value) { m_accountHasBeenSet = true; m_account.assign(value); }
+
+ /**
+ * <p>Destination bucket owner account ID. In a cross-account scenario, if you
+ * direct Amazon S3 to change replica ownership to the AWS account that owns the
+ * destination bucket by specifying the <code>AccessControlTranslation</code>
+ * property, this is the account ID of the destination bucket owner. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html">Replication
+ * Additional Configuration: Changing the Replica Owner</a> in the <i>Amazon Simple
+ * Storage Service Developer Guide</i>.</p>
+ */
+ inline Destination& WithAccount(const Aws::String& value) { SetAccount(value); return *this;}
+
+ /**
+ * <p>Destination bucket owner account ID. In a cross-account scenario, if you
+ * direct Amazon S3 to change replica ownership to the AWS account that owns the
+ * destination bucket by specifying the <code>AccessControlTranslation</code>
+ * property, this is the account ID of the destination bucket owner. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html">Replication
+ * Additional Configuration: Changing the Replica Owner</a> in the <i>Amazon Simple
+ * Storage Service Developer Guide</i>.</p>
+ */
+ inline Destination& WithAccount(Aws::String&& value) { SetAccount(std::move(value)); return *this;}
+
+ /**
+ * <p>Destination bucket owner account ID. In a cross-account scenario, if you
+ * direct Amazon S3 to change replica ownership to the AWS account that owns the
+ * destination bucket by specifying the <code>AccessControlTranslation</code>
+ * property, this is the account ID of the destination bucket owner. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html">Replication
+ * Additional Configuration: Changing the Replica Owner</a> in the <i>Amazon Simple
+ * Storage Service Developer Guide</i>.</p>
+ */
+ inline Destination& WithAccount(const char* value) { SetAccount(value); return *this;}
+
+
+ /**
+ * <p> The storage class to use when replicating objects, such as S3 Standard or
+ * reduced redundancy. By default, Amazon S3 uses the storage class of the source
+ * object to create the object replica. </p> <p>For valid values, see the
+ * <code>StorageClass</code> element of the <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * Bucket replication</a> action in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p> The storage class to use when replicating objects, such as S3 Standard or
+ * reduced redundancy. By default, Amazon S3 uses the storage class of the source
+ * object to create the object replica. </p> <p>For valid values, see the
+ * <code>StorageClass</code> element of the <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * Bucket replication</a> action in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p> The storage class to use when replicating objects, such as S3 Standard or
+ * reduced redundancy. By default, Amazon S3 uses the storage class of the source
+ * object to create the object replica. </p> <p>For valid values, see the
+ * <code>StorageClass</code> element of the <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * Bucket replication</a> action in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline void SetStorageClass(const StorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p> The storage class to use when replicating objects, such as S3 Standard or
+ * reduced redundancy. By default, Amazon S3 uses the storage class of the source
+ * object to create the object replica. </p> <p>For valid values, see the
+ * <code>StorageClass</code> element of the <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * Bucket replication</a> action in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline void SetStorageClass(StorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p> The storage class to use when replicating objects, such as S3 Standard or
+ * reduced redundancy. By default, Amazon S3 uses the storage class of the source
+ * object to create the object replica. </p> <p>For valid values, see the
+ * <code>StorageClass</code> element of the <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * Bucket replication</a> action in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline Destination& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p> The storage class to use when replicating objects, such as S3 Standard or
+ * reduced redundancy. By default, Amazon S3 uses the storage class of the source
+ * object to create the object replica. </p> <p>For valid values, see the
+ * <code>StorageClass</code> element of the <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html">PUT
+ * Bucket replication</a> action in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p>
+ */
+ inline Destination& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specify this only in a cross-account scenario (where source and destination
+ * bucket owners are not the same), and you want to change replica ownership to the
+ * AWS account that owns the destination bucket. If this is not specified in the
+ * replication configuration, the replicas are owned by same AWS account that owns
+ * the source object.</p>
+ */
+ inline const AccessControlTranslation& GetAccessControlTranslation() const{ return m_accessControlTranslation; }
+
+ /**
+ * <p>Specify this only in a cross-account scenario (where source and destination
+ * bucket owners are not the same), and you want to change replica ownership to the
+ * AWS account that owns the destination bucket. If this is not specified in the
+ * replication configuration, the replicas are owned by same AWS account that owns
+ * the source object.</p>
+ */
+ inline bool AccessControlTranslationHasBeenSet() const { return m_accessControlTranslationHasBeenSet; }
+
+ /**
+ * <p>Specify this only in a cross-account scenario (where source and destination
+ * bucket owners are not the same), and you want to change replica ownership to the
+ * AWS account that owns the destination bucket. If this is not specified in the
+ * replication configuration, the replicas are owned by same AWS account that owns
+ * the source object.</p>
+ */
+ inline void SetAccessControlTranslation(const AccessControlTranslation& value) { m_accessControlTranslationHasBeenSet = true; m_accessControlTranslation = value; }
+
+ /**
+ * <p>Specify this only in a cross-account scenario (where source and destination
+ * bucket owners are not the same), and you want to change replica ownership to the
+ * AWS account that owns the destination bucket. If this is not specified in the
+ * replication configuration, the replicas are owned by same AWS account that owns
+ * the source object.</p>
+ */
+ inline void SetAccessControlTranslation(AccessControlTranslation&& value) { m_accessControlTranslationHasBeenSet = true; m_accessControlTranslation = std::move(value); }
+
+ /**
+ * <p>Specify this only in a cross-account scenario (where source and destination
+ * bucket owners are not the same), and you want to change replica ownership to the
+ * AWS account that owns the destination bucket. If this is not specified in the
+ * replication configuration, the replicas are owned by same AWS account that owns
+ * the source object.</p>
+ */
+ inline Destination& WithAccessControlTranslation(const AccessControlTranslation& value) { SetAccessControlTranslation(value); return *this;}
+
+ /**
+ * <p>Specify this only in a cross-account scenario (where source and destination
+ * bucket owners are not the same), and you want to change replica ownership to the
+ * AWS account that owns the destination bucket. If this is not specified in the
+ * replication configuration, the replicas are owned by same AWS account that owns
+ * the source object.</p>
+ */
+ inline Destination& WithAccessControlTranslation(AccessControlTranslation&& value) { SetAccessControlTranslation(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A container that provides information about encryption. If
+ * <code>SourceSelectionCriteria</code> is specified, you must specify this
+ * element.</p>
+ */
+ inline const EncryptionConfiguration& GetEncryptionConfiguration() const{ return m_encryptionConfiguration; }
+
+ /**
+ * <p>A container that provides information about encryption. If
+ * <code>SourceSelectionCriteria</code> is specified, you must specify this
+ * element.</p>
+ */
+ inline bool EncryptionConfigurationHasBeenSet() const { return m_encryptionConfigurationHasBeenSet; }
+
+ /**
+ * <p>A container that provides information about encryption. If
+ * <code>SourceSelectionCriteria</code> is specified, you must specify this
+ * element.</p>
+ */
+ inline void SetEncryptionConfiguration(const EncryptionConfiguration& value) { m_encryptionConfigurationHasBeenSet = true; m_encryptionConfiguration = value; }
+
+ /**
+ * <p>A container that provides information about encryption. If
+ * <code>SourceSelectionCriteria</code> is specified, you must specify this
+ * element.</p>
+ */
+ inline void SetEncryptionConfiguration(EncryptionConfiguration&& value) { m_encryptionConfigurationHasBeenSet = true; m_encryptionConfiguration = std::move(value); }
+
+ /**
+ * <p>A container that provides information about encryption. If
+ * <code>SourceSelectionCriteria</code> is specified, you must specify this
+ * element.</p>
+ */
+ inline Destination& WithEncryptionConfiguration(const EncryptionConfiguration& value) { SetEncryptionConfiguration(value); return *this;}
+
+ /**
+ * <p>A container that provides information about encryption. If
+ * <code>SourceSelectionCriteria</code> is specified, you must specify this
+ * element.</p>
+ */
+ inline Destination& WithEncryptionConfiguration(EncryptionConfiguration&& value) { SetEncryptionConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p> A container specifying S3 Replication Time Control (S3 RTC), including
+ * whether S3 RTC is enabled and the time when all objects and operations on
+ * objects must be replicated. Must be specified together with a
+ * <code>Metrics</code> block. </p>
+ */
+ inline const ReplicationTime& GetReplicationTime() const{ return m_replicationTime; }
+
+ /**
+ * <p> A container specifying S3 Replication Time Control (S3 RTC), including
+ * whether S3 RTC is enabled and the time when all objects and operations on
+ * objects must be replicated. Must be specified together with a
+ * <code>Metrics</code> block. </p>
+ */
+ inline bool ReplicationTimeHasBeenSet() const { return m_replicationTimeHasBeenSet; }
+
+ /**
+ * <p> A container specifying S3 Replication Time Control (S3 RTC), including
+ * whether S3 RTC is enabled and the time when all objects and operations on
+ * objects must be replicated. Must be specified together with a
+ * <code>Metrics</code> block. </p>
+ */
+ inline void SetReplicationTime(const ReplicationTime& value) { m_replicationTimeHasBeenSet = true; m_replicationTime = value; }
+
+ /**
+ * <p> A container specifying S3 Replication Time Control (S3 RTC), including
+ * whether S3 RTC is enabled and the time when all objects and operations on
+ * objects must be replicated. Must be specified together with a
+ * <code>Metrics</code> block. </p>
+ */
+ inline void SetReplicationTime(ReplicationTime&& value) { m_replicationTimeHasBeenSet = true; m_replicationTime = std::move(value); }
+
+ /**
+ * <p> A container specifying S3 Replication Time Control (S3 RTC), including
+ * whether S3 RTC is enabled and the time when all objects and operations on
+ * objects must be replicated. Must be specified together with a
+ * <code>Metrics</code> block. </p>
+ */
+ inline Destination& WithReplicationTime(const ReplicationTime& value) { SetReplicationTime(value); return *this;}
+
+ /**
+ * <p> A container specifying S3 Replication Time Control (S3 RTC), including
+ * whether S3 RTC is enabled and the time when all objects and operations on
+ * objects must be replicated. Must be specified together with a
+ * <code>Metrics</code> block. </p>
+ */
+ inline Destination& WithReplicationTime(ReplicationTime&& value) { SetReplicationTime(std::move(value)); return *this;}
+
+
+ /**
+ * <p> A container specifying replication metrics-related settings enabling
+ * replication metrics and events. </p>
+ */
+ inline const Metrics& GetMetrics() const{ return m_metrics; }
+
+ /**
+ * <p> A container specifying replication metrics-related settings enabling
+ * replication metrics and events. </p>
+ */
+ inline bool MetricsHasBeenSet() const { return m_metricsHasBeenSet; }
+
+ /**
+ * <p> A container specifying replication metrics-related settings enabling
+ * replication metrics and events. </p>
+ */
+ inline void SetMetrics(const Metrics& value) { m_metricsHasBeenSet = true; m_metrics = value; }
+
+ /**
+ * <p> A container specifying replication metrics-related settings enabling
+ * replication metrics and events. </p>
+ */
+ inline void SetMetrics(Metrics&& value) { m_metricsHasBeenSet = true; m_metrics = std::move(value); }
+
+ /**
+ * <p> A container specifying replication metrics-related settings enabling
+ * replication metrics and events. </p>
+ */
+ inline Destination& WithMetrics(const Metrics& value) { SetMetrics(value); return *this;}
+
+ /**
+ * <p> A container specifying replication metrics-related settings enabling
+ * replication metrics and events. </p>
+ */
+ inline Destination& WithMetrics(Metrics&& value) { SetMetrics(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_account;
+ bool m_accountHasBeenSet;
+
+ StorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+
+ AccessControlTranslation m_accessControlTranslation;
+ bool m_accessControlTranslationHasBeenSet;
+
+ EncryptionConfiguration m_encryptionConfiguration;
+ bool m_encryptionConfigurationHasBeenSet;
+
+ ReplicationTime m_replicationTime;
+ bool m_replicationTimeHasBeenSet;
+
+ Metrics m_metrics;
+ bool m_metricsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/EncodingType.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/EncodingType.h
new file mode 100644
index 00000000000..13dc6281189
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/EncodingType.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class EncodingType
+ {
+ NOT_SET,
+ url
+ };
+
+namespace EncodingTypeMapper
+{
+AWS_S3_API EncodingType GetEncodingTypeForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForEncodingType(EncodingType value);
+} // namespace EncodingTypeMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Encryption.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Encryption.h
new file mode 100644
index 00000000000..87937565bb7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Encryption.h
@@ -0,0 +1,229 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Contains the type of server-side encryption used.</p><p><h3>See Also:</h3>
+ * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Encryption">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API Encryption
+ {
+ public:
+ Encryption();
+ Encryption(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Encryption& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The server-side encryption algorithm used when storing job results in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetEncryptionType() const{ return m_encryptionType; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing job results in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline bool EncryptionTypeHasBeenSet() const { return m_encryptionTypeHasBeenSet; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing job results in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetEncryptionType(const ServerSideEncryption& value) { m_encryptionTypeHasBeenSet = true; m_encryptionType = value; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing job results in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetEncryptionType(ServerSideEncryption&& value) { m_encryptionTypeHasBeenSet = true; m_encryptionType = std::move(value); }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing job results in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline Encryption& WithEncryptionType(const ServerSideEncryption& value) { SetEncryptionType(value); return *this;}
+
+ /**
+ * <p>The server-side encryption algorithm used when storing job results in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline Encryption& WithEncryptionType(ServerSideEncryption&& value) { SetEncryptionType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value specifies
+ * the ID of the symmetric customer managed AWS KMS CMK to use for encryption of
+ * job results. Amazon S3 only supports symmetric CMKs. For more information, see
+ * <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetKMSKeyId() const{ return m_kMSKeyId; }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value specifies
+ * the ID of the symmetric customer managed AWS KMS CMK to use for encryption of
+ * job results. Amazon S3 only supports symmetric CMKs. For more information, see
+ * <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool KMSKeyIdHasBeenSet() const { return m_kMSKeyIdHasBeenSet; }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value specifies
+ * the ID of the symmetric customer managed AWS KMS CMK to use for encryption of
+ * job results. Amazon S3 only supports symmetric CMKs. For more information, see
+ * <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetKMSKeyId(const Aws::String& value) { m_kMSKeyIdHasBeenSet = true; m_kMSKeyId = value; }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value specifies
+ * the ID of the symmetric customer managed AWS KMS CMK to use for encryption of
+ * job results. Amazon S3 only supports symmetric CMKs. For more information, see
+ * <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetKMSKeyId(Aws::String&& value) { m_kMSKeyIdHasBeenSet = true; m_kMSKeyId = std::move(value); }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value specifies
+ * the ID of the symmetric customer managed AWS KMS CMK to use for encryption of
+ * job results. Amazon S3 only supports symmetric CMKs. For more information, see
+ * <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetKMSKeyId(const char* value) { m_kMSKeyIdHasBeenSet = true; m_kMSKeyId.assign(value); }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value specifies
+ * the ID of the symmetric customer managed AWS KMS CMK to use for encryption of
+ * job results. Amazon S3 only supports symmetric CMKs. For more information, see
+ * <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline Encryption& WithKMSKeyId(const Aws::String& value) { SetKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value specifies
+ * the ID of the symmetric customer managed AWS KMS CMK to use for encryption of
+ * job results. Amazon S3 only supports symmetric CMKs. For more information, see
+ * <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline Encryption& WithKMSKeyId(Aws::String&& value) { SetKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value specifies
+ * the ID of the symmetric customer managed AWS KMS CMK to use for encryption of
+ * job results. Amazon S3 only supports symmetric CMKs. For more information, see
+ * <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline Encryption& WithKMSKeyId(const char* value) { SetKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value can be
+ * used to specify the encryption context for the restore results.</p>
+ */
+ inline const Aws::String& GetKMSContext() const{ return m_kMSContext; }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value can be
+ * used to specify the encryption context for the restore results.</p>
+ */
+ inline bool KMSContextHasBeenSet() const { return m_kMSContextHasBeenSet; }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value can be
+ * used to specify the encryption context for the restore results.</p>
+ */
+ inline void SetKMSContext(const Aws::String& value) { m_kMSContextHasBeenSet = true; m_kMSContext = value; }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value can be
+ * used to specify the encryption context for the restore results.</p>
+ */
+ inline void SetKMSContext(Aws::String&& value) { m_kMSContextHasBeenSet = true; m_kMSContext = std::move(value); }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value can be
+ * used to specify the encryption context for the restore results.</p>
+ */
+ inline void SetKMSContext(const char* value) { m_kMSContextHasBeenSet = true; m_kMSContext.assign(value); }
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value can be
+ * used to specify the encryption context for the restore results.</p>
+ */
+ inline Encryption& WithKMSContext(const Aws::String& value) { SetKMSContext(value); return *this;}
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value can be
+ * used to specify the encryption context for the restore results.</p>
+ */
+ inline Encryption& WithKMSContext(Aws::String&& value) { SetKMSContext(std::move(value)); return *this;}
+
+ /**
+ * <p>If the encryption type is <code>aws:kms</code>, this optional value can be
+ * used to specify the encryption context for the restore results.</p>
+ */
+ inline Encryption& WithKMSContext(const char* value) { SetKMSContext(value); return *this;}
+
+ private:
+
+ ServerSideEncryption m_encryptionType;
+ bool m_encryptionTypeHasBeenSet;
+
+ Aws::String m_kMSKeyId;
+ bool m_kMSKeyIdHasBeenSet;
+
+ Aws::String m_kMSContext;
+ bool m_kMSContextHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/EncryptionConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/EncryptionConfiguration.h
new file mode 100644
index 00000000000..14d86c37676
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/EncryptionConfiguration.h
@@ -0,0 +1,137 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies encryption-related information for an Amazon S3 bucket that is a
+ * destination for replicated objects.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/EncryptionConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API EncryptionConfiguration
+ {
+ public:
+ EncryptionConfiguration();
+ EncryptionConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ EncryptionConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the ID (Key ARN or Alias ARN) of the customer managed customer
+ * master key (CMK) stored in AWS Key Management Service (KMS) for the destination
+ * bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only
+ * supports symmetric customer managed CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetReplicaKmsKeyID() const{ return m_replicaKmsKeyID; }
+
+ /**
+ * <p>Specifies the ID (Key ARN or Alias ARN) of the customer managed customer
+ * master key (CMK) stored in AWS Key Management Service (KMS) for the destination
+ * bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only
+ * supports symmetric customer managed CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool ReplicaKmsKeyIDHasBeenSet() const { return m_replicaKmsKeyIDHasBeenSet; }
+
+ /**
+ * <p>Specifies the ID (Key ARN or Alias ARN) of the customer managed customer
+ * master key (CMK) stored in AWS Key Management Service (KMS) for the destination
+ * bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only
+ * supports symmetric customer managed CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetReplicaKmsKeyID(const Aws::String& value) { m_replicaKmsKeyIDHasBeenSet = true; m_replicaKmsKeyID = value; }
+
+ /**
+ * <p>Specifies the ID (Key ARN or Alias ARN) of the customer managed customer
+ * master key (CMK) stored in AWS Key Management Service (KMS) for the destination
+ * bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only
+ * supports symmetric customer managed CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetReplicaKmsKeyID(Aws::String&& value) { m_replicaKmsKeyIDHasBeenSet = true; m_replicaKmsKeyID = std::move(value); }
+
+ /**
+ * <p>Specifies the ID (Key ARN or Alias ARN) of the customer managed customer
+ * master key (CMK) stored in AWS Key Management Service (KMS) for the destination
+ * bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only
+ * supports symmetric customer managed CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetReplicaKmsKeyID(const char* value) { m_replicaKmsKeyIDHasBeenSet = true; m_replicaKmsKeyID.assign(value); }
+
+ /**
+ * <p>Specifies the ID (Key ARN or Alias ARN) of the customer managed customer
+ * master key (CMK) stored in AWS Key Management Service (KMS) for the destination
+ * bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only
+ * supports symmetric customer managed CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline EncryptionConfiguration& WithReplicaKmsKeyID(const Aws::String& value) { SetReplicaKmsKeyID(value); return *this;}
+
+ /**
+ * <p>Specifies the ID (Key ARN or Alias ARN) of the customer managed customer
+ * master key (CMK) stored in AWS Key Management Service (KMS) for the destination
+ * bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only
+ * supports symmetric customer managed CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline EncryptionConfiguration& WithReplicaKmsKeyID(Aws::String&& value) { SetReplicaKmsKeyID(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the ID (Key ARN or Alias ARN) of the customer managed customer
+ * master key (CMK) stored in AWS Key Management Service (KMS) for the destination
+ * bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only
+ * supports symmetric customer managed CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline EncryptionConfiguration& WithReplicaKmsKeyID(const char* value) { SetReplicaKmsKeyID(value); return *this;}
+
+ private:
+
+ Aws::String m_replicaKmsKeyID;
+ bool m_replicaKmsKeyIDHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Error.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Error.h
new file mode 100644
index 00000000000..d5fe4d20881
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Error.h
@@ -0,0 +1,3100 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for all error elements.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Error">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Error
+ {
+ public:
+ Error();
+ Error(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Error& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The error key.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The error key.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The error key.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The error key.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The error key.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The error key.</p>
+ */
+ inline Error& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The error key.</p>
+ */
+ inline Error& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The error key.</p>
+ */
+ inline Error& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The version ID of the error.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The version ID of the error.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>The version ID of the error.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>The version ID of the error.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>The version ID of the error.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>The version ID of the error.</p>
+ */
+ inline Error& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The version ID of the error.</p>
+ */
+ inline Error& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The version ID of the error.</p>
+ */
+ inline Error& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>The error code is a string that uniquely identifies an error condition. It is
+ * meant to be read and understood by programs that detect and handle errors by
+ * type. </p> <p class="title"> <b>Amazon S3 error codes</b> </p> <ul> <li> <ul>
+ * <li> <p> <i>Code:</i> AccessDenied </p> </li> <li> <p> <i>Description:</i>
+ * Access Denied</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AccountProblem</p> </li> <li> <p> <i>Description:</i>
+ * There is a problem with your AWS account that prevents the operation from
+ * completing successfully. Contact AWS Support for further assistance.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * AllAccessDisabled</p> </li> <li> <p> <i>Description:</i> All access to this
+ * Amazon S3 resource has been disabled. Contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> AmbiguousGrantByEmailAddress</p> </li> <li> <p>
+ * <i>Description:</i> The email address you provided is associated with more than
+ * one account.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AuthorizationHeaderMalformed</p> </li> <li> <p>
+ * <i>Description:</i> The authorization header you provided is invalid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * BadDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you specified
+ * did not match what we received.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> BucketAlreadyExists</p> </li> <li>
+ * <p> <i>Description:</i> The requested bucket name is not available. The bucket
+ * namespace is shared by all users of the system. Please select a different name
+ * and try again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 409 Conflict</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> BucketAlreadyOwnedByYou</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you tried to create already exists, and you own
+ * it. Amazon S3 returns this error in all AWS Regions except in the North Virginia
+ * Region. For legacy compatibility, if you re-create an existing bucket that you
+ * already own in the North Virginia Region, Amazon S3 returns 200 OK and resets
+ * the bucket access control lists (ACLs).</p> </li> <li> <p> <i>Code:</i> 409
+ * Conflict (in all Regions except the North Virginia Region) </p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> BucketNotEmpty</p> </li> <li> <p> <i>Description:</i> The bucket
+ * you tried to delete is not empty.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> CredentialsNotSupported</p> </li>
+ * <li> <p> <i>Description:</i> This request does not support credentials.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> CrossLocationLoggingProhibited</p> </li> <li> <p>
+ * <i>Description:</i> Cross-location logging not allowed. Buckets in one
+ * geographic location cannot log information to a bucket in another location.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> EntityTooSmall</p> </li> <li> <p> <i>Description:</i> Your proposed
+ * upload is smaller than the minimum allowed object size.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * EntityTooLarge</p> </li> <li> <p> <i>Description:</i> Your proposed upload
+ * exceeds the maximum allowed object size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ExpiredToken</p>
+ * </li> <li> <p> <i>Description:</i> The provided token has expired.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> IllegalVersioningConfigurationException </p> </li> <li> <p>
+ * <i>Description:</i> Indicates that the versioning configuration specified in the
+ * request is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncompleteBody</p> </li> <li> <p>
+ * <i>Description:</i> You did not provide the number of bytes specified by the
+ * Content-Length HTTP header</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncorrectNumberOfFilesInPostRequest</p>
+ * </li> <li> <p> <i>Description:</i> POST requires exactly one file upload per
+ * request.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InlineDataTooLarge</p> </li> <li> <p> <i>Description:</i>
+ * Inline data exceeds the maximum allowed size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InternalError</p>
+ * </li> <li> <p> <i>Description:</i> We encountered an internal error. Please try
+ * again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 500 Internal Server Error</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidAccessKeyId</p> </li> <li> <p>
+ * <i>Description:</i> The AWS access key ID you provided does not exist in our
+ * records.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidAddressingHeader</p> </li> <li> <p>
+ * <i>Description:</i> You must specify the Anonymous role.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidArgument</p>
+ * </li> <li> <p> <i>Description:</i> Invalid Argument</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidBucketName</p> </li> <li> <p> <i>Description:</i> The specified bucket is
+ * not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidBucketState</p> </li> <li> <p> <i>Description:</i>
+ * The request is not valid with the current state of the bucket.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you
+ * specified is not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidEncryptionAlgorithmError</p> </li>
+ * <li> <p> <i>Description:</i> The encryption request you specified is not valid.
+ * The valid value is AES256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidLocationConstraint</p> </li> <li>
+ * <p> <i>Description:</i> The specified location constraint is not valid. For more
+ * information about Regions, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
+ * to Select a Region for Your Buckets</a>. </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidObjectState</p> </li> <li> <p> <i>Description:</i> The operation is not
+ * valid for the current state of the object.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidPart</p>
+ * </li> <li> <p> <i>Description:</i> One or more of the specified parts could not
+ * be found. The part might not have been uploaded, or the specified entity tag
+ * might not have matched the part's entity tag.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidPartOrder</p> </li> <li> <p> <i>Description:</i> The list of parts was
+ * not in ascending order. Parts list must be specified in order by part
+ * number.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPayer</p> </li> <li> <p> <i>Description:</i> All
+ * access to this object has been disabled. Please contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPolicyDocument</p> </li> <li> <p>
+ * <i>Description:</i> The content of the form does not meet the conditions
+ * specified in the policy document.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRange</p> </li> <li>
+ * <p> <i>Description:</i> The requested range cannot be satisfied.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 416 Requested Range Not Satisfiable</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> Please
+ * use AWS4-HMAC-SHA256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> SOAP
+ * requests must be made over an HTTPS connection.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with non-DNS compliant names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with periods (.) in their names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate endpoint only supports virtual style requests.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li>
+ * <p> <i>Description:</i> Amazon S3 Transfer Accelerate is not configured on this
+ * bucket.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate is disabled on this bucket.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration is not supported on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration cannot be enabled on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidSecurity</p> </li> <li> <p>
+ * <i>Description:</i> The provided security credentials are not valid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidSOAPRequest</p> </li> <li> <p> <i>Description:</i> The SOAP request body
+ * is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidStorageClass</p> </li> <li> <p>
+ * <i>Description:</i> The storage class you specified is not valid.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidTargetBucketForLogging</p> </li> <li> <p> <i>Description:</i> The target
+ * bucket for logging does not exist, is not owned by you, or does not have the
+ * appropriate grants for the log-delivery group. </p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidToken</p> </li> <li> <p> <i>Description:</i> The provided token is
+ * malformed or otherwise invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidURI</p> </li> <li> <p>
+ * <i>Description:</i> Couldn't parse the specified URI.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * KeyTooLongError</p> </li> <li> <p> <i>Description:</i> Your key is too long.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MalformedACLError</p> </li> <li> <p> <i>Description:</i> The XML
+ * you provided was not well-formed or did not validate against our published
+ * schema.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> MalformedPOSTRequest </p> </li> <li> <p>
+ * <i>Description:</i> The body of your POST request is not well-formed
+ * multipart/form-data.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MalformedXML</p> </li> <li> <p>
+ * <i>Description:</i> This happens when the user sends malformed XML (XML that
+ * doesn't conform to the published XSD) for the configuration. The error message
+ * is, "The XML you provided was not well-formed or did not validate against our
+ * published schema." </p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MaxMessageLengthExceeded</p> </li> <li>
+ * <p> <i>Description:</i> Your request was too big.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MaxPostPreDataLengthExceededError</p> </li> <li> <p> <i>Description:</i> Your
+ * POST request fields preceding the upload file were too large.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MetadataTooLarge</p> </li> <li> <p> <i>Description:</i> Your metadata headers
+ * exceed the maximum allowed metadata size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MethodNotAllowed</p> </li> <li> <p> <i>Description:</i> The specified method is
+ * not allowed against this resource.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 405 Method Not Allowed</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingAttachment</p> </li> <li> <p> <i>Description:</i> A SOAP attachment was
+ * expected, but none were found.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MissingContentLength</p> </li> <li> <p>
+ * <i>Description:</i> You must provide the Content-Length HTTP header.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 411 Length Required</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MissingRequestBodyError</p> </li> <li> <p> <i>Description:</i> This
+ * happens when the user sends an empty XML document as a request. The error
+ * message is, "Request body is empty." </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityElement</p> </li> <li> <p> <i>Description:</i> The SOAP 1.1
+ * request is missing a security element.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityHeader</p> </li> <li> <p> <i>Description:</i> Your request is
+ * missing a required header.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> NoLoggingStatusForKey</p> </li> <li> <p>
+ * <i>Description:</i> There is no such thing as a logging status subresource for a
+ * key.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> NoSuchBucket</p> </li> <li> <p> <i>Description:</i> The
+ * specified bucket does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404
+ * Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchBucketPolicy</p> </li> <li>
+ * <p> <i>Description:</i> The specified bucket does not have a bucket policy.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> NoSuchKey</p> </li> <li> <p> <i>Description:</i> The specified key
+ * does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> NoSuchLifecycleConfiguration</p> </li> <li> <p>
+ * <i>Description:</i> The lifecycle configuration does not exist. </p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * NoSuchUpload</p> </li> <li> <p> <i>Description:</i> The specified multipart
+ * upload does not exist. The upload ID might be invalid, or the multipart upload
+ * might have been aborted or completed.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchVersion </p>
+ * </li> <li> <p> <i>Description:</i> Indicates that the version ID specified in
+ * the request does not match an existing version.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotImplemented</p>
+ * </li> <li> <p> <i>Description:</i> A header you provided implies functionality
+ * that is not implemented.</p> </li> <li> <p> <i>HTTP Status Code:</i> 501 Not
+ * Implemented</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotSignedUp</p> </li> <li> <p>
+ * <i>Description:</i> Your account is not signed up for the Amazon S3 service. You
+ * must sign up before you can use Amazon S3. You can sign up at the following URL:
+ * https://aws.amazon.com/s3</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> OperationAborted</p> </li> <li> <p>
+ * <i>Description:</i> A conflicting conditional operation is currently in progress
+ * against this resource. Try again.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> PermanentRedirect</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you are attempting to access must be addressed
+ * using the specified endpoint. Send all future requests to this endpoint.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 301 Moved Permanently</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> PreconditionFailed</p> </li> <li> <p> <i>Description:</i> At least
+ * one of the preconditions you specified did not hold.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 412 Precondition Failed</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * Redirect</p> </li> <li> <p> <i>Description:</i> Temporary redirect.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RestoreAlreadyInProgress</p> </li> <li> <p> <i>Description:</i>
+ * Object restore is already in progress.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestIsNotMultiPartContent</p> </li> <li> <p> <i>Description:</i> Bucket POST
+ * must be of the enclosure-type multipart/form-data.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestTimeout</p> </li> <li> <p> <i>Description:</i> Your socket connection to
+ * the server was not read from or written to within the timeout period.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTimeTooSkewed</p> </li> <li> <p> <i>Description:</i> The
+ * difference between the request time and the server's time is too large.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTorrentOfBucketError</p> </li> <li> <p> <i>Description:</i>
+ * Requesting the torrent file of a bucket is not permitted.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SignatureDoesNotMatch</p> </li> <li> <p> <i>Description:</i> The request
+ * signature we calculated does not match the signature you provided. Check your
+ * AWS secret access key and signing method. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html">SOAP
+ * Authentication</a> for details.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ServiceUnavailable</p> </li> <li>
+ * <p> <i>Description:</i> Reduce your request rate.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 503 Service Unavailable</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SlowDown</p> </li> <li> <p> <i>Description:</i> Reduce your request rate.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 503 Slow Down</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> TemporaryRedirect</p> </li> <li> <p> <i>Description:</i> You are
+ * being redirected to the bucket while DNS updates.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * TokenRefreshRequired</p> </li> <li> <p> <i>Description:</i> The provided token
+ * must be refreshed.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> TooManyBuckets</p> </li> <li> <p>
+ * <i>Description:</i> You have attempted to create more buckets than allowed.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> UnexpectedContent</p> </li> <li> <p> <i>Description:</i> This
+ * request does not support content.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UnresolvableGrantByEmailAddress</p> </li> <li> <p> <i>Description:</i> The email
+ * address you provided does not match any account on record.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UserKeyMustBeSpecified</p> </li> <li> <p> <i>Description:</i> The bucket POST
+ * must contain the specified field name. If it is specified, check the order of
+ * the fields.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> </ul>
+ * <p/>
+ */
+ inline const Aws::String& GetCode() const{ return m_code; }
+
+ /**
+ * <p>The error code is a string that uniquely identifies an error condition. It is
+ * meant to be read and understood by programs that detect and handle errors by
+ * type. </p> <p class="title"> <b>Amazon S3 error codes</b> </p> <ul> <li> <ul>
+ * <li> <p> <i>Code:</i> AccessDenied </p> </li> <li> <p> <i>Description:</i>
+ * Access Denied</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AccountProblem</p> </li> <li> <p> <i>Description:</i>
+ * There is a problem with your AWS account that prevents the operation from
+ * completing successfully. Contact AWS Support for further assistance.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * AllAccessDisabled</p> </li> <li> <p> <i>Description:</i> All access to this
+ * Amazon S3 resource has been disabled. Contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> AmbiguousGrantByEmailAddress</p> </li> <li> <p>
+ * <i>Description:</i> The email address you provided is associated with more than
+ * one account.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AuthorizationHeaderMalformed</p> </li> <li> <p>
+ * <i>Description:</i> The authorization header you provided is invalid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * BadDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you specified
+ * did not match what we received.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> BucketAlreadyExists</p> </li> <li>
+ * <p> <i>Description:</i> The requested bucket name is not available. The bucket
+ * namespace is shared by all users of the system. Please select a different name
+ * and try again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 409 Conflict</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> BucketAlreadyOwnedByYou</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you tried to create already exists, and you own
+ * it. Amazon S3 returns this error in all AWS Regions except in the North Virginia
+ * Region. For legacy compatibility, if you re-create an existing bucket that you
+ * already own in the North Virginia Region, Amazon S3 returns 200 OK and resets
+ * the bucket access control lists (ACLs).</p> </li> <li> <p> <i>Code:</i> 409
+ * Conflict (in all Regions except the North Virginia Region) </p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> BucketNotEmpty</p> </li> <li> <p> <i>Description:</i> The bucket
+ * you tried to delete is not empty.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> CredentialsNotSupported</p> </li>
+ * <li> <p> <i>Description:</i> This request does not support credentials.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> CrossLocationLoggingProhibited</p> </li> <li> <p>
+ * <i>Description:</i> Cross-location logging not allowed. Buckets in one
+ * geographic location cannot log information to a bucket in another location.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> EntityTooSmall</p> </li> <li> <p> <i>Description:</i> Your proposed
+ * upload is smaller than the minimum allowed object size.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * EntityTooLarge</p> </li> <li> <p> <i>Description:</i> Your proposed upload
+ * exceeds the maximum allowed object size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ExpiredToken</p>
+ * </li> <li> <p> <i>Description:</i> The provided token has expired.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> IllegalVersioningConfigurationException </p> </li> <li> <p>
+ * <i>Description:</i> Indicates that the versioning configuration specified in the
+ * request is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncompleteBody</p> </li> <li> <p>
+ * <i>Description:</i> You did not provide the number of bytes specified by the
+ * Content-Length HTTP header</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncorrectNumberOfFilesInPostRequest</p>
+ * </li> <li> <p> <i>Description:</i> POST requires exactly one file upload per
+ * request.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InlineDataTooLarge</p> </li> <li> <p> <i>Description:</i>
+ * Inline data exceeds the maximum allowed size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InternalError</p>
+ * </li> <li> <p> <i>Description:</i> We encountered an internal error. Please try
+ * again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 500 Internal Server Error</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidAccessKeyId</p> </li> <li> <p>
+ * <i>Description:</i> The AWS access key ID you provided does not exist in our
+ * records.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidAddressingHeader</p> </li> <li> <p>
+ * <i>Description:</i> You must specify the Anonymous role.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidArgument</p>
+ * </li> <li> <p> <i>Description:</i> Invalid Argument</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidBucketName</p> </li> <li> <p> <i>Description:</i> The specified bucket is
+ * not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidBucketState</p> </li> <li> <p> <i>Description:</i>
+ * The request is not valid with the current state of the bucket.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you
+ * specified is not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidEncryptionAlgorithmError</p> </li>
+ * <li> <p> <i>Description:</i> The encryption request you specified is not valid.
+ * The valid value is AES256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidLocationConstraint</p> </li> <li>
+ * <p> <i>Description:</i> The specified location constraint is not valid. For more
+ * information about Regions, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
+ * to Select a Region for Your Buckets</a>. </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidObjectState</p> </li> <li> <p> <i>Description:</i> The operation is not
+ * valid for the current state of the object.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidPart</p>
+ * </li> <li> <p> <i>Description:</i> One or more of the specified parts could not
+ * be found. The part might not have been uploaded, or the specified entity tag
+ * might not have matched the part's entity tag.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidPartOrder</p> </li> <li> <p> <i>Description:</i> The list of parts was
+ * not in ascending order. Parts list must be specified in order by part
+ * number.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPayer</p> </li> <li> <p> <i>Description:</i> All
+ * access to this object has been disabled. Please contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPolicyDocument</p> </li> <li> <p>
+ * <i>Description:</i> The content of the form does not meet the conditions
+ * specified in the policy document.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRange</p> </li> <li>
+ * <p> <i>Description:</i> The requested range cannot be satisfied.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 416 Requested Range Not Satisfiable</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> Please
+ * use AWS4-HMAC-SHA256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> SOAP
+ * requests must be made over an HTTPS connection.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with non-DNS compliant names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with periods (.) in their names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate endpoint only supports virtual style requests.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li>
+ * <p> <i>Description:</i> Amazon S3 Transfer Accelerate is not configured on this
+ * bucket.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate is disabled on this bucket.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration is not supported on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration cannot be enabled on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidSecurity</p> </li> <li> <p>
+ * <i>Description:</i> The provided security credentials are not valid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidSOAPRequest</p> </li> <li> <p> <i>Description:</i> The SOAP request body
+ * is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidStorageClass</p> </li> <li> <p>
+ * <i>Description:</i> The storage class you specified is not valid.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidTargetBucketForLogging</p> </li> <li> <p> <i>Description:</i> The target
+ * bucket for logging does not exist, is not owned by you, or does not have the
+ * appropriate grants for the log-delivery group. </p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidToken</p> </li> <li> <p> <i>Description:</i> The provided token is
+ * malformed or otherwise invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidURI</p> </li> <li> <p>
+ * <i>Description:</i> Couldn't parse the specified URI.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * KeyTooLongError</p> </li> <li> <p> <i>Description:</i> Your key is too long.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MalformedACLError</p> </li> <li> <p> <i>Description:</i> The XML
+ * you provided was not well-formed or did not validate against our published
+ * schema.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> MalformedPOSTRequest </p> </li> <li> <p>
+ * <i>Description:</i> The body of your POST request is not well-formed
+ * multipart/form-data.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MalformedXML</p> </li> <li> <p>
+ * <i>Description:</i> This happens when the user sends malformed XML (XML that
+ * doesn't conform to the published XSD) for the configuration. The error message
+ * is, "The XML you provided was not well-formed or did not validate against our
+ * published schema." </p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MaxMessageLengthExceeded</p> </li> <li>
+ * <p> <i>Description:</i> Your request was too big.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MaxPostPreDataLengthExceededError</p> </li> <li> <p> <i>Description:</i> Your
+ * POST request fields preceding the upload file were too large.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MetadataTooLarge</p> </li> <li> <p> <i>Description:</i> Your metadata headers
+ * exceed the maximum allowed metadata size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MethodNotAllowed</p> </li> <li> <p> <i>Description:</i> The specified method is
+ * not allowed against this resource.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 405 Method Not Allowed</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingAttachment</p> </li> <li> <p> <i>Description:</i> A SOAP attachment was
+ * expected, but none were found.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MissingContentLength</p> </li> <li> <p>
+ * <i>Description:</i> You must provide the Content-Length HTTP header.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 411 Length Required</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MissingRequestBodyError</p> </li> <li> <p> <i>Description:</i> This
+ * happens when the user sends an empty XML document as a request. The error
+ * message is, "Request body is empty." </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityElement</p> </li> <li> <p> <i>Description:</i> The SOAP 1.1
+ * request is missing a security element.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityHeader</p> </li> <li> <p> <i>Description:</i> Your request is
+ * missing a required header.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> NoLoggingStatusForKey</p> </li> <li> <p>
+ * <i>Description:</i> There is no such thing as a logging status subresource for a
+ * key.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> NoSuchBucket</p> </li> <li> <p> <i>Description:</i> The
+ * specified bucket does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404
+ * Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchBucketPolicy</p> </li> <li>
+ * <p> <i>Description:</i> The specified bucket does not have a bucket policy.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> NoSuchKey</p> </li> <li> <p> <i>Description:</i> The specified key
+ * does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> NoSuchLifecycleConfiguration</p> </li> <li> <p>
+ * <i>Description:</i> The lifecycle configuration does not exist. </p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * NoSuchUpload</p> </li> <li> <p> <i>Description:</i> The specified multipart
+ * upload does not exist. The upload ID might be invalid, or the multipart upload
+ * might have been aborted or completed.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchVersion </p>
+ * </li> <li> <p> <i>Description:</i> Indicates that the version ID specified in
+ * the request does not match an existing version.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotImplemented</p>
+ * </li> <li> <p> <i>Description:</i> A header you provided implies functionality
+ * that is not implemented.</p> </li> <li> <p> <i>HTTP Status Code:</i> 501 Not
+ * Implemented</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotSignedUp</p> </li> <li> <p>
+ * <i>Description:</i> Your account is not signed up for the Amazon S3 service. You
+ * must sign up before you can use Amazon S3. You can sign up at the following URL:
+ * https://aws.amazon.com/s3</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> OperationAborted</p> </li> <li> <p>
+ * <i>Description:</i> A conflicting conditional operation is currently in progress
+ * against this resource. Try again.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> PermanentRedirect</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you are attempting to access must be addressed
+ * using the specified endpoint. Send all future requests to this endpoint.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 301 Moved Permanently</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> PreconditionFailed</p> </li> <li> <p> <i>Description:</i> At least
+ * one of the preconditions you specified did not hold.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 412 Precondition Failed</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * Redirect</p> </li> <li> <p> <i>Description:</i> Temporary redirect.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RestoreAlreadyInProgress</p> </li> <li> <p> <i>Description:</i>
+ * Object restore is already in progress.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestIsNotMultiPartContent</p> </li> <li> <p> <i>Description:</i> Bucket POST
+ * must be of the enclosure-type multipart/form-data.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestTimeout</p> </li> <li> <p> <i>Description:</i> Your socket connection to
+ * the server was not read from or written to within the timeout period.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTimeTooSkewed</p> </li> <li> <p> <i>Description:</i> The
+ * difference between the request time and the server's time is too large.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTorrentOfBucketError</p> </li> <li> <p> <i>Description:</i>
+ * Requesting the torrent file of a bucket is not permitted.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SignatureDoesNotMatch</p> </li> <li> <p> <i>Description:</i> The request
+ * signature we calculated does not match the signature you provided. Check your
+ * AWS secret access key and signing method. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html">SOAP
+ * Authentication</a> for details.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ServiceUnavailable</p> </li> <li>
+ * <p> <i>Description:</i> Reduce your request rate.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 503 Service Unavailable</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SlowDown</p> </li> <li> <p> <i>Description:</i> Reduce your request rate.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 503 Slow Down</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> TemporaryRedirect</p> </li> <li> <p> <i>Description:</i> You are
+ * being redirected to the bucket while DNS updates.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * TokenRefreshRequired</p> </li> <li> <p> <i>Description:</i> The provided token
+ * must be refreshed.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> TooManyBuckets</p> </li> <li> <p>
+ * <i>Description:</i> You have attempted to create more buckets than allowed.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> UnexpectedContent</p> </li> <li> <p> <i>Description:</i> This
+ * request does not support content.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UnresolvableGrantByEmailAddress</p> </li> <li> <p> <i>Description:</i> The email
+ * address you provided does not match any account on record.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UserKeyMustBeSpecified</p> </li> <li> <p> <i>Description:</i> The bucket POST
+ * must contain the specified field name. If it is specified, check the order of
+ * the fields.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> </ul>
+ * <p/>
+ */
+ inline bool CodeHasBeenSet() const { return m_codeHasBeenSet; }
+
+ /**
+ * <p>The error code is a string that uniquely identifies an error condition. It is
+ * meant to be read and understood by programs that detect and handle errors by
+ * type. </p> <p class="title"> <b>Amazon S3 error codes</b> </p> <ul> <li> <ul>
+ * <li> <p> <i>Code:</i> AccessDenied </p> </li> <li> <p> <i>Description:</i>
+ * Access Denied</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AccountProblem</p> </li> <li> <p> <i>Description:</i>
+ * There is a problem with your AWS account that prevents the operation from
+ * completing successfully. Contact AWS Support for further assistance.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * AllAccessDisabled</p> </li> <li> <p> <i>Description:</i> All access to this
+ * Amazon S3 resource has been disabled. Contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> AmbiguousGrantByEmailAddress</p> </li> <li> <p>
+ * <i>Description:</i> The email address you provided is associated with more than
+ * one account.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AuthorizationHeaderMalformed</p> </li> <li> <p>
+ * <i>Description:</i> The authorization header you provided is invalid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * BadDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you specified
+ * did not match what we received.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> BucketAlreadyExists</p> </li> <li>
+ * <p> <i>Description:</i> The requested bucket name is not available. The bucket
+ * namespace is shared by all users of the system. Please select a different name
+ * and try again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 409 Conflict</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> BucketAlreadyOwnedByYou</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you tried to create already exists, and you own
+ * it. Amazon S3 returns this error in all AWS Regions except in the North Virginia
+ * Region. For legacy compatibility, if you re-create an existing bucket that you
+ * already own in the North Virginia Region, Amazon S3 returns 200 OK and resets
+ * the bucket access control lists (ACLs).</p> </li> <li> <p> <i>Code:</i> 409
+ * Conflict (in all Regions except the North Virginia Region) </p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> BucketNotEmpty</p> </li> <li> <p> <i>Description:</i> The bucket
+ * you tried to delete is not empty.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> CredentialsNotSupported</p> </li>
+ * <li> <p> <i>Description:</i> This request does not support credentials.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> CrossLocationLoggingProhibited</p> </li> <li> <p>
+ * <i>Description:</i> Cross-location logging not allowed. Buckets in one
+ * geographic location cannot log information to a bucket in another location.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> EntityTooSmall</p> </li> <li> <p> <i>Description:</i> Your proposed
+ * upload is smaller than the minimum allowed object size.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * EntityTooLarge</p> </li> <li> <p> <i>Description:</i> Your proposed upload
+ * exceeds the maximum allowed object size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ExpiredToken</p>
+ * </li> <li> <p> <i>Description:</i> The provided token has expired.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> IllegalVersioningConfigurationException </p> </li> <li> <p>
+ * <i>Description:</i> Indicates that the versioning configuration specified in the
+ * request is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncompleteBody</p> </li> <li> <p>
+ * <i>Description:</i> You did not provide the number of bytes specified by the
+ * Content-Length HTTP header</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncorrectNumberOfFilesInPostRequest</p>
+ * </li> <li> <p> <i>Description:</i> POST requires exactly one file upload per
+ * request.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InlineDataTooLarge</p> </li> <li> <p> <i>Description:</i>
+ * Inline data exceeds the maximum allowed size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InternalError</p>
+ * </li> <li> <p> <i>Description:</i> We encountered an internal error. Please try
+ * again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 500 Internal Server Error</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidAccessKeyId</p> </li> <li> <p>
+ * <i>Description:</i> The AWS access key ID you provided does not exist in our
+ * records.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidAddressingHeader</p> </li> <li> <p>
+ * <i>Description:</i> You must specify the Anonymous role.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidArgument</p>
+ * </li> <li> <p> <i>Description:</i> Invalid Argument</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidBucketName</p> </li> <li> <p> <i>Description:</i> The specified bucket is
+ * not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidBucketState</p> </li> <li> <p> <i>Description:</i>
+ * The request is not valid with the current state of the bucket.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you
+ * specified is not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidEncryptionAlgorithmError</p> </li>
+ * <li> <p> <i>Description:</i> The encryption request you specified is not valid.
+ * The valid value is AES256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidLocationConstraint</p> </li> <li>
+ * <p> <i>Description:</i> The specified location constraint is not valid. For more
+ * information about Regions, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
+ * to Select a Region for Your Buckets</a>. </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidObjectState</p> </li> <li> <p> <i>Description:</i> The operation is not
+ * valid for the current state of the object.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidPart</p>
+ * </li> <li> <p> <i>Description:</i> One or more of the specified parts could not
+ * be found. The part might not have been uploaded, or the specified entity tag
+ * might not have matched the part's entity tag.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidPartOrder</p> </li> <li> <p> <i>Description:</i> The list of parts was
+ * not in ascending order. Parts list must be specified in order by part
+ * number.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPayer</p> </li> <li> <p> <i>Description:</i> All
+ * access to this object has been disabled. Please contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPolicyDocument</p> </li> <li> <p>
+ * <i>Description:</i> The content of the form does not meet the conditions
+ * specified in the policy document.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRange</p> </li> <li>
+ * <p> <i>Description:</i> The requested range cannot be satisfied.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 416 Requested Range Not Satisfiable</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> Please
+ * use AWS4-HMAC-SHA256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> SOAP
+ * requests must be made over an HTTPS connection.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with non-DNS compliant names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with periods (.) in their names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate endpoint only supports virtual style requests.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li>
+ * <p> <i>Description:</i> Amazon S3 Transfer Accelerate is not configured on this
+ * bucket.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate is disabled on this bucket.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration is not supported on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration cannot be enabled on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidSecurity</p> </li> <li> <p>
+ * <i>Description:</i> The provided security credentials are not valid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidSOAPRequest</p> </li> <li> <p> <i>Description:</i> The SOAP request body
+ * is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidStorageClass</p> </li> <li> <p>
+ * <i>Description:</i> The storage class you specified is not valid.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidTargetBucketForLogging</p> </li> <li> <p> <i>Description:</i> The target
+ * bucket for logging does not exist, is not owned by you, or does not have the
+ * appropriate grants for the log-delivery group. </p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidToken</p> </li> <li> <p> <i>Description:</i> The provided token is
+ * malformed or otherwise invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidURI</p> </li> <li> <p>
+ * <i>Description:</i> Couldn't parse the specified URI.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * KeyTooLongError</p> </li> <li> <p> <i>Description:</i> Your key is too long.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MalformedACLError</p> </li> <li> <p> <i>Description:</i> The XML
+ * you provided was not well-formed or did not validate against our published
+ * schema.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> MalformedPOSTRequest </p> </li> <li> <p>
+ * <i>Description:</i> The body of your POST request is not well-formed
+ * multipart/form-data.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MalformedXML</p> </li> <li> <p>
+ * <i>Description:</i> This happens when the user sends malformed XML (XML that
+ * doesn't conform to the published XSD) for the configuration. The error message
+ * is, "The XML you provided was not well-formed or did not validate against our
+ * published schema." </p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MaxMessageLengthExceeded</p> </li> <li>
+ * <p> <i>Description:</i> Your request was too big.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MaxPostPreDataLengthExceededError</p> </li> <li> <p> <i>Description:</i> Your
+ * POST request fields preceding the upload file were too large.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MetadataTooLarge</p> </li> <li> <p> <i>Description:</i> Your metadata headers
+ * exceed the maximum allowed metadata size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MethodNotAllowed</p> </li> <li> <p> <i>Description:</i> The specified method is
+ * not allowed against this resource.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 405 Method Not Allowed</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingAttachment</p> </li> <li> <p> <i>Description:</i> A SOAP attachment was
+ * expected, but none were found.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MissingContentLength</p> </li> <li> <p>
+ * <i>Description:</i> You must provide the Content-Length HTTP header.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 411 Length Required</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MissingRequestBodyError</p> </li> <li> <p> <i>Description:</i> This
+ * happens when the user sends an empty XML document as a request. The error
+ * message is, "Request body is empty." </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityElement</p> </li> <li> <p> <i>Description:</i> The SOAP 1.1
+ * request is missing a security element.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityHeader</p> </li> <li> <p> <i>Description:</i> Your request is
+ * missing a required header.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> NoLoggingStatusForKey</p> </li> <li> <p>
+ * <i>Description:</i> There is no such thing as a logging status subresource for a
+ * key.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> NoSuchBucket</p> </li> <li> <p> <i>Description:</i> The
+ * specified bucket does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404
+ * Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchBucketPolicy</p> </li> <li>
+ * <p> <i>Description:</i> The specified bucket does not have a bucket policy.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> NoSuchKey</p> </li> <li> <p> <i>Description:</i> The specified key
+ * does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> NoSuchLifecycleConfiguration</p> </li> <li> <p>
+ * <i>Description:</i> The lifecycle configuration does not exist. </p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * NoSuchUpload</p> </li> <li> <p> <i>Description:</i> The specified multipart
+ * upload does not exist. The upload ID might be invalid, or the multipart upload
+ * might have been aborted or completed.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchVersion </p>
+ * </li> <li> <p> <i>Description:</i> Indicates that the version ID specified in
+ * the request does not match an existing version.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotImplemented</p>
+ * </li> <li> <p> <i>Description:</i> A header you provided implies functionality
+ * that is not implemented.</p> </li> <li> <p> <i>HTTP Status Code:</i> 501 Not
+ * Implemented</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotSignedUp</p> </li> <li> <p>
+ * <i>Description:</i> Your account is not signed up for the Amazon S3 service. You
+ * must sign up before you can use Amazon S3. You can sign up at the following URL:
+ * https://aws.amazon.com/s3</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> OperationAborted</p> </li> <li> <p>
+ * <i>Description:</i> A conflicting conditional operation is currently in progress
+ * against this resource. Try again.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> PermanentRedirect</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you are attempting to access must be addressed
+ * using the specified endpoint. Send all future requests to this endpoint.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 301 Moved Permanently</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> PreconditionFailed</p> </li> <li> <p> <i>Description:</i> At least
+ * one of the preconditions you specified did not hold.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 412 Precondition Failed</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * Redirect</p> </li> <li> <p> <i>Description:</i> Temporary redirect.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RestoreAlreadyInProgress</p> </li> <li> <p> <i>Description:</i>
+ * Object restore is already in progress.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestIsNotMultiPartContent</p> </li> <li> <p> <i>Description:</i> Bucket POST
+ * must be of the enclosure-type multipart/form-data.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestTimeout</p> </li> <li> <p> <i>Description:</i> Your socket connection to
+ * the server was not read from or written to within the timeout period.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTimeTooSkewed</p> </li> <li> <p> <i>Description:</i> The
+ * difference between the request time and the server's time is too large.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTorrentOfBucketError</p> </li> <li> <p> <i>Description:</i>
+ * Requesting the torrent file of a bucket is not permitted.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SignatureDoesNotMatch</p> </li> <li> <p> <i>Description:</i> The request
+ * signature we calculated does not match the signature you provided. Check your
+ * AWS secret access key and signing method. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html">SOAP
+ * Authentication</a> for details.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ServiceUnavailable</p> </li> <li>
+ * <p> <i>Description:</i> Reduce your request rate.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 503 Service Unavailable</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SlowDown</p> </li> <li> <p> <i>Description:</i> Reduce your request rate.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 503 Slow Down</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> TemporaryRedirect</p> </li> <li> <p> <i>Description:</i> You are
+ * being redirected to the bucket while DNS updates.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * TokenRefreshRequired</p> </li> <li> <p> <i>Description:</i> The provided token
+ * must be refreshed.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> TooManyBuckets</p> </li> <li> <p>
+ * <i>Description:</i> You have attempted to create more buckets than allowed.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> UnexpectedContent</p> </li> <li> <p> <i>Description:</i> This
+ * request does not support content.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UnresolvableGrantByEmailAddress</p> </li> <li> <p> <i>Description:</i> The email
+ * address you provided does not match any account on record.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UserKeyMustBeSpecified</p> </li> <li> <p> <i>Description:</i> The bucket POST
+ * must contain the specified field name. If it is specified, check the order of
+ * the fields.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> </ul>
+ * <p/>
+ */
+ inline void SetCode(const Aws::String& value) { m_codeHasBeenSet = true; m_code = value; }
+
+ /**
+ * <p>The error code is a string that uniquely identifies an error condition. It is
+ * meant to be read and understood by programs that detect and handle errors by
+ * type. </p> <p class="title"> <b>Amazon S3 error codes</b> </p> <ul> <li> <ul>
+ * <li> <p> <i>Code:</i> AccessDenied </p> </li> <li> <p> <i>Description:</i>
+ * Access Denied</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AccountProblem</p> </li> <li> <p> <i>Description:</i>
+ * There is a problem with your AWS account that prevents the operation from
+ * completing successfully. Contact AWS Support for further assistance.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * AllAccessDisabled</p> </li> <li> <p> <i>Description:</i> All access to this
+ * Amazon S3 resource has been disabled. Contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> AmbiguousGrantByEmailAddress</p> </li> <li> <p>
+ * <i>Description:</i> The email address you provided is associated with more than
+ * one account.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AuthorizationHeaderMalformed</p> </li> <li> <p>
+ * <i>Description:</i> The authorization header you provided is invalid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * BadDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you specified
+ * did not match what we received.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> BucketAlreadyExists</p> </li> <li>
+ * <p> <i>Description:</i> The requested bucket name is not available. The bucket
+ * namespace is shared by all users of the system. Please select a different name
+ * and try again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 409 Conflict</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> BucketAlreadyOwnedByYou</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you tried to create already exists, and you own
+ * it. Amazon S3 returns this error in all AWS Regions except in the North Virginia
+ * Region. For legacy compatibility, if you re-create an existing bucket that you
+ * already own in the North Virginia Region, Amazon S3 returns 200 OK and resets
+ * the bucket access control lists (ACLs).</p> </li> <li> <p> <i>Code:</i> 409
+ * Conflict (in all Regions except the North Virginia Region) </p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> BucketNotEmpty</p> </li> <li> <p> <i>Description:</i> The bucket
+ * you tried to delete is not empty.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> CredentialsNotSupported</p> </li>
+ * <li> <p> <i>Description:</i> This request does not support credentials.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> CrossLocationLoggingProhibited</p> </li> <li> <p>
+ * <i>Description:</i> Cross-location logging not allowed. Buckets in one
+ * geographic location cannot log information to a bucket in another location.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> EntityTooSmall</p> </li> <li> <p> <i>Description:</i> Your proposed
+ * upload is smaller than the minimum allowed object size.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * EntityTooLarge</p> </li> <li> <p> <i>Description:</i> Your proposed upload
+ * exceeds the maximum allowed object size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ExpiredToken</p>
+ * </li> <li> <p> <i>Description:</i> The provided token has expired.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> IllegalVersioningConfigurationException </p> </li> <li> <p>
+ * <i>Description:</i> Indicates that the versioning configuration specified in the
+ * request is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncompleteBody</p> </li> <li> <p>
+ * <i>Description:</i> You did not provide the number of bytes specified by the
+ * Content-Length HTTP header</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncorrectNumberOfFilesInPostRequest</p>
+ * </li> <li> <p> <i>Description:</i> POST requires exactly one file upload per
+ * request.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InlineDataTooLarge</p> </li> <li> <p> <i>Description:</i>
+ * Inline data exceeds the maximum allowed size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InternalError</p>
+ * </li> <li> <p> <i>Description:</i> We encountered an internal error. Please try
+ * again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 500 Internal Server Error</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidAccessKeyId</p> </li> <li> <p>
+ * <i>Description:</i> The AWS access key ID you provided does not exist in our
+ * records.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidAddressingHeader</p> </li> <li> <p>
+ * <i>Description:</i> You must specify the Anonymous role.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidArgument</p>
+ * </li> <li> <p> <i>Description:</i> Invalid Argument</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidBucketName</p> </li> <li> <p> <i>Description:</i> The specified bucket is
+ * not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidBucketState</p> </li> <li> <p> <i>Description:</i>
+ * The request is not valid with the current state of the bucket.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you
+ * specified is not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidEncryptionAlgorithmError</p> </li>
+ * <li> <p> <i>Description:</i> The encryption request you specified is not valid.
+ * The valid value is AES256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidLocationConstraint</p> </li> <li>
+ * <p> <i>Description:</i> The specified location constraint is not valid. For more
+ * information about Regions, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
+ * to Select a Region for Your Buckets</a>. </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidObjectState</p> </li> <li> <p> <i>Description:</i> The operation is not
+ * valid for the current state of the object.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidPart</p>
+ * </li> <li> <p> <i>Description:</i> One or more of the specified parts could not
+ * be found. The part might not have been uploaded, or the specified entity tag
+ * might not have matched the part's entity tag.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidPartOrder</p> </li> <li> <p> <i>Description:</i> The list of parts was
+ * not in ascending order. Parts list must be specified in order by part
+ * number.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPayer</p> </li> <li> <p> <i>Description:</i> All
+ * access to this object has been disabled. Please contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPolicyDocument</p> </li> <li> <p>
+ * <i>Description:</i> The content of the form does not meet the conditions
+ * specified in the policy document.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRange</p> </li> <li>
+ * <p> <i>Description:</i> The requested range cannot be satisfied.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 416 Requested Range Not Satisfiable</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> Please
+ * use AWS4-HMAC-SHA256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> SOAP
+ * requests must be made over an HTTPS connection.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with non-DNS compliant names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with periods (.) in their names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate endpoint only supports virtual style requests.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li>
+ * <p> <i>Description:</i> Amazon S3 Transfer Accelerate is not configured on this
+ * bucket.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate is disabled on this bucket.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration is not supported on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration cannot be enabled on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidSecurity</p> </li> <li> <p>
+ * <i>Description:</i> The provided security credentials are not valid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidSOAPRequest</p> </li> <li> <p> <i>Description:</i> The SOAP request body
+ * is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidStorageClass</p> </li> <li> <p>
+ * <i>Description:</i> The storage class you specified is not valid.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidTargetBucketForLogging</p> </li> <li> <p> <i>Description:</i> The target
+ * bucket for logging does not exist, is not owned by you, or does not have the
+ * appropriate grants for the log-delivery group. </p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidToken</p> </li> <li> <p> <i>Description:</i> The provided token is
+ * malformed or otherwise invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidURI</p> </li> <li> <p>
+ * <i>Description:</i> Couldn't parse the specified URI.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * KeyTooLongError</p> </li> <li> <p> <i>Description:</i> Your key is too long.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MalformedACLError</p> </li> <li> <p> <i>Description:</i> The XML
+ * you provided was not well-formed or did not validate against our published
+ * schema.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> MalformedPOSTRequest </p> </li> <li> <p>
+ * <i>Description:</i> The body of your POST request is not well-formed
+ * multipart/form-data.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MalformedXML</p> </li> <li> <p>
+ * <i>Description:</i> This happens when the user sends malformed XML (XML that
+ * doesn't conform to the published XSD) for the configuration. The error message
+ * is, "The XML you provided was not well-formed or did not validate against our
+ * published schema." </p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MaxMessageLengthExceeded</p> </li> <li>
+ * <p> <i>Description:</i> Your request was too big.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MaxPostPreDataLengthExceededError</p> </li> <li> <p> <i>Description:</i> Your
+ * POST request fields preceding the upload file were too large.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MetadataTooLarge</p> </li> <li> <p> <i>Description:</i> Your metadata headers
+ * exceed the maximum allowed metadata size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MethodNotAllowed</p> </li> <li> <p> <i>Description:</i> The specified method is
+ * not allowed against this resource.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 405 Method Not Allowed</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingAttachment</p> </li> <li> <p> <i>Description:</i> A SOAP attachment was
+ * expected, but none were found.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MissingContentLength</p> </li> <li> <p>
+ * <i>Description:</i> You must provide the Content-Length HTTP header.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 411 Length Required</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MissingRequestBodyError</p> </li> <li> <p> <i>Description:</i> This
+ * happens when the user sends an empty XML document as a request. The error
+ * message is, "Request body is empty." </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityElement</p> </li> <li> <p> <i>Description:</i> The SOAP 1.1
+ * request is missing a security element.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityHeader</p> </li> <li> <p> <i>Description:</i> Your request is
+ * missing a required header.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> NoLoggingStatusForKey</p> </li> <li> <p>
+ * <i>Description:</i> There is no such thing as a logging status subresource for a
+ * key.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> NoSuchBucket</p> </li> <li> <p> <i>Description:</i> The
+ * specified bucket does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404
+ * Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchBucketPolicy</p> </li> <li>
+ * <p> <i>Description:</i> The specified bucket does not have a bucket policy.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> NoSuchKey</p> </li> <li> <p> <i>Description:</i> The specified key
+ * does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> NoSuchLifecycleConfiguration</p> </li> <li> <p>
+ * <i>Description:</i> The lifecycle configuration does not exist. </p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * NoSuchUpload</p> </li> <li> <p> <i>Description:</i> The specified multipart
+ * upload does not exist. The upload ID might be invalid, or the multipart upload
+ * might have been aborted or completed.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchVersion </p>
+ * </li> <li> <p> <i>Description:</i> Indicates that the version ID specified in
+ * the request does not match an existing version.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotImplemented</p>
+ * </li> <li> <p> <i>Description:</i> A header you provided implies functionality
+ * that is not implemented.</p> </li> <li> <p> <i>HTTP Status Code:</i> 501 Not
+ * Implemented</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotSignedUp</p> </li> <li> <p>
+ * <i>Description:</i> Your account is not signed up for the Amazon S3 service. You
+ * must sign up before you can use Amazon S3. You can sign up at the following URL:
+ * https://aws.amazon.com/s3</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> OperationAborted</p> </li> <li> <p>
+ * <i>Description:</i> A conflicting conditional operation is currently in progress
+ * against this resource. Try again.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> PermanentRedirect</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you are attempting to access must be addressed
+ * using the specified endpoint. Send all future requests to this endpoint.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 301 Moved Permanently</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> PreconditionFailed</p> </li> <li> <p> <i>Description:</i> At least
+ * one of the preconditions you specified did not hold.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 412 Precondition Failed</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * Redirect</p> </li> <li> <p> <i>Description:</i> Temporary redirect.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RestoreAlreadyInProgress</p> </li> <li> <p> <i>Description:</i>
+ * Object restore is already in progress.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestIsNotMultiPartContent</p> </li> <li> <p> <i>Description:</i> Bucket POST
+ * must be of the enclosure-type multipart/form-data.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestTimeout</p> </li> <li> <p> <i>Description:</i> Your socket connection to
+ * the server was not read from or written to within the timeout period.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTimeTooSkewed</p> </li> <li> <p> <i>Description:</i> The
+ * difference between the request time and the server's time is too large.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTorrentOfBucketError</p> </li> <li> <p> <i>Description:</i>
+ * Requesting the torrent file of a bucket is not permitted.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SignatureDoesNotMatch</p> </li> <li> <p> <i>Description:</i> The request
+ * signature we calculated does not match the signature you provided. Check your
+ * AWS secret access key and signing method. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html">SOAP
+ * Authentication</a> for details.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ServiceUnavailable</p> </li> <li>
+ * <p> <i>Description:</i> Reduce your request rate.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 503 Service Unavailable</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SlowDown</p> </li> <li> <p> <i>Description:</i> Reduce your request rate.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 503 Slow Down</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> TemporaryRedirect</p> </li> <li> <p> <i>Description:</i> You are
+ * being redirected to the bucket while DNS updates.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * TokenRefreshRequired</p> </li> <li> <p> <i>Description:</i> The provided token
+ * must be refreshed.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> TooManyBuckets</p> </li> <li> <p>
+ * <i>Description:</i> You have attempted to create more buckets than allowed.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> UnexpectedContent</p> </li> <li> <p> <i>Description:</i> This
+ * request does not support content.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UnresolvableGrantByEmailAddress</p> </li> <li> <p> <i>Description:</i> The email
+ * address you provided does not match any account on record.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UserKeyMustBeSpecified</p> </li> <li> <p> <i>Description:</i> The bucket POST
+ * must contain the specified field name. If it is specified, check the order of
+ * the fields.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> </ul>
+ * <p/>
+ */
+ inline void SetCode(Aws::String&& value) { m_codeHasBeenSet = true; m_code = std::move(value); }
+
+ /**
+ * <p>The error code is a string that uniquely identifies an error condition. It is
+ * meant to be read and understood by programs that detect and handle errors by
+ * type. </p> <p class="title"> <b>Amazon S3 error codes</b> </p> <ul> <li> <ul>
+ * <li> <p> <i>Code:</i> AccessDenied </p> </li> <li> <p> <i>Description:</i>
+ * Access Denied</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AccountProblem</p> </li> <li> <p> <i>Description:</i>
+ * There is a problem with your AWS account that prevents the operation from
+ * completing successfully. Contact AWS Support for further assistance.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * AllAccessDisabled</p> </li> <li> <p> <i>Description:</i> All access to this
+ * Amazon S3 resource has been disabled. Contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> AmbiguousGrantByEmailAddress</p> </li> <li> <p>
+ * <i>Description:</i> The email address you provided is associated with more than
+ * one account.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AuthorizationHeaderMalformed</p> </li> <li> <p>
+ * <i>Description:</i> The authorization header you provided is invalid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * BadDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you specified
+ * did not match what we received.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> BucketAlreadyExists</p> </li> <li>
+ * <p> <i>Description:</i> The requested bucket name is not available. The bucket
+ * namespace is shared by all users of the system. Please select a different name
+ * and try again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 409 Conflict</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> BucketAlreadyOwnedByYou</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you tried to create already exists, and you own
+ * it. Amazon S3 returns this error in all AWS Regions except in the North Virginia
+ * Region. For legacy compatibility, if you re-create an existing bucket that you
+ * already own in the North Virginia Region, Amazon S3 returns 200 OK and resets
+ * the bucket access control lists (ACLs).</p> </li> <li> <p> <i>Code:</i> 409
+ * Conflict (in all Regions except the North Virginia Region) </p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> BucketNotEmpty</p> </li> <li> <p> <i>Description:</i> The bucket
+ * you tried to delete is not empty.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> CredentialsNotSupported</p> </li>
+ * <li> <p> <i>Description:</i> This request does not support credentials.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> CrossLocationLoggingProhibited</p> </li> <li> <p>
+ * <i>Description:</i> Cross-location logging not allowed. Buckets in one
+ * geographic location cannot log information to a bucket in another location.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> EntityTooSmall</p> </li> <li> <p> <i>Description:</i> Your proposed
+ * upload is smaller than the minimum allowed object size.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * EntityTooLarge</p> </li> <li> <p> <i>Description:</i> Your proposed upload
+ * exceeds the maximum allowed object size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ExpiredToken</p>
+ * </li> <li> <p> <i>Description:</i> The provided token has expired.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> IllegalVersioningConfigurationException </p> </li> <li> <p>
+ * <i>Description:</i> Indicates that the versioning configuration specified in the
+ * request is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncompleteBody</p> </li> <li> <p>
+ * <i>Description:</i> You did not provide the number of bytes specified by the
+ * Content-Length HTTP header</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncorrectNumberOfFilesInPostRequest</p>
+ * </li> <li> <p> <i>Description:</i> POST requires exactly one file upload per
+ * request.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InlineDataTooLarge</p> </li> <li> <p> <i>Description:</i>
+ * Inline data exceeds the maximum allowed size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InternalError</p>
+ * </li> <li> <p> <i>Description:</i> We encountered an internal error. Please try
+ * again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 500 Internal Server Error</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidAccessKeyId</p> </li> <li> <p>
+ * <i>Description:</i> The AWS access key ID you provided does not exist in our
+ * records.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidAddressingHeader</p> </li> <li> <p>
+ * <i>Description:</i> You must specify the Anonymous role.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidArgument</p>
+ * </li> <li> <p> <i>Description:</i> Invalid Argument</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidBucketName</p> </li> <li> <p> <i>Description:</i> The specified bucket is
+ * not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidBucketState</p> </li> <li> <p> <i>Description:</i>
+ * The request is not valid with the current state of the bucket.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you
+ * specified is not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidEncryptionAlgorithmError</p> </li>
+ * <li> <p> <i>Description:</i> The encryption request you specified is not valid.
+ * The valid value is AES256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidLocationConstraint</p> </li> <li>
+ * <p> <i>Description:</i> The specified location constraint is not valid. For more
+ * information about Regions, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
+ * to Select a Region for Your Buckets</a>. </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidObjectState</p> </li> <li> <p> <i>Description:</i> The operation is not
+ * valid for the current state of the object.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidPart</p>
+ * </li> <li> <p> <i>Description:</i> One or more of the specified parts could not
+ * be found. The part might not have been uploaded, or the specified entity tag
+ * might not have matched the part's entity tag.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidPartOrder</p> </li> <li> <p> <i>Description:</i> The list of parts was
+ * not in ascending order. Parts list must be specified in order by part
+ * number.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPayer</p> </li> <li> <p> <i>Description:</i> All
+ * access to this object has been disabled. Please contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPolicyDocument</p> </li> <li> <p>
+ * <i>Description:</i> The content of the form does not meet the conditions
+ * specified in the policy document.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRange</p> </li> <li>
+ * <p> <i>Description:</i> The requested range cannot be satisfied.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 416 Requested Range Not Satisfiable</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> Please
+ * use AWS4-HMAC-SHA256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> SOAP
+ * requests must be made over an HTTPS connection.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with non-DNS compliant names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with periods (.) in their names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate endpoint only supports virtual style requests.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li>
+ * <p> <i>Description:</i> Amazon S3 Transfer Accelerate is not configured on this
+ * bucket.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate is disabled on this bucket.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration is not supported on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration cannot be enabled on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidSecurity</p> </li> <li> <p>
+ * <i>Description:</i> The provided security credentials are not valid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidSOAPRequest</p> </li> <li> <p> <i>Description:</i> The SOAP request body
+ * is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidStorageClass</p> </li> <li> <p>
+ * <i>Description:</i> The storage class you specified is not valid.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidTargetBucketForLogging</p> </li> <li> <p> <i>Description:</i> The target
+ * bucket for logging does not exist, is not owned by you, or does not have the
+ * appropriate grants for the log-delivery group. </p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidToken</p> </li> <li> <p> <i>Description:</i> The provided token is
+ * malformed or otherwise invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidURI</p> </li> <li> <p>
+ * <i>Description:</i> Couldn't parse the specified URI.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * KeyTooLongError</p> </li> <li> <p> <i>Description:</i> Your key is too long.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MalformedACLError</p> </li> <li> <p> <i>Description:</i> The XML
+ * you provided was not well-formed or did not validate against our published
+ * schema.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> MalformedPOSTRequest </p> </li> <li> <p>
+ * <i>Description:</i> The body of your POST request is not well-formed
+ * multipart/form-data.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MalformedXML</p> </li> <li> <p>
+ * <i>Description:</i> This happens when the user sends malformed XML (XML that
+ * doesn't conform to the published XSD) for the configuration. The error message
+ * is, "The XML you provided was not well-formed or did not validate against our
+ * published schema." </p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MaxMessageLengthExceeded</p> </li> <li>
+ * <p> <i>Description:</i> Your request was too big.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MaxPostPreDataLengthExceededError</p> </li> <li> <p> <i>Description:</i> Your
+ * POST request fields preceding the upload file were too large.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MetadataTooLarge</p> </li> <li> <p> <i>Description:</i> Your metadata headers
+ * exceed the maximum allowed metadata size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MethodNotAllowed</p> </li> <li> <p> <i>Description:</i> The specified method is
+ * not allowed against this resource.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 405 Method Not Allowed</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingAttachment</p> </li> <li> <p> <i>Description:</i> A SOAP attachment was
+ * expected, but none were found.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MissingContentLength</p> </li> <li> <p>
+ * <i>Description:</i> You must provide the Content-Length HTTP header.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 411 Length Required</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MissingRequestBodyError</p> </li> <li> <p> <i>Description:</i> This
+ * happens when the user sends an empty XML document as a request. The error
+ * message is, "Request body is empty." </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityElement</p> </li> <li> <p> <i>Description:</i> The SOAP 1.1
+ * request is missing a security element.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityHeader</p> </li> <li> <p> <i>Description:</i> Your request is
+ * missing a required header.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> NoLoggingStatusForKey</p> </li> <li> <p>
+ * <i>Description:</i> There is no such thing as a logging status subresource for a
+ * key.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> NoSuchBucket</p> </li> <li> <p> <i>Description:</i> The
+ * specified bucket does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404
+ * Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchBucketPolicy</p> </li> <li>
+ * <p> <i>Description:</i> The specified bucket does not have a bucket policy.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> NoSuchKey</p> </li> <li> <p> <i>Description:</i> The specified key
+ * does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> NoSuchLifecycleConfiguration</p> </li> <li> <p>
+ * <i>Description:</i> The lifecycle configuration does not exist. </p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * NoSuchUpload</p> </li> <li> <p> <i>Description:</i> The specified multipart
+ * upload does not exist. The upload ID might be invalid, or the multipart upload
+ * might have been aborted or completed.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchVersion </p>
+ * </li> <li> <p> <i>Description:</i> Indicates that the version ID specified in
+ * the request does not match an existing version.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotImplemented</p>
+ * </li> <li> <p> <i>Description:</i> A header you provided implies functionality
+ * that is not implemented.</p> </li> <li> <p> <i>HTTP Status Code:</i> 501 Not
+ * Implemented</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotSignedUp</p> </li> <li> <p>
+ * <i>Description:</i> Your account is not signed up for the Amazon S3 service. You
+ * must sign up before you can use Amazon S3. You can sign up at the following URL:
+ * https://aws.amazon.com/s3</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> OperationAborted</p> </li> <li> <p>
+ * <i>Description:</i> A conflicting conditional operation is currently in progress
+ * against this resource. Try again.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> PermanentRedirect</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you are attempting to access must be addressed
+ * using the specified endpoint. Send all future requests to this endpoint.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 301 Moved Permanently</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> PreconditionFailed</p> </li> <li> <p> <i>Description:</i> At least
+ * one of the preconditions you specified did not hold.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 412 Precondition Failed</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * Redirect</p> </li> <li> <p> <i>Description:</i> Temporary redirect.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RestoreAlreadyInProgress</p> </li> <li> <p> <i>Description:</i>
+ * Object restore is already in progress.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestIsNotMultiPartContent</p> </li> <li> <p> <i>Description:</i> Bucket POST
+ * must be of the enclosure-type multipart/form-data.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestTimeout</p> </li> <li> <p> <i>Description:</i> Your socket connection to
+ * the server was not read from or written to within the timeout period.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTimeTooSkewed</p> </li> <li> <p> <i>Description:</i> The
+ * difference between the request time and the server's time is too large.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTorrentOfBucketError</p> </li> <li> <p> <i>Description:</i>
+ * Requesting the torrent file of a bucket is not permitted.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SignatureDoesNotMatch</p> </li> <li> <p> <i>Description:</i> The request
+ * signature we calculated does not match the signature you provided. Check your
+ * AWS secret access key and signing method. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html">SOAP
+ * Authentication</a> for details.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ServiceUnavailable</p> </li> <li>
+ * <p> <i>Description:</i> Reduce your request rate.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 503 Service Unavailable</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SlowDown</p> </li> <li> <p> <i>Description:</i> Reduce your request rate.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 503 Slow Down</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> TemporaryRedirect</p> </li> <li> <p> <i>Description:</i> You are
+ * being redirected to the bucket while DNS updates.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * TokenRefreshRequired</p> </li> <li> <p> <i>Description:</i> The provided token
+ * must be refreshed.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> TooManyBuckets</p> </li> <li> <p>
+ * <i>Description:</i> You have attempted to create more buckets than allowed.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> UnexpectedContent</p> </li> <li> <p> <i>Description:</i> This
+ * request does not support content.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UnresolvableGrantByEmailAddress</p> </li> <li> <p> <i>Description:</i> The email
+ * address you provided does not match any account on record.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UserKeyMustBeSpecified</p> </li> <li> <p> <i>Description:</i> The bucket POST
+ * must contain the specified field name. If it is specified, check the order of
+ * the fields.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> </ul>
+ * <p/>
+ */
+ inline void SetCode(const char* value) { m_codeHasBeenSet = true; m_code.assign(value); }
+
+ /**
+ * <p>The error code is a string that uniquely identifies an error condition. It is
+ * meant to be read and understood by programs that detect and handle errors by
+ * type. </p> <p class="title"> <b>Amazon S3 error codes</b> </p> <ul> <li> <ul>
+ * <li> <p> <i>Code:</i> AccessDenied </p> </li> <li> <p> <i>Description:</i>
+ * Access Denied</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AccountProblem</p> </li> <li> <p> <i>Description:</i>
+ * There is a problem with your AWS account that prevents the operation from
+ * completing successfully. Contact AWS Support for further assistance.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * AllAccessDisabled</p> </li> <li> <p> <i>Description:</i> All access to this
+ * Amazon S3 resource has been disabled. Contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> AmbiguousGrantByEmailAddress</p> </li> <li> <p>
+ * <i>Description:</i> The email address you provided is associated with more than
+ * one account.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AuthorizationHeaderMalformed</p> </li> <li> <p>
+ * <i>Description:</i> The authorization header you provided is invalid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * BadDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you specified
+ * did not match what we received.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> BucketAlreadyExists</p> </li> <li>
+ * <p> <i>Description:</i> The requested bucket name is not available. The bucket
+ * namespace is shared by all users of the system. Please select a different name
+ * and try again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 409 Conflict</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> BucketAlreadyOwnedByYou</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you tried to create already exists, and you own
+ * it. Amazon S3 returns this error in all AWS Regions except in the North Virginia
+ * Region. For legacy compatibility, if you re-create an existing bucket that you
+ * already own in the North Virginia Region, Amazon S3 returns 200 OK and resets
+ * the bucket access control lists (ACLs).</p> </li> <li> <p> <i>Code:</i> 409
+ * Conflict (in all Regions except the North Virginia Region) </p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> BucketNotEmpty</p> </li> <li> <p> <i>Description:</i> The bucket
+ * you tried to delete is not empty.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> CredentialsNotSupported</p> </li>
+ * <li> <p> <i>Description:</i> This request does not support credentials.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> CrossLocationLoggingProhibited</p> </li> <li> <p>
+ * <i>Description:</i> Cross-location logging not allowed. Buckets in one
+ * geographic location cannot log information to a bucket in another location.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> EntityTooSmall</p> </li> <li> <p> <i>Description:</i> Your proposed
+ * upload is smaller than the minimum allowed object size.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * EntityTooLarge</p> </li> <li> <p> <i>Description:</i> Your proposed upload
+ * exceeds the maximum allowed object size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ExpiredToken</p>
+ * </li> <li> <p> <i>Description:</i> The provided token has expired.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> IllegalVersioningConfigurationException </p> </li> <li> <p>
+ * <i>Description:</i> Indicates that the versioning configuration specified in the
+ * request is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncompleteBody</p> </li> <li> <p>
+ * <i>Description:</i> You did not provide the number of bytes specified by the
+ * Content-Length HTTP header</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncorrectNumberOfFilesInPostRequest</p>
+ * </li> <li> <p> <i>Description:</i> POST requires exactly one file upload per
+ * request.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InlineDataTooLarge</p> </li> <li> <p> <i>Description:</i>
+ * Inline data exceeds the maximum allowed size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InternalError</p>
+ * </li> <li> <p> <i>Description:</i> We encountered an internal error. Please try
+ * again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 500 Internal Server Error</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidAccessKeyId</p> </li> <li> <p>
+ * <i>Description:</i> The AWS access key ID you provided does not exist in our
+ * records.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidAddressingHeader</p> </li> <li> <p>
+ * <i>Description:</i> You must specify the Anonymous role.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidArgument</p>
+ * </li> <li> <p> <i>Description:</i> Invalid Argument</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidBucketName</p> </li> <li> <p> <i>Description:</i> The specified bucket is
+ * not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidBucketState</p> </li> <li> <p> <i>Description:</i>
+ * The request is not valid with the current state of the bucket.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you
+ * specified is not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidEncryptionAlgorithmError</p> </li>
+ * <li> <p> <i>Description:</i> The encryption request you specified is not valid.
+ * The valid value is AES256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidLocationConstraint</p> </li> <li>
+ * <p> <i>Description:</i> The specified location constraint is not valid. For more
+ * information about Regions, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
+ * to Select a Region for Your Buckets</a>. </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidObjectState</p> </li> <li> <p> <i>Description:</i> The operation is not
+ * valid for the current state of the object.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidPart</p>
+ * </li> <li> <p> <i>Description:</i> One or more of the specified parts could not
+ * be found. The part might not have been uploaded, or the specified entity tag
+ * might not have matched the part's entity tag.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidPartOrder</p> </li> <li> <p> <i>Description:</i> The list of parts was
+ * not in ascending order. Parts list must be specified in order by part
+ * number.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPayer</p> </li> <li> <p> <i>Description:</i> All
+ * access to this object has been disabled. Please contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPolicyDocument</p> </li> <li> <p>
+ * <i>Description:</i> The content of the form does not meet the conditions
+ * specified in the policy document.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRange</p> </li> <li>
+ * <p> <i>Description:</i> The requested range cannot be satisfied.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 416 Requested Range Not Satisfiable</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> Please
+ * use AWS4-HMAC-SHA256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> SOAP
+ * requests must be made over an HTTPS connection.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with non-DNS compliant names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with periods (.) in their names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate endpoint only supports virtual style requests.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li>
+ * <p> <i>Description:</i> Amazon S3 Transfer Accelerate is not configured on this
+ * bucket.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate is disabled on this bucket.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration is not supported on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration cannot be enabled on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidSecurity</p> </li> <li> <p>
+ * <i>Description:</i> The provided security credentials are not valid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidSOAPRequest</p> </li> <li> <p> <i>Description:</i> The SOAP request body
+ * is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidStorageClass</p> </li> <li> <p>
+ * <i>Description:</i> The storage class you specified is not valid.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidTargetBucketForLogging</p> </li> <li> <p> <i>Description:</i> The target
+ * bucket for logging does not exist, is not owned by you, or does not have the
+ * appropriate grants for the log-delivery group. </p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidToken</p> </li> <li> <p> <i>Description:</i> The provided token is
+ * malformed or otherwise invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidURI</p> </li> <li> <p>
+ * <i>Description:</i> Couldn't parse the specified URI.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * KeyTooLongError</p> </li> <li> <p> <i>Description:</i> Your key is too long.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MalformedACLError</p> </li> <li> <p> <i>Description:</i> The XML
+ * you provided was not well-formed or did not validate against our published
+ * schema.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> MalformedPOSTRequest </p> </li> <li> <p>
+ * <i>Description:</i> The body of your POST request is not well-formed
+ * multipart/form-data.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MalformedXML</p> </li> <li> <p>
+ * <i>Description:</i> This happens when the user sends malformed XML (XML that
+ * doesn't conform to the published XSD) for the configuration. The error message
+ * is, "The XML you provided was not well-formed or did not validate against our
+ * published schema." </p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MaxMessageLengthExceeded</p> </li> <li>
+ * <p> <i>Description:</i> Your request was too big.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MaxPostPreDataLengthExceededError</p> </li> <li> <p> <i>Description:</i> Your
+ * POST request fields preceding the upload file were too large.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MetadataTooLarge</p> </li> <li> <p> <i>Description:</i> Your metadata headers
+ * exceed the maximum allowed metadata size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MethodNotAllowed</p> </li> <li> <p> <i>Description:</i> The specified method is
+ * not allowed against this resource.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 405 Method Not Allowed</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingAttachment</p> </li> <li> <p> <i>Description:</i> A SOAP attachment was
+ * expected, but none were found.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MissingContentLength</p> </li> <li> <p>
+ * <i>Description:</i> You must provide the Content-Length HTTP header.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 411 Length Required</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MissingRequestBodyError</p> </li> <li> <p> <i>Description:</i> This
+ * happens when the user sends an empty XML document as a request. The error
+ * message is, "Request body is empty." </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityElement</p> </li> <li> <p> <i>Description:</i> The SOAP 1.1
+ * request is missing a security element.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityHeader</p> </li> <li> <p> <i>Description:</i> Your request is
+ * missing a required header.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> NoLoggingStatusForKey</p> </li> <li> <p>
+ * <i>Description:</i> There is no such thing as a logging status subresource for a
+ * key.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> NoSuchBucket</p> </li> <li> <p> <i>Description:</i> The
+ * specified bucket does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404
+ * Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchBucketPolicy</p> </li> <li>
+ * <p> <i>Description:</i> The specified bucket does not have a bucket policy.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> NoSuchKey</p> </li> <li> <p> <i>Description:</i> The specified key
+ * does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> NoSuchLifecycleConfiguration</p> </li> <li> <p>
+ * <i>Description:</i> The lifecycle configuration does not exist. </p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * NoSuchUpload</p> </li> <li> <p> <i>Description:</i> The specified multipart
+ * upload does not exist. The upload ID might be invalid, or the multipart upload
+ * might have been aborted or completed.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchVersion </p>
+ * </li> <li> <p> <i>Description:</i> Indicates that the version ID specified in
+ * the request does not match an existing version.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotImplemented</p>
+ * </li> <li> <p> <i>Description:</i> A header you provided implies functionality
+ * that is not implemented.</p> </li> <li> <p> <i>HTTP Status Code:</i> 501 Not
+ * Implemented</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotSignedUp</p> </li> <li> <p>
+ * <i>Description:</i> Your account is not signed up for the Amazon S3 service. You
+ * must sign up before you can use Amazon S3. You can sign up at the following URL:
+ * https://aws.amazon.com/s3</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> OperationAborted</p> </li> <li> <p>
+ * <i>Description:</i> A conflicting conditional operation is currently in progress
+ * against this resource. Try again.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> PermanentRedirect</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you are attempting to access must be addressed
+ * using the specified endpoint. Send all future requests to this endpoint.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 301 Moved Permanently</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> PreconditionFailed</p> </li> <li> <p> <i>Description:</i> At least
+ * one of the preconditions you specified did not hold.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 412 Precondition Failed</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * Redirect</p> </li> <li> <p> <i>Description:</i> Temporary redirect.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RestoreAlreadyInProgress</p> </li> <li> <p> <i>Description:</i>
+ * Object restore is already in progress.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestIsNotMultiPartContent</p> </li> <li> <p> <i>Description:</i> Bucket POST
+ * must be of the enclosure-type multipart/form-data.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestTimeout</p> </li> <li> <p> <i>Description:</i> Your socket connection to
+ * the server was not read from or written to within the timeout period.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTimeTooSkewed</p> </li> <li> <p> <i>Description:</i> The
+ * difference between the request time and the server's time is too large.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTorrentOfBucketError</p> </li> <li> <p> <i>Description:</i>
+ * Requesting the torrent file of a bucket is not permitted.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SignatureDoesNotMatch</p> </li> <li> <p> <i>Description:</i> The request
+ * signature we calculated does not match the signature you provided. Check your
+ * AWS secret access key and signing method. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html">SOAP
+ * Authentication</a> for details.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ServiceUnavailable</p> </li> <li>
+ * <p> <i>Description:</i> Reduce your request rate.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 503 Service Unavailable</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SlowDown</p> </li> <li> <p> <i>Description:</i> Reduce your request rate.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 503 Slow Down</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> TemporaryRedirect</p> </li> <li> <p> <i>Description:</i> You are
+ * being redirected to the bucket while DNS updates.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * TokenRefreshRequired</p> </li> <li> <p> <i>Description:</i> The provided token
+ * must be refreshed.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> TooManyBuckets</p> </li> <li> <p>
+ * <i>Description:</i> You have attempted to create more buckets than allowed.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> UnexpectedContent</p> </li> <li> <p> <i>Description:</i> This
+ * request does not support content.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UnresolvableGrantByEmailAddress</p> </li> <li> <p> <i>Description:</i> The email
+ * address you provided does not match any account on record.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UserKeyMustBeSpecified</p> </li> <li> <p> <i>Description:</i> The bucket POST
+ * must contain the specified field name. If it is specified, check the order of
+ * the fields.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> </ul>
+ * <p/>
+ */
+ inline Error& WithCode(const Aws::String& value) { SetCode(value); return *this;}
+
+ /**
+ * <p>The error code is a string that uniquely identifies an error condition. It is
+ * meant to be read and understood by programs that detect and handle errors by
+ * type. </p> <p class="title"> <b>Amazon S3 error codes</b> </p> <ul> <li> <ul>
+ * <li> <p> <i>Code:</i> AccessDenied </p> </li> <li> <p> <i>Description:</i>
+ * Access Denied</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AccountProblem</p> </li> <li> <p> <i>Description:</i>
+ * There is a problem with your AWS account that prevents the operation from
+ * completing successfully. Contact AWS Support for further assistance.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * AllAccessDisabled</p> </li> <li> <p> <i>Description:</i> All access to this
+ * Amazon S3 resource has been disabled. Contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> AmbiguousGrantByEmailAddress</p> </li> <li> <p>
+ * <i>Description:</i> The email address you provided is associated with more than
+ * one account.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AuthorizationHeaderMalformed</p> </li> <li> <p>
+ * <i>Description:</i> The authorization header you provided is invalid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * BadDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you specified
+ * did not match what we received.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> BucketAlreadyExists</p> </li> <li>
+ * <p> <i>Description:</i> The requested bucket name is not available. The bucket
+ * namespace is shared by all users of the system. Please select a different name
+ * and try again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 409 Conflict</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> BucketAlreadyOwnedByYou</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you tried to create already exists, and you own
+ * it. Amazon S3 returns this error in all AWS Regions except in the North Virginia
+ * Region. For legacy compatibility, if you re-create an existing bucket that you
+ * already own in the North Virginia Region, Amazon S3 returns 200 OK and resets
+ * the bucket access control lists (ACLs).</p> </li> <li> <p> <i>Code:</i> 409
+ * Conflict (in all Regions except the North Virginia Region) </p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> BucketNotEmpty</p> </li> <li> <p> <i>Description:</i> The bucket
+ * you tried to delete is not empty.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> CredentialsNotSupported</p> </li>
+ * <li> <p> <i>Description:</i> This request does not support credentials.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> CrossLocationLoggingProhibited</p> </li> <li> <p>
+ * <i>Description:</i> Cross-location logging not allowed. Buckets in one
+ * geographic location cannot log information to a bucket in another location.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> EntityTooSmall</p> </li> <li> <p> <i>Description:</i> Your proposed
+ * upload is smaller than the minimum allowed object size.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * EntityTooLarge</p> </li> <li> <p> <i>Description:</i> Your proposed upload
+ * exceeds the maximum allowed object size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ExpiredToken</p>
+ * </li> <li> <p> <i>Description:</i> The provided token has expired.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> IllegalVersioningConfigurationException </p> </li> <li> <p>
+ * <i>Description:</i> Indicates that the versioning configuration specified in the
+ * request is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncompleteBody</p> </li> <li> <p>
+ * <i>Description:</i> You did not provide the number of bytes specified by the
+ * Content-Length HTTP header</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncorrectNumberOfFilesInPostRequest</p>
+ * </li> <li> <p> <i>Description:</i> POST requires exactly one file upload per
+ * request.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InlineDataTooLarge</p> </li> <li> <p> <i>Description:</i>
+ * Inline data exceeds the maximum allowed size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InternalError</p>
+ * </li> <li> <p> <i>Description:</i> We encountered an internal error. Please try
+ * again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 500 Internal Server Error</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidAccessKeyId</p> </li> <li> <p>
+ * <i>Description:</i> The AWS access key ID you provided does not exist in our
+ * records.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidAddressingHeader</p> </li> <li> <p>
+ * <i>Description:</i> You must specify the Anonymous role.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidArgument</p>
+ * </li> <li> <p> <i>Description:</i> Invalid Argument</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidBucketName</p> </li> <li> <p> <i>Description:</i> The specified bucket is
+ * not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidBucketState</p> </li> <li> <p> <i>Description:</i>
+ * The request is not valid with the current state of the bucket.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you
+ * specified is not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidEncryptionAlgorithmError</p> </li>
+ * <li> <p> <i>Description:</i> The encryption request you specified is not valid.
+ * The valid value is AES256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidLocationConstraint</p> </li> <li>
+ * <p> <i>Description:</i> The specified location constraint is not valid. For more
+ * information about Regions, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
+ * to Select a Region for Your Buckets</a>. </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidObjectState</p> </li> <li> <p> <i>Description:</i> The operation is not
+ * valid for the current state of the object.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidPart</p>
+ * </li> <li> <p> <i>Description:</i> One or more of the specified parts could not
+ * be found. The part might not have been uploaded, or the specified entity tag
+ * might not have matched the part's entity tag.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidPartOrder</p> </li> <li> <p> <i>Description:</i> The list of parts was
+ * not in ascending order. Parts list must be specified in order by part
+ * number.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPayer</p> </li> <li> <p> <i>Description:</i> All
+ * access to this object has been disabled. Please contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPolicyDocument</p> </li> <li> <p>
+ * <i>Description:</i> The content of the form does not meet the conditions
+ * specified in the policy document.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRange</p> </li> <li>
+ * <p> <i>Description:</i> The requested range cannot be satisfied.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 416 Requested Range Not Satisfiable</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> Please
+ * use AWS4-HMAC-SHA256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> SOAP
+ * requests must be made over an HTTPS connection.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with non-DNS compliant names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with periods (.) in their names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate endpoint only supports virtual style requests.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li>
+ * <p> <i>Description:</i> Amazon S3 Transfer Accelerate is not configured on this
+ * bucket.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate is disabled on this bucket.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration is not supported on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration cannot be enabled on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidSecurity</p> </li> <li> <p>
+ * <i>Description:</i> The provided security credentials are not valid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidSOAPRequest</p> </li> <li> <p> <i>Description:</i> The SOAP request body
+ * is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidStorageClass</p> </li> <li> <p>
+ * <i>Description:</i> The storage class you specified is not valid.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidTargetBucketForLogging</p> </li> <li> <p> <i>Description:</i> The target
+ * bucket for logging does not exist, is not owned by you, or does not have the
+ * appropriate grants for the log-delivery group. </p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidToken</p> </li> <li> <p> <i>Description:</i> The provided token is
+ * malformed or otherwise invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidURI</p> </li> <li> <p>
+ * <i>Description:</i> Couldn't parse the specified URI.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * KeyTooLongError</p> </li> <li> <p> <i>Description:</i> Your key is too long.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MalformedACLError</p> </li> <li> <p> <i>Description:</i> The XML
+ * you provided was not well-formed or did not validate against our published
+ * schema.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> MalformedPOSTRequest </p> </li> <li> <p>
+ * <i>Description:</i> The body of your POST request is not well-formed
+ * multipart/form-data.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MalformedXML</p> </li> <li> <p>
+ * <i>Description:</i> This happens when the user sends malformed XML (XML that
+ * doesn't conform to the published XSD) for the configuration. The error message
+ * is, "The XML you provided was not well-formed or did not validate against our
+ * published schema." </p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MaxMessageLengthExceeded</p> </li> <li>
+ * <p> <i>Description:</i> Your request was too big.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MaxPostPreDataLengthExceededError</p> </li> <li> <p> <i>Description:</i> Your
+ * POST request fields preceding the upload file were too large.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MetadataTooLarge</p> </li> <li> <p> <i>Description:</i> Your metadata headers
+ * exceed the maximum allowed metadata size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MethodNotAllowed</p> </li> <li> <p> <i>Description:</i> The specified method is
+ * not allowed against this resource.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 405 Method Not Allowed</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingAttachment</p> </li> <li> <p> <i>Description:</i> A SOAP attachment was
+ * expected, but none were found.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MissingContentLength</p> </li> <li> <p>
+ * <i>Description:</i> You must provide the Content-Length HTTP header.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 411 Length Required</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MissingRequestBodyError</p> </li> <li> <p> <i>Description:</i> This
+ * happens when the user sends an empty XML document as a request. The error
+ * message is, "Request body is empty." </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityElement</p> </li> <li> <p> <i>Description:</i> The SOAP 1.1
+ * request is missing a security element.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityHeader</p> </li> <li> <p> <i>Description:</i> Your request is
+ * missing a required header.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> NoLoggingStatusForKey</p> </li> <li> <p>
+ * <i>Description:</i> There is no such thing as a logging status subresource for a
+ * key.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> NoSuchBucket</p> </li> <li> <p> <i>Description:</i> The
+ * specified bucket does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404
+ * Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchBucketPolicy</p> </li> <li>
+ * <p> <i>Description:</i> The specified bucket does not have a bucket policy.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> NoSuchKey</p> </li> <li> <p> <i>Description:</i> The specified key
+ * does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> NoSuchLifecycleConfiguration</p> </li> <li> <p>
+ * <i>Description:</i> The lifecycle configuration does not exist. </p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * NoSuchUpload</p> </li> <li> <p> <i>Description:</i> The specified multipart
+ * upload does not exist. The upload ID might be invalid, or the multipart upload
+ * might have been aborted or completed.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchVersion </p>
+ * </li> <li> <p> <i>Description:</i> Indicates that the version ID specified in
+ * the request does not match an existing version.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotImplemented</p>
+ * </li> <li> <p> <i>Description:</i> A header you provided implies functionality
+ * that is not implemented.</p> </li> <li> <p> <i>HTTP Status Code:</i> 501 Not
+ * Implemented</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotSignedUp</p> </li> <li> <p>
+ * <i>Description:</i> Your account is not signed up for the Amazon S3 service. You
+ * must sign up before you can use Amazon S3. You can sign up at the following URL:
+ * https://aws.amazon.com/s3</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> OperationAborted</p> </li> <li> <p>
+ * <i>Description:</i> A conflicting conditional operation is currently in progress
+ * against this resource. Try again.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> PermanentRedirect</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you are attempting to access must be addressed
+ * using the specified endpoint. Send all future requests to this endpoint.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 301 Moved Permanently</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> PreconditionFailed</p> </li> <li> <p> <i>Description:</i> At least
+ * one of the preconditions you specified did not hold.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 412 Precondition Failed</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * Redirect</p> </li> <li> <p> <i>Description:</i> Temporary redirect.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RestoreAlreadyInProgress</p> </li> <li> <p> <i>Description:</i>
+ * Object restore is already in progress.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestIsNotMultiPartContent</p> </li> <li> <p> <i>Description:</i> Bucket POST
+ * must be of the enclosure-type multipart/form-data.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestTimeout</p> </li> <li> <p> <i>Description:</i> Your socket connection to
+ * the server was not read from or written to within the timeout period.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTimeTooSkewed</p> </li> <li> <p> <i>Description:</i> The
+ * difference between the request time and the server's time is too large.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTorrentOfBucketError</p> </li> <li> <p> <i>Description:</i>
+ * Requesting the torrent file of a bucket is not permitted.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SignatureDoesNotMatch</p> </li> <li> <p> <i>Description:</i> The request
+ * signature we calculated does not match the signature you provided. Check your
+ * AWS secret access key and signing method. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html">SOAP
+ * Authentication</a> for details.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ServiceUnavailable</p> </li> <li>
+ * <p> <i>Description:</i> Reduce your request rate.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 503 Service Unavailable</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SlowDown</p> </li> <li> <p> <i>Description:</i> Reduce your request rate.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 503 Slow Down</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> TemporaryRedirect</p> </li> <li> <p> <i>Description:</i> You are
+ * being redirected to the bucket while DNS updates.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * TokenRefreshRequired</p> </li> <li> <p> <i>Description:</i> The provided token
+ * must be refreshed.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> TooManyBuckets</p> </li> <li> <p>
+ * <i>Description:</i> You have attempted to create more buckets than allowed.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> UnexpectedContent</p> </li> <li> <p> <i>Description:</i> This
+ * request does not support content.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UnresolvableGrantByEmailAddress</p> </li> <li> <p> <i>Description:</i> The email
+ * address you provided does not match any account on record.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UserKeyMustBeSpecified</p> </li> <li> <p> <i>Description:</i> The bucket POST
+ * must contain the specified field name. If it is specified, check the order of
+ * the fields.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> </ul>
+ * <p/>
+ */
+ inline Error& WithCode(Aws::String&& value) { SetCode(std::move(value)); return *this;}
+
+ /**
+ * <p>The error code is a string that uniquely identifies an error condition. It is
+ * meant to be read and understood by programs that detect and handle errors by
+ * type. </p> <p class="title"> <b>Amazon S3 error codes</b> </p> <ul> <li> <ul>
+ * <li> <p> <i>Code:</i> AccessDenied </p> </li> <li> <p> <i>Description:</i>
+ * Access Denied</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AccountProblem</p> </li> <li> <p> <i>Description:</i>
+ * There is a problem with your AWS account that prevents the operation from
+ * completing successfully. Contact AWS Support for further assistance.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * AllAccessDisabled</p> </li> <li> <p> <i>Description:</i> All access to this
+ * Amazon S3 resource has been disabled. Contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> AmbiguousGrantByEmailAddress</p> </li> <li> <p>
+ * <i>Description:</i> The email address you provided is associated with more than
+ * one account.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> AuthorizationHeaderMalformed</p> </li> <li> <p>
+ * <i>Description:</i> The authorization header you provided is invalid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * BadDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you specified
+ * did not match what we received.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> BucketAlreadyExists</p> </li> <li>
+ * <p> <i>Description:</i> The requested bucket name is not available. The bucket
+ * namespace is shared by all users of the system. Please select a different name
+ * and try again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 409 Conflict</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> BucketAlreadyOwnedByYou</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you tried to create already exists, and you own
+ * it. Amazon S3 returns this error in all AWS Regions except in the North Virginia
+ * Region. For legacy compatibility, if you re-create an existing bucket that you
+ * already own in the North Virginia Region, Amazon S3 returns 200 OK and resets
+ * the bucket access control lists (ACLs).</p> </li> <li> <p> <i>Code:</i> 409
+ * Conflict (in all Regions except the North Virginia Region) </p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> BucketNotEmpty</p> </li> <li> <p> <i>Description:</i> The bucket
+ * you tried to delete is not empty.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> CredentialsNotSupported</p> </li>
+ * <li> <p> <i>Description:</i> This request does not support credentials.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> CrossLocationLoggingProhibited</p> </li> <li> <p>
+ * <i>Description:</i> Cross-location logging not allowed. Buckets in one
+ * geographic location cannot log information to a bucket in another location.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> EntityTooSmall</p> </li> <li> <p> <i>Description:</i> Your proposed
+ * upload is smaller than the minimum allowed object size.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * EntityTooLarge</p> </li> <li> <p> <i>Description:</i> Your proposed upload
+ * exceeds the maximum allowed object size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ExpiredToken</p>
+ * </li> <li> <p> <i>Description:</i> The provided token has expired.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> IllegalVersioningConfigurationException </p> </li> <li> <p>
+ * <i>Description:</i> Indicates that the versioning configuration specified in the
+ * request is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncompleteBody</p> </li> <li> <p>
+ * <i>Description:</i> You did not provide the number of bytes specified by the
+ * Content-Length HTTP header</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> IncorrectNumberOfFilesInPostRequest</p>
+ * </li> <li> <p> <i>Description:</i> POST requires exactly one file upload per
+ * request.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InlineDataTooLarge</p> </li> <li> <p> <i>Description:</i>
+ * Inline data exceeds the maximum allowed size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InternalError</p>
+ * </li> <li> <p> <i>Description:</i> We encountered an internal error. Please try
+ * again.</p> </li> <li> <p> <i>HTTP Status Code:</i> 500 Internal Server Error</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidAccessKeyId</p> </li> <li> <p>
+ * <i>Description:</i> The AWS access key ID you provided does not exist in our
+ * records.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidAddressingHeader</p> </li> <li> <p>
+ * <i>Description:</i> You must specify the Anonymous role.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidArgument</p>
+ * </li> <li> <p> <i>Description:</i> Invalid Argument</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidBucketName</p> </li> <li> <p> <i>Description:</i> The specified bucket is
+ * not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidBucketState</p> </li> <li> <p> <i>Description:</i>
+ * The request is not valid with the current state of the bucket.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidDigest</p> </li> <li> <p> <i>Description:</i> The Content-MD5 you
+ * specified is not valid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidEncryptionAlgorithmError</p> </li>
+ * <li> <p> <i>Description:</i> The encryption request you specified is not valid.
+ * The valid value is AES256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidLocationConstraint</p> </li> <li>
+ * <p> <i>Description:</i> The specified location constraint is not valid. For more
+ * information about Regions, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro">How
+ * to Select a Region for Your Buckets</a>. </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidObjectState</p> </li> <li> <p> <i>Description:</i> The operation is not
+ * valid for the current state of the object.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidPart</p>
+ * </li> <li> <p> <i>Description:</i> One or more of the specified parts could not
+ * be found. The part might not have been uploaded, or the specified entity tag
+ * might not have matched the part's entity tag.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidPartOrder</p> </li> <li> <p> <i>Description:</i> The list of parts was
+ * not in ascending order. Parts list must be specified in order by part
+ * number.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPayer</p> </li> <li> <p> <i>Description:</i> All
+ * access to this object has been disabled. Please contact AWS Support for further
+ * assistance.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> InvalidPolicyDocument</p> </li> <li> <p>
+ * <i>Description:</i> The content of the form does not meet the conditions
+ * specified in the policy document.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRange</p> </li> <li>
+ * <p> <i>Description:</i> The requested range cannot be satisfied.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 416 Requested Range Not Satisfiable</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> Please
+ * use AWS4-HMAC-SHA256.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p> <i>Description:</i> SOAP
+ * requests must be made over an HTTPS connection.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with non-DNS compliant names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Acceleration is not supported for buckets with periods (.) in their names.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate endpoint only supports virtual style requests.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li>
+ * <p> <i>Description:</i> Amazon S3 Transfer Accelerate is not configured on this
+ * bucket.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>Code:</i> N/A</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidRequest</p> </li> <li> <p> <i>Description:</i> Amazon S3 Transfer
+ * Accelerate is disabled on this bucket.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration is not supported on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidRequest</p> </li> <li> <p>
+ * <i>Description:</i> Amazon S3 Transfer Acceleration cannot be enabled on this
+ * bucket. Contact AWS Support for more information.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>Code:</i> N/A</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidSecurity</p> </li> <li> <p>
+ * <i>Description:</i> The provided security credentials are not valid.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidSOAPRequest</p> </li> <li> <p> <i>Description:</i> The SOAP request body
+ * is invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> InvalidStorageClass</p> </li> <li> <p>
+ * <i>Description:</i> The storage class you specified is not valid.</p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault
+ * Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidTargetBucketForLogging</p> </li> <li> <p> <i>Description:</i> The target
+ * bucket for logging does not exist, is not owned by you, or does not have the
+ * appropriate grants for the log-delivery group. </p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * InvalidToken</p> </li> <li> <p> <i>Description:</i> The provided token is
+ * malformed or otherwise invalid.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400
+ * Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> InvalidURI</p> </li> <li> <p>
+ * <i>Description:</i> Couldn't parse the specified URI.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * KeyTooLongError</p> </li> <li> <p> <i>Description:</i> Your key is too long.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MalformedACLError</p> </li> <li> <p> <i>Description:</i> The XML
+ * you provided was not well-formed or did not validate against our published
+ * schema.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li>
+ * <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul>
+ * <li> <p> <i>Code:</i> MalformedPOSTRequest </p> </li> <li> <p>
+ * <i>Description:</i> The body of your POST request is not well-formed
+ * multipart/form-data.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MalformedXML</p> </li> <li> <p>
+ * <i>Description:</i> This happens when the user sends malformed XML (XML that
+ * doesn't conform to the published XSD) for the configuration. The error message
+ * is, "The XML you provided was not well-formed or did not validate against our
+ * published schema." </p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MaxMessageLengthExceeded</p> </li> <li>
+ * <p> <i>Description:</i> Your request was too big.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MaxPostPreDataLengthExceededError</p> </li> <li> <p> <i>Description:</i> Your
+ * POST request fields preceding the upload file were too large.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MetadataTooLarge</p> </li> <li> <p> <i>Description:</i> Your metadata headers
+ * exceed the maximum allowed metadata size.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MethodNotAllowed</p> </li> <li> <p> <i>Description:</i> The specified method is
+ * not allowed against this resource.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 405 Method Not Allowed</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingAttachment</p> </li> <li> <p> <i>Description:</i> A SOAP attachment was
+ * expected, but none were found.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * N/A</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> MissingContentLength</p> </li> <li> <p>
+ * <i>Description:</i> You must provide the Content-Length HTTP header.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 411 Length Required</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> MissingRequestBodyError</p> </li> <li> <p> <i>Description:</i> This
+ * happens when the user sends an empty XML document as a request. The error
+ * message is, "Request body is empty." </p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityElement</p> </li> <li> <p> <i>Description:</i> The SOAP 1.1
+ * request is missing a security element.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * MissingSecurityHeader</p> </li> <li> <p> <i>Description:</i> Your request is
+ * missing a required header.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> NoLoggingStatusForKey</p> </li> <li> <p>
+ * <i>Description:</i> There is no such thing as a logging status subresource for a
+ * key.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li>
+ * <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li>
+ * <p> <i>Code:</i> NoSuchBucket</p> </li> <li> <p> <i>Description:</i> The
+ * specified bucket does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404
+ * Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchBucketPolicy</p> </li> <li>
+ * <p> <i>Description:</i> The specified bucket does not have a bucket policy.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> NoSuchKey</p> </li> <li> <p> <i>Description:</i> The specified key
+ * does not exist.</p> </li> <li> <p> <i>HTTP Status Code:</i> 404 Not Found</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li>
+ * <ul> <li> <p> <i>Code:</i> NoSuchLifecycleConfiguration</p> </li> <li> <p>
+ * <i>Description:</i> The lifecycle configuration does not exist. </p> </li> <li>
+ * <p> <i>HTTP Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * NoSuchUpload</p> </li> <li> <p> <i>Description:</i> The specified multipart
+ * upload does not exist. The upload ID might be invalid, or the multipart upload
+ * might have been aborted or completed.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NoSuchVersion </p>
+ * </li> <li> <p> <i>Description:</i> Indicates that the version ID specified in
+ * the request does not match an existing version.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 404 Not Found</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotImplemented</p>
+ * </li> <li> <p> <i>Description:</i> A header you provided implies functionality
+ * that is not implemented.</p> </li> <li> <p> <i>HTTP Status Code:</i> 501 Not
+ * Implemented</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Server</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> NotSignedUp</p> </li> <li> <p>
+ * <i>Description:</i> Your account is not signed up for the Amazon S3 service. You
+ * must sign up before you can use Amazon S3. You can sign up at the following URL:
+ * https://aws.amazon.com/s3</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> OperationAborted</p> </li> <li> <p>
+ * <i>Description:</i> A conflicting conditional operation is currently in progress
+ * against this resource. Try again.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> PermanentRedirect</p> </li> <li> <p>
+ * <i>Description:</i> The bucket you are attempting to access must be addressed
+ * using the specified endpoint. Send all future requests to this endpoint.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 301 Moved Permanently</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> PreconditionFailed</p> </li> <li> <p> <i>Description:</i> At least
+ * one of the preconditions you specified did not hold.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 412 Precondition Failed</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * Redirect</p> </li> <li> <p> <i>Description:</i> Temporary redirect.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RestoreAlreadyInProgress</p> </li> <li> <p> <i>Description:</i>
+ * Object restore is already in progress.</p> </li> <li> <p> <i>HTTP Status
+ * Code:</i> 409 Conflict</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i>
+ * Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestIsNotMultiPartContent</p> </li> <li> <p> <i>Description:</i> Bucket POST
+ * must be of the enclosure-type multipart/form-data.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * RequestTimeout</p> </li> <li> <p> <i>Description:</i> Your socket connection to
+ * the server was not read from or written to within the timeout period.</p> </li>
+ * <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTimeTooSkewed</p> </li> <li> <p> <i>Description:</i> The
+ * difference between the request time and the server's time is too large.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 403 Forbidden</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> RequestTorrentOfBucketError</p> </li> <li> <p> <i>Description:</i>
+ * Requesting the torrent file of a bucket is not permitted.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SignatureDoesNotMatch</p> </li> <li> <p> <i>Description:</i> The request
+ * signature we calculated does not match the signature you provided. Check your
+ * AWS secret access key and signing method. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html">SOAP
+ * Authentication</a> for details.</p> </li> <li> <p> <i>HTTP Status Code:</i> 403
+ * Forbidden</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li>
+ * </ul> </li> <li> <ul> <li> <p> <i>Code:</i> ServiceUnavailable</p> </li> <li>
+ * <p> <i>Description:</i> Reduce your request rate.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 503 Service Unavailable</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * SlowDown</p> </li> <li> <p> <i>Description:</i> Reduce your request rate.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 503 Slow Down</p> </li> <li> <p> <i>SOAP
+ * Fault Code Prefix:</i> Server</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> TemporaryRedirect</p> </li> <li> <p> <i>Description:</i> You are
+ * being redirected to the bucket while DNS updates.</p> </li> <li> <p> <i>HTTP
+ * Status Code:</i> 307 Moved Temporarily</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * TokenRefreshRequired</p> </li> <li> <p> <i>Description:</i> The provided token
+ * must be refreshed.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad
+ * Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul>
+ * </li> <li> <ul> <li> <p> <i>Code:</i> TooManyBuckets</p> </li> <li> <p>
+ * <i>Description:</i> You have attempted to create more buckets than allowed.</p>
+ * </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p>
+ * <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p>
+ * <i>Code:</i> UnexpectedContent</p> </li> <li> <p> <i>Description:</i> This
+ * request does not support content.</p> </li> <li> <p> <i>HTTP Status Code:</i>
+ * 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p>
+ * </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UnresolvableGrantByEmailAddress</p> </li> <li> <p> <i>Description:</i> The email
+ * address you provided does not match any account on record.</p> </li> <li> <p>
+ * <i>HTTP Status Code:</i> 400 Bad Request</p> </li> <li> <p> <i>SOAP Fault Code
+ * Prefix:</i> Client</p> </li> </ul> </li> <li> <ul> <li> <p> <i>Code:</i>
+ * UserKeyMustBeSpecified</p> </li> <li> <p> <i>Description:</i> The bucket POST
+ * must contain the specified field name. If it is specified, check the order of
+ * the fields.</p> </li> <li> <p> <i>HTTP Status Code:</i> 400 Bad Request</p>
+ * </li> <li> <p> <i>SOAP Fault Code Prefix:</i> Client</p> </li> </ul> </li> </ul>
+ * <p/>
+ */
+ inline Error& WithCode(const char* value) { SetCode(value); return *this;}
+
+
+ /**
+ * <p>The error message contains a generic description of the error condition in
+ * English. It is intended for a human audience. Simple programs display the
+ * message directly to the end user if they encounter an error condition they don't
+ * know how or don't care to handle. Sophisticated programs with more exhaustive
+ * error handling and proper internationalization are more likely to ignore the
+ * error message.</p>
+ */
+ inline const Aws::String& GetMessage() const{ return m_message; }
+
+ /**
+ * <p>The error message contains a generic description of the error condition in
+ * English. It is intended for a human audience. Simple programs display the
+ * message directly to the end user if they encounter an error condition they don't
+ * know how or don't care to handle. Sophisticated programs with more exhaustive
+ * error handling and proper internationalization are more likely to ignore the
+ * error message.</p>
+ */
+ inline bool MessageHasBeenSet() const { return m_messageHasBeenSet; }
+
+ /**
+ * <p>The error message contains a generic description of the error condition in
+ * English. It is intended for a human audience. Simple programs display the
+ * message directly to the end user if they encounter an error condition they don't
+ * know how or don't care to handle. Sophisticated programs with more exhaustive
+ * error handling and proper internationalization are more likely to ignore the
+ * error message.</p>
+ */
+ inline void SetMessage(const Aws::String& value) { m_messageHasBeenSet = true; m_message = value; }
+
+ /**
+ * <p>The error message contains a generic description of the error condition in
+ * English. It is intended for a human audience. Simple programs display the
+ * message directly to the end user if they encounter an error condition they don't
+ * know how or don't care to handle. Sophisticated programs with more exhaustive
+ * error handling and proper internationalization are more likely to ignore the
+ * error message.</p>
+ */
+ inline void SetMessage(Aws::String&& value) { m_messageHasBeenSet = true; m_message = std::move(value); }
+
+ /**
+ * <p>The error message contains a generic description of the error condition in
+ * English. It is intended for a human audience. Simple programs display the
+ * message directly to the end user if they encounter an error condition they don't
+ * know how or don't care to handle. Sophisticated programs with more exhaustive
+ * error handling and proper internationalization are more likely to ignore the
+ * error message.</p>
+ */
+ inline void SetMessage(const char* value) { m_messageHasBeenSet = true; m_message.assign(value); }
+
+ /**
+ * <p>The error message contains a generic description of the error condition in
+ * English. It is intended for a human audience. Simple programs display the
+ * message directly to the end user if they encounter an error condition they don't
+ * know how or don't care to handle. Sophisticated programs with more exhaustive
+ * error handling and proper internationalization are more likely to ignore the
+ * error message.</p>
+ */
+ inline Error& WithMessage(const Aws::String& value) { SetMessage(value); return *this;}
+
+ /**
+ * <p>The error message contains a generic description of the error condition in
+ * English. It is intended for a human audience. Simple programs display the
+ * message directly to the end user if they encounter an error condition they don't
+ * know how or don't care to handle. Sophisticated programs with more exhaustive
+ * error handling and proper internationalization are more likely to ignore the
+ * error message.</p>
+ */
+ inline Error& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;}
+
+ /**
+ * <p>The error message contains a generic description of the error condition in
+ * English. It is intended for a human audience. Simple programs display the
+ * message directly to the end user if they encounter an error condition they don't
+ * know how or don't care to handle. Sophisticated programs with more exhaustive
+ * error handling and proper internationalization are more likely to ignore the
+ * error message.</p>
+ */
+ inline Error& WithMessage(const char* value) { SetMessage(value); return *this;}
+
+ private:
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ Aws::String m_code;
+ bool m_codeHasBeenSet;
+
+ Aws::String m_message;
+ bool m_messageHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ErrorDocument.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ErrorDocument.h
new file mode 100644
index 00000000000..610d32187ac
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ErrorDocument.h
@@ -0,0 +1,88 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The error information.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ErrorDocument">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ErrorDocument
+ {
+ public:
+ ErrorDocument();
+ ErrorDocument(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ErrorDocument& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The object key name to use when a 4XX class error occurs.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The object key name to use when a 4XX class error occurs.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The object key name to use when a 4XX class error occurs.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The object key name to use when a 4XX class error occurs.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The object key name to use when a 4XX class error occurs.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The object key name to use when a 4XX class error occurs.</p>
+ */
+ inline ErrorDocument& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The object key name to use when a 4XX class error occurs.</p>
+ */
+ inline ErrorDocument& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The object key name to use when a 4XX class error occurs.</p>
+ */
+ inline ErrorDocument& WithKey(const char* value) { SetKey(value); return *this;}
+
+ private:
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Event.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Event.h
new file mode 100644
index 00000000000..036cc475431
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Event.h
@@ -0,0 +1,46 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class Event
+ {
+ NOT_SET,
+ s3_ReducedRedundancyLostObject,
+ s3_ObjectCreated,
+ s3_ObjectCreated_Put,
+ s3_ObjectCreated_Post,
+ s3_ObjectCreated_Copy,
+ s3_ObjectCreated_CompleteMultipartUpload,
+ s3_ObjectRemoved,
+ s3_ObjectRemoved_Delete,
+ s3_ObjectRemoved_DeleteMarkerCreated,
+ s3_ObjectRestore,
+ s3_ObjectRestore_Post,
+ s3_ObjectRestore_Completed,
+ s3_Replication,
+ s3_Replication_OperationFailedReplication,
+ s3_Replication_OperationNotTracked,
+ s3_Replication_OperationMissedThreshold,
+ s3_Replication_OperationReplicatedAfterThreshold
+ };
+
+namespace EventMapper
+{
+AWS_S3_API Event GetEventForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForEvent(Event value);
+} // namespace EventMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplication.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplication.h
new file mode 100644
index 00000000000..bb9bebd9597
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplication.h
@@ -0,0 +1,82 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ExistingObjectReplicationStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Optional configuration to replicate existing source bucket objects. For more
+ * information, see <a href="
+ * https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication">Replicating
+ * Existing Objects</a> in the <i>Amazon S3 Developer Guide</i>. </p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ExistingObjectReplication">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ExistingObjectReplication
+ {
+ public:
+ ExistingObjectReplication();
+ ExistingObjectReplication(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ExistingObjectReplication& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p/>
+ */
+ inline const ExistingObjectReplicationStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p/>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p/>
+ */
+ inline void SetStatus(const ExistingObjectReplicationStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p/>
+ */
+ inline void SetStatus(ExistingObjectReplicationStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p/>
+ */
+ inline ExistingObjectReplication& WithStatus(const ExistingObjectReplicationStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p/>
+ */
+ inline ExistingObjectReplication& WithStatus(ExistingObjectReplicationStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+ private:
+
+ ExistingObjectReplicationStatus m_status;
+ bool m_statusHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplicationStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplicationStatus.h
new file mode 100644
index 00000000000..85079898501
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplicationStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ExistingObjectReplicationStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace ExistingObjectReplicationStatusMapper
+{
+AWS_S3_API ExistingObjectReplicationStatus GetExistingObjectReplicationStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForExistingObjectReplicationStatus(ExistingObjectReplicationStatus value);
+} // namespace ExistingObjectReplicationStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExpirationStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExpirationStatus.h
new file mode 100644
index 00000000000..5aaa3da84c5
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExpirationStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ExpirationStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace ExpirationStatusMapper
+{
+AWS_S3_API ExpirationStatus GetExpirationStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForExpirationStatus(ExpirationStatus value);
+} // namespace ExpirationStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExpressionType.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExpressionType.h
new file mode 100644
index 00000000000..309c0741140
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ExpressionType.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ExpressionType
+ {
+ NOT_SET,
+ SQL
+ };
+
+namespace ExpressionTypeMapper
+{
+AWS_S3_API ExpressionType GetExpressionTypeForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForExpressionType(ExpressionType value);
+} // namespace ExpressionTypeMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FileHeaderInfo.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FileHeaderInfo.h
new file mode 100644
index 00000000000..227b3c91678
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FileHeaderInfo.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class FileHeaderInfo
+ {
+ NOT_SET,
+ USE,
+ IGNORE,
+ NONE
+ };
+
+namespace FileHeaderInfoMapper
+{
+AWS_S3_API FileHeaderInfo GetFileHeaderInfoForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForFileHeaderInfo(FileHeaderInfo value);
+} // namespace FileHeaderInfoMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FilterRule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FilterRule.h
new file mode 100644
index 00000000000..e63b80e32ca
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FilterRule.h
@@ -0,0 +1,154 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/FilterRuleName.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the Amazon S3 object key name to filter on and whether to filter on
+ * the suffix or prefix of the key name.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/FilterRule">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API FilterRule
+ {
+ public:
+ FilterRule();
+ FilterRule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ FilterRule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The object key name prefix or suffix identifying one or more objects to which
+ * the filtering rule applies. The maximum length is 1,024 characters. Overlapping
+ * prefixes and suffixes are not supported. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
+ * Event Notifications</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const FilterRuleName& GetName() const{ return m_name; }
+
+ /**
+ * <p>The object key name prefix or suffix identifying one or more objects to which
+ * the filtering rule applies. The maximum length is 1,024 characters. Overlapping
+ * prefixes and suffixes are not supported. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
+ * Event Notifications</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool NameHasBeenSet() const { return m_nameHasBeenSet; }
+
+ /**
+ * <p>The object key name prefix or suffix identifying one or more objects to which
+ * the filtering rule applies. The maximum length is 1,024 characters. Overlapping
+ * prefixes and suffixes are not supported. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
+ * Event Notifications</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetName(const FilterRuleName& value) { m_nameHasBeenSet = true; m_name = value; }
+
+ /**
+ * <p>The object key name prefix or suffix identifying one or more objects to which
+ * the filtering rule applies. The maximum length is 1,024 characters. Overlapping
+ * prefixes and suffixes are not supported. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
+ * Event Notifications</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetName(FilterRuleName&& value) { m_nameHasBeenSet = true; m_name = std::move(value); }
+
+ /**
+ * <p>The object key name prefix or suffix identifying one or more objects to which
+ * the filtering rule applies. The maximum length is 1,024 characters. Overlapping
+ * prefixes and suffixes are not supported. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
+ * Event Notifications</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline FilterRule& WithName(const FilterRuleName& value) { SetName(value); return *this;}
+
+ /**
+ * <p>The object key name prefix or suffix identifying one or more objects to which
+ * the filtering rule applies. The maximum length is 1,024 characters. Overlapping
+ * prefixes and suffixes are not supported. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
+ * Event Notifications</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline FilterRule& WithName(FilterRuleName&& value) { SetName(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The value that the filter searches for in object key names.</p>
+ */
+ inline const Aws::String& GetValue() const{ return m_value; }
+
+ /**
+ * <p>The value that the filter searches for in object key names.</p>
+ */
+ inline bool ValueHasBeenSet() const { return m_valueHasBeenSet; }
+
+ /**
+ * <p>The value that the filter searches for in object key names.</p>
+ */
+ inline void SetValue(const Aws::String& value) { m_valueHasBeenSet = true; m_value = value; }
+
+ /**
+ * <p>The value that the filter searches for in object key names.</p>
+ */
+ inline void SetValue(Aws::String&& value) { m_valueHasBeenSet = true; m_value = std::move(value); }
+
+ /**
+ * <p>The value that the filter searches for in object key names.</p>
+ */
+ inline void SetValue(const char* value) { m_valueHasBeenSet = true; m_value.assign(value); }
+
+ /**
+ * <p>The value that the filter searches for in object key names.</p>
+ */
+ inline FilterRule& WithValue(const Aws::String& value) { SetValue(value); return *this;}
+
+ /**
+ * <p>The value that the filter searches for in object key names.</p>
+ */
+ inline FilterRule& WithValue(Aws::String&& value) { SetValue(std::move(value)); return *this;}
+
+ /**
+ * <p>The value that the filter searches for in object key names.</p>
+ */
+ inline FilterRule& WithValue(const char* value) { SetValue(value); return *this;}
+
+ private:
+
+ FilterRuleName m_name;
+ bool m_nameHasBeenSet;
+
+ Aws::String m_value;
+ bool m_valueHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FilterRuleName.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FilterRuleName.h
new file mode 100644
index 00000000000..9642c02e384
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/FilterRuleName.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class FilterRuleName
+ {
+ NOT_SET,
+ prefix,
+ suffix
+ };
+
+namespace FilterRuleNameMapper
+{
+AWS_S3_API FilterRuleName GetFilterRuleNameForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForFilterRuleName(FilterRuleName value);
+} // namespace FilterRuleNameMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAccelerateConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAccelerateConfigurationRequest.h
new file mode 100644
index 00000000000..1c1fb18949b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAccelerateConfigurationRequest.h
@@ -0,0 +1,203 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketAccelerateConfigurationRequest : public S3Request
+ {
+ public:
+ GetBucketAccelerateConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketAccelerateConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is
+ * retrieved.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is
+ * retrieved.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is
+ * retrieved.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is
+ * retrieved.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is
+ * retrieved.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is
+ * retrieved.</p>
+ */
+ inline GetBucketAccelerateConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is
+ * retrieved.</p>
+ */
+ inline GetBucketAccelerateConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is
+ * retrieved.</p>
+ */
+ inline GetBucketAccelerateConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketAccelerateConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketAccelerateConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketAccelerateConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketAccelerateConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketAccelerateConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAccelerateConfigurationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAccelerateConfigurationResult.h
new file mode 100644
index 00000000000..7838cbb34d7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAccelerateConfigurationResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/BucketAccelerateStatus.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketAccelerateConfigurationResult
+ {
+ public:
+ GetBucketAccelerateConfigurationResult();
+ GetBucketAccelerateConfigurationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketAccelerateConfigurationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The accelerate configuration of the bucket.</p>
+ */
+ inline const BucketAccelerateStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>The accelerate configuration of the bucket.</p>
+ */
+ inline void SetStatus(const BucketAccelerateStatus& value) { m_status = value; }
+
+ /**
+ * <p>The accelerate configuration of the bucket.</p>
+ */
+ inline void SetStatus(BucketAccelerateStatus&& value) { m_status = std::move(value); }
+
+ /**
+ * <p>The accelerate configuration of the bucket.</p>
+ */
+ inline GetBucketAccelerateConfigurationResult& WithStatus(const BucketAccelerateStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>The accelerate configuration of the bucket.</p>
+ */
+ inline GetBucketAccelerateConfigurationResult& WithStatus(BucketAccelerateStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+ private:
+
+ BucketAccelerateStatus m_status;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAclRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAclRequest.h
new file mode 100644
index 00000000000..90071fcc072
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAclRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketAclRequest : public S3Request
+ {
+ public:
+ GetBucketAclRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketAcl"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>Specifies the S3 bucket whose ACL is being requested.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>Specifies the S3 bucket whose ACL is being requested.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>Specifies the S3 bucket whose ACL is being requested.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>Specifies the S3 bucket whose ACL is being requested.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>Specifies the S3 bucket whose ACL is being requested.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>Specifies the S3 bucket whose ACL is being requested.</p>
+ */
+ inline GetBucketAclRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>Specifies the S3 bucket whose ACL is being requested.</p>
+ */
+ inline GetBucketAclRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the S3 bucket whose ACL is being requested.</p>
+ */
+ inline GetBucketAclRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketAclRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketAclRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketAclRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketAclRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketAclRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketAclRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketAclRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketAclRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketAclRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAclResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAclResult.h
new file mode 100644
index 00000000000..dc3723c89ce
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAclResult.h
@@ -0,0 +1,107 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Owner.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Grant.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketAclResult
+ {
+ public:
+ GetBucketAclResult();
+ GetBucketAclResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketAclResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline const Owner& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline void SetOwner(const Owner& value) { m_owner = value; }
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline void SetOwner(Owner&& value) { m_owner = std::move(value); }
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline GetBucketAclResult& WithOwner(const Owner& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p>Container for the bucket owner's display name and ID.</p>
+ */
+ inline GetBucketAclResult& WithOwner(Owner&& value) { SetOwner(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline const Aws::Vector<Grant>& GetGrants() const{ return m_grants; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline void SetGrants(const Aws::Vector<Grant>& value) { m_grants = value; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline void SetGrants(Aws::Vector<Grant>&& value) { m_grants = std::move(value); }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline GetBucketAclResult& WithGrants(const Aws::Vector<Grant>& value) { SetGrants(value); return *this;}
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline GetBucketAclResult& WithGrants(Aws::Vector<Grant>&& value) { SetGrants(std::move(value)); return *this;}
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline GetBucketAclResult& AddGrants(const Grant& value) { m_grants.push_back(value); return *this; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline GetBucketAclResult& AddGrants(Grant&& value) { m_grants.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Owner m_owner;
+
+ Aws::Vector<Grant> m_grants;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAnalyticsConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAnalyticsConfigurationRequest.h
new file mode 100644
index 00000000000..63e6d8c7220
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAnalyticsConfigurationRequest.h
@@ -0,0 +1,247 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketAnalyticsConfigurationRequest : public S3Request
+ {
+ public:
+ GetBucketAnalyticsConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketAnalyticsConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is
+ * retrieved.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is
+ * retrieved.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is
+ * retrieved.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is
+ * retrieved.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is
+ * retrieved.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is
+ * retrieved.</p>
+ */
+ inline GetBucketAnalyticsConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is
+ * retrieved.</p>
+ */
+ inline GetBucketAnalyticsConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket from which an analytics configuration is
+ * retrieved.</p>
+ */
+ inline GetBucketAnalyticsConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline GetBucketAnalyticsConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline GetBucketAnalyticsConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline GetBucketAnalyticsConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketAnalyticsConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketAnalyticsConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketAnalyticsConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketAnalyticsConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketAnalyticsConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAnalyticsConfigurationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAnalyticsConfigurationResult.h
new file mode 100644
index 00000000000..d0847a14589
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketAnalyticsConfigurationResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/AnalyticsConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketAnalyticsConfigurationResult
+ {
+ public:
+ GetBucketAnalyticsConfigurationResult();
+ GetBucketAnalyticsConfigurationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketAnalyticsConfigurationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline const AnalyticsConfiguration& GetAnalyticsConfiguration() const{ return m_analyticsConfiguration; }
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline void SetAnalyticsConfiguration(const AnalyticsConfiguration& value) { m_analyticsConfiguration = value; }
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline void SetAnalyticsConfiguration(AnalyticsConfiguration&& value) { m_analyticsConfiguration = std::move(value); }
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline GetBucketAnalyticsConfigurationResult& WithAnalyticsConfiguration(const AnalyticsConfiguration& value) { SetAnalyticsConfiguration(value); return *this;}
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline GetBucketAnalyticsConfigurationResult& WithAnalyticsConfiguration(AnalyticsConfiguration&& value) { SetAnalyticsConfiguration(std::move(value)); return *this;}
+
+ private:
+
+ AnalyticsConfiguration m_analyticsConfiguration;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketCorsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketCorsRequest.h
new file mode 100644
index 00000000000..fabc83b57d9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketCorsRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketCorsRequest : public S3Request
+ {
+ public:
+ GetBucketCorsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketCors"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name for which to get the cors configuration.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name for which to get the cors configuration.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name for which to get the cors configuration.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name for which to get the cors configuration.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name for which to get the cors configuration.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name for which to get the cors configuration.</p>
+ */
+ inline GetBucketCorsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the cors configuration.</p>
+ */
+ inline GetBucketCorsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the cors configuration.</p>
+ */
+ inline GetBucketCorsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketCorsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketCorsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketCorsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketCorsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketCorsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketCorsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketCorsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketCorsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketCorsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketCorsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketCorsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketCorsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketCorsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketCorsResult.h
new file mode 100644
index 00000000000..8e0e34069f9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketCorsResult.h
@@ -0,0 +1,85 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/CORSRule.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketCorsResult
+ {
+ public:
+ GetBucketCorsResult();
+ GetBucketCorsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketCorsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline const Aws::Vector<CORSRule>& GetCORSRules() const{ return m_cORSRules; }
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline void SetCORSRules(const Aws::Vector<CORSRule>& value) { m_cORSRules = value; }
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline void SetCORSRules(Aws::Vector<CORSRule>&& value) { m_cORSRules = std::move(value); }
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline GetBucketCorsResult& WithCORSRules(const Aws::Vector<CORSRule>& value) { SetCORSRules(value); return *this;}
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline GetBucketCorsResult& WithCORSRules(Aws::Vector<CORSRule>&& value) { SetCORSRules(std::move(value)); return *this;}
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline GetBucketCorsResult& AddCORSRules(const CORSRule& value) { m_cORSRules.push_back(value); return *this; }
+
+ /**
+ * <p>A set of origins and methods (cross-origin access that you want to allow).
+ * You can add up to 100 rules to the configuration.</p>
+ */
+ inline GetBucketCorsResult& AddCORSRules(CORSRule&& value) { m_cORSRules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<CORSRule> m_cORSRules;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionRequest.h
new file mode 100644
index 00000000000..9d7f2f17a1d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionRequest.h
@@ -0,0 +1,203 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketEncryptionRequest : public S3Request
+ {
+ public:
+ GetBucketEncryptionRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketEncryption"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket from which the server-side encryption configuration is
+ * retrieved.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket from which the server-side encryption configuration is
+ * retrieved.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket from which the server-side encryption configuration is
+ * retrieved.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket from which the server-side encryption configuration is
+ * retrieved.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket from which the server-side encryption configuration is
+ * retrieved.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket from which the server-side encryption configuration is
+ * retrieved.</p>
+ */
+ inline GetBucketEncryptionRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket from which the server-side encryption configuration is
+ * retrieved.</p>
+ */
+ inline GetBucketEncryptionRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket from which the server-side encryption configuration is
+ * retrieved.</p>
+ */
+ inline GetBucketEncryptionRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketEncryptionRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketEncryptionRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketEncryptionRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketEncryptionRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketEncryptionRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketEncryptionRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketEncryptionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketEncryptionRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketEncryptionRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketEncryptionRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketEncryptionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketEncryptionRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionResult.h
new file mode 100644
index 00000000000..deab65dbd43
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionResult.h
@@ -0,0 +1,57 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ServerSideEncryptionConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketEncryptionResult
+ {
+ public:
+ GetBucketEncryptionResult();
+ GetBucketEncryptionResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketEncryptionResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+
+ inline const ServerSideEncryptionConfiguration& GetServerSideEncryptionConfiguration() const{ return m_serverSideEncryptionConfiguration; }
+
+
+ inline void SetServerSideEncryptionConfiguration(const ServerSideEncryptionConfiguration& value) { m_serverSideEncryptionConfiguration = value; }
+
+
+ inline void SetServerSideEncryptionConfiguration(ServerSideEncryptionConfiguration&& value) { m_serverSideEncryptionConfiguration = std::move(value); }
+
+
+ inline GetBucketEncryptionResult& WithServerSideEncryptionConfiguration(const ServerSideEncryptionConfiguration& value) { SetServerSideEncryptionConfiguration(value); return *this;}
+
+
+ inline GetBucketEncryptionResult& WithServerSideEncryptionConfiguration(ServerSideEncryptionConfiguration&& value) { SetServerSideEncryptionConfiguration(std::move(value)); return *this;}
+
+ private:
+
+ ServerSideEncryptionConfiguration m_serverSideEncryptionConfiguration;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketIntelligentTieringConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketIntelligentTieringConfigurationRequest.h
new file mode 100644
index 00000000000..ddba23557e7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketIntelligentTieringConfigurationRequest.h
@@ -0,0 +1,185 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketIntelligentTieringConfigurationRequest : public S3Request
+ {
+ public:
+ GetBucketIntelligentTieringConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketIntelligentTieringConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline GetBucketIntelligentTieringConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline GetBucketIntelligentTieringConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline GetBucketIntelligentTieringConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline GetBucketIntelligentTieringConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline GetBucketIntelligentTieringConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline GetBucketIntelligentTieringConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketIntelligentTieringConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketIntelligentTieringConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketIntelligentTieringConfigurationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketIntelligentTieringConfigurationResult.h
new file mode 100644
index 00000000000..a039bb60be1
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketIntelligentTieringConfigurationResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/IntelligentTieringConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketIntelligentTieringConfigurationResult
+ {
+ public:
+ GetBucketIntelligentTieringConfigurationResult();
+ GetBucketIntelligentTieringConfigurationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketIntelligentTieringConfigurationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline const IntelligentTieringConfiguration& GetIntelligentTieringConfiguration() const{ return m_intelligentTieringConfiguration; }
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetIntelligentTieringConfiguration(const IntelligentTieringConfiguration& value) { m_intelligentTieringConfiguration = value; }
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetIntelligentTieringConfiguration(IntelligentTieringConfiguration&& value) { m_intelligentTieringConfiguration = std::move(value); }
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline GetBucketIntelligentTieringConfigurationResult& WithIntelligentTieringConfiguration(const IntelligentTieringConfiguration& value) { SetIntelligentTieringConfiguration(value); return *this;}
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline GetBucketIntelligentTieringConfigurationResult& WithIntelligentTieringConfiguration(IntelligentTieringConfiguration&& value) { SetIntelligentTieringConfiguration(std::move(value)); return *this;}
+
+ private:
+
+ IntelligentTieringConfiguration m_intelligentTieringConfiguration;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketInventoryConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketInventoryConfigurationRequest.h
new file mode 100644
index 00000000000..3eb1bb67556
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketInventoryConfigurationRequest.h
@@ -0,0 +1,247 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketInventoryConfigurationRequest : public S3Request
+ {
+ public:
+ GetBucketInventoryConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketInventoryConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to
+ * retrieve.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to
+ * retrieve.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to
+ * retrieve.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to
+ * retrieve.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to
+ * retrieve.</p>
+ */
+ inline GetBucketInventoryConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to
+ * retrieve.</p>
+ */
+ inline GetBucketInventoryConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the inventory configuration to
+ * retrieve.</p>
+ */
+ inline GetBucketInventoryConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline GetBucketInventoryConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline GetBucketInventoryConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline GetBucketInventoryConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketInventoryConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketInventoryConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketInventoryConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketInventoryConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketInventoryConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketInventoryConfigurationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketInventoryConfigurationResult.h
new file mode 100644
index 00000000000..034c56c8ef7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketInventoryConfigurationResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/InventoryConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketInventoryConfigurationResult
+ {
+ public:
+ GetBucketInventoryConfigurationResult();
+ GetBucketInventoryConfigurationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketInventoryConfigurationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline const InventoryConfiguration& GetInventoryConfiguration() const{ return m_inventoryConfiguration; }
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline void SetInventoryConfiguration(const InventoryConfiguration& value) { m_inventoryConfiguration = value; }
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline void SetInventoryConfiguration(InventoryConfiguration&& value) { m_inventoryConfiguration = std::move(value); }
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline GetBucketInventoryConfigurationResult& WithInventoryConfiguration(const InventoryConfiguration& value) { SetInventoryConfiguration(value); return *this;}
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline GetBucketInventoryConfigurationResult& WithInventoryConfiguration(InventoryConfiguration&& value) { SetInventoryConfiguration(std::move(value)); return *this;}
+
+ private:
+
+ InventoryConfiguration m_inventoryConfiguration;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLifecycleConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLifecycleConfigurationRequest.h
new file mode 100644
index 00000000000..8797dbd7d0f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLifecycleConfigurationRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketLifecycleConfigurationRequest : public S3Request
+ {
+ public:
+ GetBucketLifecycleConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketLifecycleConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket for which to get the lifecycle information.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which to get the lifecycle information.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which to get the lifecycle information.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which to get the lifecycle information.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the lifecycle information.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the lifecycle information.</p>
+ */
+ inline GetBucketLifecycleConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the lifecycle information.</p>
+ */
+ inline GetBucketLifecycleConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the lifecycle information.</p>
+ */
+ inline GetBucketLifecycleConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketLifecycleConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketLifecycleConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketLifecycleConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketLifecycleConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketLifecycleConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLifecycleConfigurationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLifecycleConfigurationResult.h
new file mode 100644
index 00000000000..c04c22a758f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLifecycleConfigurationResult.h
@@ -0,0 +1,78 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/LifecycleRule.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketLifecycleConfigurationResult
+ {
+ public:
+ GetBucketLifecycleConfigurationResult();
+ GetBucketLifecycleConfigurationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketLifecycleConfigurationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Container for a lifecycle rule.</p>
+ */
+ inline const Aws::Vector<LifecycleRule>& GetRules() const{ return m_rules; }
+
+ /**
+ * <p>Container for a lifecycle rule.</p>
+ */
+ inline void SetRules(const Aws::Vector<LifecycleRule>& value) { m_rules = value; }
+
+ /**
+ * <p>Container for a lifecycle rule.</p>
+ */
+ inline void SetRules(Aws::Vector<LifecycleRule>&& value) { m_rules = std::move(value); }
+
+ /**
+ * <p>Container for a lifecycle rule.</p>
+ */
+ inline GetBucketLifecycleConfigurationResult& WithRules(const Aws::Vector<LifecycleRule>& value) { SetRules(value); return *this;}
+
+ /**
+ * <p>Container for a lifecycle rule.</p>
+ */
+ inline GetBucketLifecycleConfigurationResult& WithRules(Aws::Vector<LifecycleRule>&& value) { SetRules(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for a lifecycle rule.</p>
+ */
+ inline GetBucketLifecycleConfigurationResult& AddRules(const LifecycleRule& value) { m_rules.push_back(value); return *this; }
+
+ /**
+ * <p>Container for a lifecycle rule.</p>
+ */
+ inline GetBucketLifecycleConfigurationResult& AddRules(LifecycleRule&& value) { m_rules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<LifecycleRule> m_rules;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLocationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLocationRequest.h
new file mode 100644
index 00000000000..777f5521f86
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLocationRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketLocationRequest : public S3Request
+ {
+ public:
+ GetBucketLocationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketLocation"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket for which to get the location.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which to get the location.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which to get the location.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which to get the location.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the location.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the location.</p>
+ */
+ inline GetBucketLocationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the location.</p>
+ */
+ inline GetBucketLocationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the location.</p>
+ */
+ inline GetBucketLocationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketLocationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketLocationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketLocationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketLocationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketLocationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketLocationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketLocationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketLocationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketLocationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketLocationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketLocationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketLocationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLocationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLocationResult.h
new file mode 100644
index 00000000000..4f777648cc0
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLocationResult.h
@@ -0,0 +1,87 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/BucketLocationConstraint.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketLocationResult
+ {
+ public:
+ GetBucketLocationResult();
+ GetBucketLocationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketLocationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Specifies the Region where the bucket resides. For a list of all the Amazon
+ * S3 supported location constraints by Region, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a>. Buckets in Region <code>us-east-1</code> have a
+ * LocationConstraint of <code>null</code>.</p>
+ */
+ inline const BucketLocationConstraint& GetLocationConstraint() const{ return m_locationConstraint; }
+
+ /**
+ * <p>Specifies the Region where the bucket resides. For a list of all the Amazon
+ * S3 supported location constraints by Region, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a>. Buckets in Region <code>us-east-1</code> have a
+ * LocationConstraint of <code>null</code>.</p>
+ */
+ inline void SetLocationConstraint(const BucketLocationConstraint& value) { m_locationConstraint = value; }
+
+ /**
+ * <p>Specifies the Region where the bucket resides. For a list of all the Amazon
+ * S3 supported location constraints by Region, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a>. Buckets in Region <code>us-east-1</code> have a
+ * LocationConstraint of <code>null</code>.</p>
+ */
+ inline void SetLocationConstraint(BucketLocationConstraint&& value) { m_locationConstraint = std::move(value); }
+
+ /**
+ * <p>Specifies the Region where the bucket resides. For a list of all the Amazon
+ * S3 supported location constraints by Region, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a>. Buckets in Region <code>us-east-1</code> have a
+ * LocationConstraint of <code>null</code>.</p>
+ */
+ inline GetBucketLocationResult& WithLocationConstraint(const BucketLocationConstraint& value) { SetLocationConstraint(value); return *this;}
+
+ /**
+ * <p>Specifies the Region where the bucket resides. For a list of all the Amazon
+ * S3 supported location constraints by Region, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a>. Buckets in Region <code>us-east-1</code> have a
+ * LocationConstraint of <code>null</code>.</p>
+ */
+ inline GetBucketLocationResult& WithLocationConstraint(BucketLocationConstraint&& value) { SetLocationConstraint(std::move(value)); return *this;}
+
+ private:
+
+ BucketLocationConstraint m_locationConstraint;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLoggingRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLoggingRequest.h
new file mode 100644
index 00000000000..f0decdec548
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLoggingRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketLoggingRequest : public S3Request
+ {
+ public:
+ GetBucketLoggingRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketLogging"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name for which to get the logging information.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name for which to get the logging information.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name for which to get the logging information.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name for which to get the logging information.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name for which to get the logging information.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name for which to get the logging information.</p>
+ */
+ inline GetBucketLoggingRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the logging information.</p>
+ */
+ inline GetBucketLoggingRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the logging information.</p>
+ */
+ inline GetBucketLoggingRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketLoggingRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketLoggingRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketLoggingRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketLoggingRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketLoggingRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketLoggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketLoggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketLoggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketLoggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketLoggingRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketLoggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketLoggingRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLoggingResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLoggingResult.h
new file mode 100644
index 00000000000..1495a54ba44
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketLoggingResult.h
@@ -0,0 +1,57 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/LoggingEnabled.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketLoggingResult
+ {
+ public:
+ GetBucketLoggingResult();
+ GetBucketLoggingResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketLoggingResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+
+ inline const LoggingEnabled& GetLoggingEnabled() const{ return m_loggingEnabled; }
+
+
+ inline void SetLoggingEnabled(const LoggingEnabled& value) { m_loggingEnabled = value; }
+
+
+ inline void SetLoggingEnabled(LoggingEnabled&& value) { m_loggingEnabled = std::move(value); }
+
+
+ inline GetBucketLoggingResult& WithLoggingEnabled(const LoggingEnabled& value) { SetLoggingEnabled(value); return *this;}
+
+
+ inline GetBucketLoggingResult& WithLoggingEnabled(LoggingEnabled&& value) { SetLoggingEnabled(std::move(value)); return *this;}
+
+ private:
+
+ LoggingEnabled m_loggingEnabled;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketMetricsConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketMetricsConfigurationRequest.h
new file mode 100644
index 00000000000..d52e987778c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketMetricsConfigurationRequest.h
@@ -0,0 +1,239 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketMetricsConfigurationRequest : public S3Request
+ {
+ public:
+ GetBucketMetricsConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketMetricsConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to retrieve.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to retrieve.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to retrieve.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to retrieve.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to retrieve.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to retrieve.</p>
+ */
+ inline GetBucketMetricsConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to retrieve.</p>
+ */
+ inline GetBucketMetricsConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the metrics configuration to retrieve.</p>
+ */
+ inline GetBucketMetricsConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline GetBucketMetricsConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline GetBucketMetricsConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline GetBucketMetricsConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketMetricsConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketMetricsConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketMetricsConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketMetricsConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketMetricsConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketMetricsConfigurationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketMetricsConfigurationResult.h
new file mode 100644
index 00000000000..bb60e97dbf5
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketMetricsConfigurationResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/MetricsConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketMetricsConfigurationResult
+ {
+ public:
+ GetBucketMetricsConfigurationResult();
+ GetBucketMetricsConfigurationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketMetricsConfigurationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline const MetricsConfiguration& GetMetricsConfiguration() const{ return m_metricsConfiguration; }
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline void SetMetricsConfiguration(const MetricsConfiguration& value) { m_metricsConfiguration = value; }
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline void SetMetricsConfiguration(MetricsConfiguration&& value) { m_metricsConfiguration = std::move(value); }
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline GetBucketMetricsConfigurationResult& WithMetricsConfiguration(const MetricsConfiguration& value) { SetMetricsConfiguration(value); return *this;}
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline GetBucketMetricsConfigurationResult& WithMetricsConfiguration(MetricsConfiguration&& value) { SetMetricsConfiguration(std::move(value)); return *this;}
+
+ private:
+
+ MetricsConfiguration m_metricsConfiguration;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketNotificationConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketNotificationConfigurationRequest.h
new file mode 100644
index 00000000000..20a671471ad
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketNotificationConfigurationRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketNotificationConfigurationRequest : public S3Request
+ {
+ public:
+ GetBucketNotificationConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketNotificationConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket for which to get the notification configuration.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which to get the notification configuration.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which to get the notification configuration.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which to get the notification configuration.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the notification configuration.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the notification configuration.</p>
+ */
+ inline GetBucketNotificationConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the notification configuration.</p>
+ */
+ inline GetBucketNotificationConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the notification configuration.</p>
+ */
+ inline GetBucketNotificationConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketNotificationConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketNotificationConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketNotificationConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketNotificationConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketNotificationConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketNotificationConfigurationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketNotificationConfigurationResult.h
new file mode 100644
index 00000000000..a8fe0671cab
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketNotificationConfigurationResult.h
@@ -0,0 +1,184 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/TopicConfiguration.h>
+#include <aws/s3/model/QueueConfiguration.h>
+#include <aws/s3/model/LambdaFunctionConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ /**
+ * <p>A container for specifying the notification configuration of the bucket. If
+ * this element is empty, notifications are turned off for the
+ * bucket.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/NotificationConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API GetBucketNotificationConfigurationResult
+ {
+ public:
+ GetBucketNotificationConfigurationResult();
+ GetBucketNotificationConfigurationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketNotificationConfigurationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline const Aws::Vector<TopicConfiguration>& GetTopicConfigurations() const{ return m_topicConfigurations; }
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline void SetTopicConfigurations(const Aws::Vector<TopicConfiguration>& value) { m_topicConfigurations = value; }
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline void SetTopicConfigurations(Aws::Vector<TopicConfiguration>&& value) { m_topicConfigurations = std::move(value); }
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& WithTopicConfigurations(const Aws::Vector<TopicConfiguration>& value) { SetTopicConfigurations(value); return *this;}
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& WithTopicConfigurations(Aws::Vector<TopicConfiguration>&& value) { SetTopicConfigurations(std::move(value)); return *this;}
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& AddTopicConfigurations(const TopicConfiguration& value) { m_topicConfigurations.push_back(value); return *this; }
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& AddTopicConfigurations(TopicConfiguration&& value) { m_topicConfigurations.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline const Aws::Vector<QueueConfiguration>& GetQueueConfigurations() const{ return m_queueConfigurations; }
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline void SetQueueConfigurations(const Aws::Vector<QueueConfiguration>& value) { m_queueConfigurations = value; }
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline void SetQueueConfigurations(Aws::Vector<QueueConfiguration>&& value) { m_queueConfigurations = std::move(value); }
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& WithQueueConfigurations(const Aws::Vector<QueueConfiguration>& value) { SetQueueConfigurations(value); return *this;}
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& WithQueueConfigurations(Aws::Vector<QueueConfiguration>&& value) { SetQueueConfigurations(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& AddQueueConfigurations(const QueueConfiguration& value) { m_queueConfigurations.push_back(value); return *this; }
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& AddQueueConfigurations(QueueConfiguration&& value) { m_queueConfigurations.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline const Aws::Vector<LambdaFunctionConfiguration>& GetLambdaFunctionConfigurations() const{ return m_lambdaFunctionConfigurations; }
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline void SetLambdaFunctionConfigurations(const Aws::Vector<LambdaFunctionConfiguration>& value) { m_lambdaFunctionConfigurations = value; }
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline void SetLambdaFunctionConfigurations(Aws::Vector<LambdaFunctionConfiguration>&& value) { m_lambdaFunctionConfigurations = std::move(value); }
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& WithLambdaFunctionConfigurations(const Aws::Vector<LambdaFunctionConfiguration>& value) { SetLambdaFunctionConfigurations(value); return *this;}
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& WithLambdaFunctionConfigurations(Aws::Vector<LambdaFunctionConfiguration>&& value) { SetLambdaFunctionConfigurations(std::move(value)); return *this;}
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& AddLambdaFunctionConfigurations(const LambdaFunctionConfiguration& value) { m_lambdaFunctionConfigurations.push_back(value); return *this; }
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline GetBucketNotificationConfigurationResult& AddLambdaFunctionConfigurations(LambdaFunctionConfiguration&& value) { m_lambdaFunctionConfigurations.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<TopicConfiguration> m_topicConfigurations;
+
+ Aws::Vector<QueueConfiguration> m_queueConfigurations;
+
+ Aws::Vector<LambdaFunctionConfiguration> m_lambdaFunctionConfigurations;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketOwnershipControlsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketOwnershipControlsRequest.h
new file mode 100644
index 00000000000..ce8a7de017c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketOwnershipControlsRequest.h
@@ -0,0 +1,203 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketOwnershipControlsRequest : public S3Request
+ {
+ public:
+ GetBucketOwnershipControlsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketOwnershipControls"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to retrieve. </p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to retrieve. </p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to retrieve. </p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to retrieve. </p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to retrieve. </p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to retrieve. </p>
+ */
+ inline GetBucketOwnershipControlsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to retrieve. </p>
+ */
+ inline GetBucketOwnershipControlsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to retrieve. </p>
+ */
+ inline GetBucketOwnershipControlsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketOwnershipControlsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketOwnershipControlsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketOwnershipControlsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketOwnershipControlsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketOwnershipControlsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketOwnershipControlsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketOwnershipControlsResult.h
new file mode 100644
index 00000000000..9c28367889d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketOwnershipControlsResult.h
@@ -0,0 +1,72 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/OwnershipControls.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketOwnershipControlsResult
+ {
+ public:
+ GetBucketOwnershipControlsResult();
+ GetBucketOwnershipControlsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketOwnershipControlsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * currently in effect for this Amazon S3 bucket.</p>
+ */
+ inline const OwnershipControls& GetOwnershipControls() const{ return m_ownershipControls; }
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * currently in effect for this Amazon S3 bucket.</p>
+ */
+ inline void SetOwnershipControls(const OwnershipControls& value) { m_ownershipControls = value; }
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * currently in effect for this Amazon S3 bucket.</p>
+ */
+ inline void SetOwnershipControls(OwnershipControls&& value) { m_ownershipControls = std::move(value); }
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * currently in effect for this Amazon S3 bucket.</p>
+ */
+ inline GetBucketOwnershipControlsResult& WithOwnershipControls(const OwnershipControls& value) { SetOwnershipControls(value); return *this;}
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * currently in effect for this Amazon S3 bucket.</p>
+ */
+ inline GetBucketOwnershipControlsResult& WithOwnershipControls(OwnershipControls&& value) { SetOwnershipControls(std::move(value)); return *this;}
+
+ private:
+
+ OwnershipControls m_ownershipControls;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyRequest.h
new file mode 100644
index 00000000000..a4fa4600ed0
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketPolicyRequest : public S3Request
+ {
+ public:
+ GetBucketPolicyRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketPolicy"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name for which to get the bucket policy.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name for which to get the bucket policy.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name for which to get the bucket policy.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name for which to get the bucket policy.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name for which to get the bucket policy.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name for which to get the bucket policy.</p>
+ */
+ inline GetBucketPolicyRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the bucket policy.</p>
+ */
+ inline GetBucketPolicyRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the bucket policy.</p>
+ */
+ inline GetBucketPolicyRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketPolicyRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketPolicyRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketPolicyRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketPolicyRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketPolicyRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketPolicyRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketPolicyRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketPolicyRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketPolicyRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketPolicyRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketPolicyRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketPolicyRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyResult.h
new file mode 100644
index 00000000000..80857238c6d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyResult.h
@@ -0,0 +1,56 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/stream/ResponseStream.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketPolicyResult
+ {
+ public:
+ GetBucketPolicyResult();
+ //We have to define these because Microsoft doesn't auto generate them
+ GetBucketPolicyResult(GetBucketPolicyResult&&);
+ GetBucketPolicyResult& operator=(GetBucketPolicyResult&&);
+ //we delete these because Microsoft doesn't handle move generation correctly
+ //and we therefore don't trust them to get it right here either.
+ GetBucketPolicyResult(const GetBucketPolicyResult&) = delete;
+ GetBucketPolicyResult& operator=(const GetBucketPolicyResult&) = delete;
+
+
+ GetBucketPolicyResult(Aws::AmazonWebServiceResult<Aws::Utils::Stream::ResponseStream>&& result);
+ GetBucketPolicyResult& operator=(Aws::AmazonWebServiceResult<Aws::Utils::Stream::ResponseStream>&& result);
+
+
+
+ /**
+ * <p>The bucket policy as a JSON document.</p>
+ */
+ inline Aws::IOStream& GetPolicy() { return m_policy.GetUnderlyingStream(); }
+
+ /**
+ * <p>The bucket policy as a JSON document.</p>
+ */
+ inline void ReplaceBody(Aws::IOStream* body) { m_policy = Aws::Utils::Stream::ResponseStream(body); }
+
+ private:
+
+ Aws::Utils::Stream::ResponseStream m_policy;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyStatusRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyStatusRequest.h
new file mode 100644
index 00000000000..941ce2ee44a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyStatusRequest.h
@@ -0,0 +1,203 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketPolicyStatusRequest : public S3Request
+ {
+ public:
+ GetBucketPolicyStatusRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketPolicyStatus"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose policy status you want to
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose policy status you want to
+ * retrieve.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose policy status you want to
+ * retrieve.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose policy status you want to
+ * retrieve.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose policy status you want to
+ * retrieve.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose policy status you want to
+ * retrieve.</p>
+ */
+ inline GetBucketPolicyStatusRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose policy status you want to
+ * retrieve.</p>
+ */
+ inline GetBucketPolicyStatusRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose policy status you want to
+ * retrieve.</p>
+ */
+ inline GetBucketPolicyStatusRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketPolicyStatusRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketPolicyStatusRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketPolicyStatusRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketPolicyStatusRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketPolicyStatusRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketPolicyStatusRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketPolicyStatusRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketPolicyStatusRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketPolicyStatusRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketPolicyStatusRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketPolicyStatusRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketPolicyStatusRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyStatusResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyStatusResult.h
new file mode 100644
index 00000000000..d1935f3590a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketPolicyStatusResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/PolicyStatus.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketPolicyStatusResult
+ {
+ public:
+ GetBucketPolicyStatusResult();
+ GetBucketPolicyStatusResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketPolicyStatusResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The policy status for the specified bucket.</p>
+ */
+ inline const PolicyStatus& GetPolicyStatus() const{ return m_policyStatus; }
+
+ /**
+ * <p>The policy status for the specified bucket.</p>
+ */
+ inline void SetPolicyStatus(const PolicyStatus& value) { m_policyStatus = value; }
+
+ /**
+ * <p>The policy status for the specified bucket.</p>
+ */
+ inline void SetPolicyStatus(PolicyStatus&& value) { m_policyStatus = std::move(value); }
+
+ /**
+ * <p>The policy status for the specified bucket.</p>
+ */
+ inline GetBucketPolicyStatusResult& WithPolicyStatus(const PolicyStatus& value) { SetPolicyStatus(value); return *this;}
+
+ /**
+ * <p>The policy status for the specified bucket.</p>
+ */
+ inline GetBucketPolicyStatusResult& WithPolicyStatus(PolicyStatus&& value) { SetPolicyStatus(std::move(value)); return *this;}
+
+ private:
+
+ PolicyStatus m_policyStatus;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketReplicationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketReplicationRequest.h
new file mode 100644
index 00000000000..8ee31eefefb
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketReplicationRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketReplicationRequest : public S3Request
+ {
+ public:
+ GetBucketReplicationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketReplication"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name for which to get the replication information.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name for which to get the replication information.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name for which to get the replication information.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name for which to get the replication information.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name for which to get the replication information.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name for which to get the replication information.</p>
+ */
+ inline GetBucketReplicationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the replication information.</p>
+ */
+ inline GetBucketReplicationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the replication information.</p>
+ */
+ inline GetBucketReplicationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketReplicationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketReplicationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketReplicationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketReplicationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketReplicationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketReplicationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketReplicationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketReplicationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketReplicationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketReplicationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketReplicationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketReplicationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketReplicationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketReplicationResult.h
new file mode 100644
index 00000000000..ff53188ffd1
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketReplicationResult.h
@@ -0,0 +1,57 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ReplicationConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketReplicationResult
+ {
+ public:
+ GetBucketReplicationResult();
+ GetBucketReplicationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketReplicationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+
+ inline const ReplicationConfiguration& GetReplicationConfiguration() const{ return m_replicationConfiguration; }
+
+
+ inline void SetReplicationConfiguration(const ReplicationConfiguration& value) { m_replicationConfiguration = value; }
+
+
+ inline void SetReplicationConfiguration(ReplicationConfiguration&& value) { m_replicationConfiguration = std::move(value); }
+
+
+ inline GetBucketReplicationResult& WithReplicationConfiguration(const ReplicationConfiguration& value) { SetReplicationConfiguration(value); return *this;}
+
+
+ inline GetBucketReplicationResult& WithReplicationConfiguration(ReplicationConfiguration&& value) { SetReplicationConfiguration(std::move(value)); return *this;}
+
+ private:
+
+ ReplicationConfiguration m_replicationConfiguration;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketRequestPaymentRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketRequestPaymentRequest.h
new file mode 100644
index 00000000000..6421700b816
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketRequestPaymentRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketRequestPaymentRequest : public S3Request
+ {
+ public:
+ GetBucketRequestPaymentRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketRequestPayment"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket for which to get the payment request configuration</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which to get the payment request configuration</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which to get the payment request configuration</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which to get the payment request configuration</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the payment request configuration</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the payment request configuration</p>
+ */
+ inline GetBucketRequestPaymentRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the payment request configuration</p>
+ */
+ inline GetBucketRequestPaymentRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the payment request configuration</p>
+ */
+ inline GetBucketRequestPaymentRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketRequestPaymentRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketRequestPaymentRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketRequestPaymentRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketRequestPaymentRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketRequestPaymentRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketRequestPaymentRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketRequestPaymentRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketRequestPaymentRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketRequestPaymentRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketRequestPaymentRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketRequestPaymentRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketRequestPaymentRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketRequestPaymentResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketRequestPaymentResult.h
new file mode 100644
index 00000000000..48b84e3462a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketRequestPaymentResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Payer.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketRequestPaymentResult
+ {
+ public:
+ GetBucketRequestPaymentResult();
+ GetBucketRequestPaymentResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketRequestPaymentResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline const Payer& GetPayer() const{ return m_payer; }
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline void SetPayer(const Payer& value) { m_payer = value; }
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline void SetPayer(Payer&& value) { m_payer = std::move(value); }
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline GetBucketRequestPaymentResult& WithPayer(const Payer& value) { SetPayer(value); return *this;}
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline GetBucketRequestPaymentResult& WithPayer(Payer&& value) { SetPayer(std::move(value)); return *this;}
+
+ private:
+
+ Payer m_payer;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketTaggingRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketTaggingRequest.h
new file mode 100644
index 00000000000..7b17610bb24
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketTaggingRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketTaggingRequest : public S3Request
+ {
+ public:
+ GetBucketTaggingRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketTagging"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket for which to get the tagging information.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which to get the tagging information.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which to get the tagging information.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which to get the tagging information.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the tagging information.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the tagging information.</p>
+ */
+ inline GetBucketTaggingRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the tagging information.</p>
+ */
+ inline GetBucketTaggingRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the tagging information.</p>
+ */
+ inline GetBucketTaggingRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketTaggingRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketTaggingRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketTaggingRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketTaggingRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketTaggingRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketTaggingRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketTaggingRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketTaggingResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketTaggingResult.h
new file mode 100644
index 00000000000..7555a772b4f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketTaggingResult.h
@@ -0,0 +1,78 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tag.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketTaggingResult
+ {
+ public:
+ GetBucketTaggingResult();
+ GetBucketTaggingResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketTaggingResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline const Aws::Vector<Tag>& GetTagSet() const{ return m_tagSet; }
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline void SetTagSet(const Aws::Vector<Tag>& value) { m_tagSet = value; }
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline void SetTagSet(Aws::Vector<Tag>&& value) { m_tagSet = std::move(value); }
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline GetBucketTaggingResult& WithTagSet(const Aws::Vector<Tag>& value) { SetTagSet(value); return *this;}
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline GetBucketTaggingResult& WithTagSet(Aws::Vector<Tag>&& value) { SetTagSet(std::move(value)); return *this;}
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline GetBucketTaggingResult& AddTagSet(const Tag& value) { m_tagSet.push_back(value); return *this; }
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline GetBucketTaggingResult& AddTagSet(Tag&& value) { m_tagSet.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<Tag> m_tagSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketVersioningRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketVersioningRequest.h
new file mode 100644
index 00000000000..5edd374cbe8
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketVersioningRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketVersioningRequest : public S3Request
+ {
+ public:
+ GetBucketVersioningRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketVersioning"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket for which to get the versioning information.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which to get the versioning information.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which to get the versioning information.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which to get the versioning information.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the versioning information.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which to get the versioning information.</p>
+ */
+ inline GetBucketVersioningRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the versioning information.</p>
+ */
+ inline GetBucketVersioningRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to get the versioning information.</p>
+ */
+ inline GetBucketVersioningRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketVersioningRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketVersioningRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketVersioningRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketVersioningRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketVersioningRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketVersioningRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketVersioningRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketVersioningRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketVersioningRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketVersioningRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketVersioningRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketVersioningRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketVersioningResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketVersioningResult.h
new file mode 100644
index 00000000000..2e4d7707518
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketVersioningResult.h
@@ -0,0 +1,111 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/BucketVersioningStatus.h>
+#include <aws/s3/model/MFADeleteStatus.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketVersioningResult
+ {
+ public:
+ GetBucketVersioningResult();
+ GetBucketVersioningResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketVersioningResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline const BucketVersioningStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline void SetStatus(const BucketVersioningStatus& value) { m_status = value; }
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline void SetStatus(BucketVersioningStatus&& value) { m_status = std::move(value); }
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline GetBucketVersioningResult& WithStatus(const BucketVersioningStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline GetBucketVersioningResult& WithStatus(BucketVersioningStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline const MFADeleteStatus& GetMFADelete() const{ return m_mFADelete; }
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline void SetMFADelete(const MFADeleteStatus& value) { m_mFADelete = value; }
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline void SetMFADelete(MFADeleteStatus&& value) { m_mFADelete = std::move(value); }
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline GetBucketVersioningResult& WithMFADelete(const MFADeleteStatus& value) { SetMFADelete(value); return *this;}
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline GetBucketVersioningResult& WithMFADelete(MFADeleteStatus&& value) { SetMFADelete(std::move(value)); return *this;}
+
+ private:
+
+ BucketVersioningStatus m_status;
+
+ MFADeleteStatus m_mFADelete;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketWebsiteRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketWebsiteRequest.h
new file mode 100644
index 00000000000..198b4d3b9d2
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketWebsiteRequest.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetBucketWebsiteRequest : public S3Request
+ {
+ public:
+ GetBucketWebsiteRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetBucketWebsite"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name for which to get the website configuration.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name for which to get the website configuration.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name for which to get the website configuration.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name for which to get the website configuration.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name for which to get the website configuration.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name for which to get the website configuration.</p>
+ */
+ inline GetBucketWebsiteRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the website configuration.</p>
+ */
+ inline GetBucketWebsiteRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name for which to get the website configuration.</p>
+ */
+ inline GetBucketWebsiteRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketWebsiteRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketWebsiteRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetBucketWebsiteRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetBucketWebsiteRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetBucketWebsiteRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetBucketWebsiteRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetBucketWebsiteRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketWebsiteRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketWebsiteRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetBucketWebsiteRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetBucketWebsiteRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetBucketWebsiteRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketWebsiteResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketWebsiteResult.h
new file mode 100644
index 00000000000..f5cb5577b5c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketWebsiteResult.h
@@ -0,0 +1,180 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/RedirectAllRequestsTo.h>
+#include <aws/s3/model/IndexDocument.h>
+#include <aws/s3/model/ErrorDocument.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/RoutingRule.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetBucketWebsiteResult
+ {
+ public:
+ GetBucketWebsiteResult();
+ GetBucketWebsiteResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetBucketWebsiteResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Specifies the redirect behavior of all requests to a website endpoint of an
+ * Amazon S3 bucket.</p>
+ */
+ inline const RedirectAllRequestsTo& GetRedirectAllRequestsTo() const{ return m_redirectAllRequestsTo; }
+
+ /**
+ * <p>Specifies the redirect behavior of all requests to a website endpoint of an
+ * Amazon S3 bucket.</p>
+ */
+ inline void SetRedirectAllRequestsTo(const RedirectAllRequestsTo& value) { m_redirectAllRequestsTo = value; }
+
+ /**
+ * <p>Specifies the redirect behavior of all requests to a website endpoint of an
+ * Amazon S3 bucket.</p>
+ */
+ inline void SetRedirectAllRequestsTo(RedirectAllRequestsTo&& value) { m_redirectAllRequestsTo = std::move(value); }
+
+ /**
+ * <p>Specifies the redirect behavior of all requests to a website endpoint of an
+ * Amazon S3 bucket.</p>
+ */
+ inline GetBucketWebsiteResult& WithRedirectAllRequestsTo(const RedirectAllRequestsTo& value) { SetRedirectAllRequestsTo(value); return *this;}
+
+ /**
+ * <p>Specifies the redirect behavior of all requests to a website endpoint of an
+ * Amazon S3 bucket.</p>
+ */
+ inline GetBucketWebsiteResult& WithRedirectAllRequestsTo(RedirectAllRequestsTo&& value) { SetRedirectAllRequestsTo(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The name of the index document for the website (for example
+ * <code>index.html</code>).</p>
+ */
+ inline const IndexDocument& GetIndexDocument() const{ return m_indexDocument; }
+
+ /**
+ * <p>The name of the index document for the website (for example
+ * <code>index.html</code>).</p>
+ */
+ inline void SetIndexDocument(const IndexDocument& value) { m_indexDocument = value; }
+
+ /**
+ * <p>The name of the index document for the website (for example
+ * <code>index.html</code>).</p>
+ */
+ inline void SetIndexDocument(IndexDocument&& value) { m_indexDocument = std::move(value); }
+
+ /**
+ * <p>The name of the index document for the website (for example
+ * <code>index.html</code>).</p>
+ */
+ inline GetBucketWebsiteResult& WithIndexDocument(const IndexDocument& value) { SetIndexDocument(value); return *this;}
+
+ /**
+ * <p>The name of the index document for the website (for example
+ * <code>index.html</code>).</p>
+ */
+ inline GetBucketWebsiteResult& WithIndexDocument(IndexDocument&& value) { SetIndexDocument(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The object key name of the website error document to use for 4XX class
+ * errors.</p>
+ */
+ inline const ErrorDocument& GetErrorDocument() const{ return m_errorDocument; }
+
+ /**
+ * <p>The object key name of the website error document to use for 4XX class
+ * errors.</p>
+ */
+ inline void SetErrorDocument(const ErrorDocument& value) { m_errorDocument = value; }
+
+ /**
+ * <p>The object key name of the website error document to use for 4XX class
+ * errors.</p>
+ */
+ inline void SetErrorDocument(ErrorDocument&& value) { m_errorDocument = std::move(value); }
+
+ /**
+ * <p>The object key name of the website error document to use for 4XX class
+ * errors.</p>
+ */
+ inline GetBucketWebsiteResult& WithErrorDocument(const ErrorDocument& value) { SetErrorDocument(value); return *this;}
+
+ /**
+ * <p>The object key name of the website error document to use for 4XX class
+ * errors.</p>
+ */
+ inline GetBucketWebsiteResult& WithErrorDocument(ErrorDocument&& value) { SetErrorDocument(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline const Aws::Vector<RoutingRule>& GetRoutingRules() const{ return m_routingRules; }
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline void SetRoutingRules(const Aws::Vector<RoutingRule>& value) { m_routingRules = value; }
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline void SetRoutingRules(Aws::Vector<RoutingRule>&& value) { m_routingRules = std::move(value); }
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline GetBucketWebsiteResult& WithRoutingRules(const Aws::Vector<RoutingRule>& value) { SetRoutingRules(value); return *this;}
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline GetBucketWebsiteResult& WithRoutingRules(Aws::Vector<RoutingRule>&& value) { SetRoutingRules(std::move(value)); return *this;}
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline GetBucketWebsiteResult& AddRoutingRules(const RoutingRule& value) { m_routingRules.push_back(value); return *this; }
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline GetBucketWebsiteResult& AddRoutingRules(RoutingRule&& value) { m_routingRules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ RedirectAllRequestsTo m_redirectAllRequestsTo;
+
+ IndexDocument m_indexDocument;
+
+ ErrorDocument m_errorDocument;
+
+ Aws::Vector<RoutingRule> m_routingRules;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectAclRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectAclRequest.h
new file mode 100644
index 00000000000..219922f755e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectAclRequest.h
@@ -0,0 +1,378 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetObjectAclRequest : public S3Request
+ {
+ public:
+ GetObjectAclRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetObjectAcl"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name that contains the object for which to get the ACL
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name that contains the object for which to get the ACL
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name that contains the object for which to get the ACL
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name that contains the object for which to get the ACL
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name that contains the object for which to get the ACL
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name that contains the object for which to get the ACL
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectAclRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name that contains the object for which to get the ACL
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectAclRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name that contains the object for which to get the ACL
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectAclRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The key of the object for which to get the ACL information.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The key of the object for which to get the ACL information.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The key of the object for which to get the ACL information.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The key of the object for which to get the ACL information.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The key of the object for which to get the ACL information.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The key of the object for which to get the ACL information.</p>
+ */
+ inline GetObjectAclRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The key of the object for which to get the ACL information.</p>
+ */
+ inline GetObjectAclRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The key of the object for which to get the ACL information.</p>
+ */
+ inline GetObjectAclRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline GetObjectAclRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline GetObjectAclRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline GetObjectAclRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline GetObjectAclRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline GetObjectAclRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectAclRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectAclRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectAclRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetObjectAclRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetObjectAclRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetObjectAclRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetObjectAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectAclRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetObjectAclRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectAclRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectAclResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectAclResult.h
new file mode 100644
index 00000000000..26f7bae0351
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectAclResult.h
@@ -0,0 +1,126 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Owner.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <aws/s3/model/Grant.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetObjectAclResult
+ {
+ public:
+ GetObjectAclResult();
+ GetObjectAclResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetObjectAclResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p> Container for the bucket owner's display name and ID.</p>
+ */
+ inline const Owner& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p> Container for the bucket owner's display name and ID.</p>
+ */
+ inline void SetOwner(const Owner& value) { m_owner = value; }
+
+ /**
+ * <p> Container for the bucket owner's display name and ID.</p>
+ */
+ inline void SetOwner(Owner&& value) { m_owner = std::move(value); }
+
+ /**
+ * <p> Container for the bucket owner's display name and ID.</p>
+ */
+ inline GetObjectAclResult& WithOwner(const Owner& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p> Container for the bucket owner's display name and ID.</p>
+ */
+ inline GetObjectAclResult& WithOwner(Owner&& value) { SetOwner(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline const Aws::Vector<Grant>& GetGrants() const{ return m_grants; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline void SetGrants(const Aws::Vector<Grant>& value) { m_grants = value; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline void SetGrants(Aws::Vector<Grant>&& value) { m_grants = std::move(value); }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline GetObjectAclResult& WithGrants(const Aws::Vector<Grant>& value) { SetGrants(value); return *this;}
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline GetObjectAclResult& WithGrants(Aws::Vector<Grant>&& value) { SetGrants(std::move(value)); return *this;}
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline GetObjectAclResult& AddGrants(const Grant& value) { m_grants.push_back(value); return *this; }
+
+ /**
+ * <p>A list of grants.</p>
+ */
+ inline GetObjectAclResult& AddGrants(Grant&& value) { m_grants.push_back(std::move(value)); return *this; }
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline GetObjectAclResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline GetObjectAclResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ Owner m_owner;
+
+ Aws::Vector<Grant> m_grants;
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLegalHoldRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLegalHoldRequest.h
new file mode 100644
index 00000000000..e6e2801de85
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLegalHoldRequest.h
@@ -0,0 +1,386 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetObjectLegalHoldRequest : public S3Request
+ {
+ public:
+ GetObjectLegalHoldRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetObjectLegalHold"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name containing the object whose Legal Hold status you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name containing the object whose Legal Hold status you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name containing the object whose Legal Hold status you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name containing the object whose Legal Hold status you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name containing the object whose Legal Hold status you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name containing the object whose Legal Hold status you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name containing the object whose Legal Hold status you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name containing the object whose Legal Hold status you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The key name for the object whose Legal Hold status you want to retrieve.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The key name for the object whose Legal Hold status you want to retrieve.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The key name for the object whose Legal Hold status you want to retrieve.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The key name for the object whose Legal Hold status you want to retrieve.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The key name for the object whose Legal Hold status you want to retrieve.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The key name for the object whose Legal Hold status you want to retrieve.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The key name for the object whose Legal Hold status you want to retrieve.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The key name for the object whose Legal Hold status you want to retrieve.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The version ID of the object whose Legal Hold status you want to
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The version ID of the object whose Legal Hold status you want to
+ * retrieve.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>The version ID of the object whose Legal Hold status you want to
+ * retrieve.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>The version ID of the object whose Legal Hold status you want to
+ * retrieve.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>The version ID of the object whose Legal Hold status you want to
+ * retrieve.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>The version ID of the object whose Legal Hold status you want to
+ * retrieve.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The version ID of the object whose Legal Hold status you want to
+ * retrieve.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The version ID of the object whose Legal Hold status you want to
+ * retrieve.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline GetObjectLegalHoldRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline GetObjectLegalHoldRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectLegalHoldRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetObjectLegalHoldRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetObjectLegalHoldRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetObjectLegalHoldRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetObjectLegalHoldRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectLegalHoldRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectLegalHoldRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetObjectLegalHoldRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectLegalHoldRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectLegalHoldRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLegalHoldResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLegalHoldResult.h
new file mode 100644
index 00000000000..c69ac4c2c45
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLegalHoldResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ObjectLockLegalHold.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetObjectLegalHoldResult
+ {
+ public:
+ GetObjectLegalHoldResult();
+ GetObjectLegalHoldResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetObjectLegalHoldResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The current Legal Hold status for the specified object.</p>
+ */
+ inline const ObjectLockLegalHold& GetLegalHold() const{ return m_legalHold; }
+
+ /**
+ * <p>The current Legal Hold status for the specified object.</p>
+ */
+ inline void SetLegalHold(const ObjectLockLegalHold& value) { m_legalHold = value; }
+
+ /**
+ * <p>The current Legal Hold status for the specified object.</p>
+ */
+ inline void SetLegalHold(ObjectLockLegalHold&& value) { m_legalHold = std::move(value); }
+
+ /**
+ * <p>The current Legal Hold status for the specified object.</p>
+ */
+ inline GetObjectLegalHoldResult& WithLegalHold(const ObjectLockLegalHold& value) { SetLegalHold(value); return *this;}
+
+ /**
+ * <p>The current Legal Hold status for the specified object.</p>
+ */
+ inline GetObjectLegalHoldResult& WithLegalHold(ObjectLockLegalHold&& value) { SetLegalHold(std::move(value)); return *this;}
+
+ private:
+
+ ObjectLockLegalHold m_legalHold;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLockConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLockConfigurationRequest.h
new file mode 100644
index 00000000000..a99710c72a9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLockConfigurationRequest.h
@@ -0,0 +1,267 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetObjectLockConfigurationRequest : public S3Request
+ {
+ public:
+ GetObjectLockConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetObjectLockConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to retrieve.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to retrieve.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to retrieve.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to retrieve.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to retrieve.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to retrieve.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectLockConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to retrieve.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectLockConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to retrieve.</p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectLockConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectLockConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectLockConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectLockConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetObjectLockConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetObjectLockConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetObjectLockConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetObjectLockConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectLockConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectLockConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetObjectLockConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectLockConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectLockConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLockConfigurationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLockConfigurationResult.h
new file mode 100644
index 00000000000..8d1a8701abc
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectLockConfigurationResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ObjectLockConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetObjectLockConfigurationResult
+ {
+ public:
+ GetObjectLockConfigurationResult();
+ GetObjectLockConfigurationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetObjectLockConfigurationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The specified bucket's Object Lock configuration.</p>
+ */
+ inline const ObjectLockConfiguration& GetObjectLockConfiguration() const{ return m_objectLockConfiguration; }
+
+ /**
+ * <p>The specified bucket's Object Lock configuration.</p>
+ */
+ inline void SetObjectLockConfiguration(const ObjectLockConfiguration& value) { m_objectLockConfiguration = value; }
+
+ /**
+ * <p>The specified bucket's Object Lock configuration.</p>
+ */
+ inline void SetObjectLockConfiguration(ObjectLockConfiguration&& value) { m_objectLockConfiguration = std::move(value); }
+
+ /**
+ * <p>The specified bucket's Object Lock configuration.</p>
+ */
+ inline GetObjectLockConfigurationResult& WithObjectLockConfiguration(const ObjectLockConfiguration& value) { SetObjectLockConfiguration(value); return *this;}
+
+ /**
+ * <p>The specified bucket's Object Lock configuration.</p>
+ */
+ inline GetObjectLockConfigurationResult& WithObjectLockConfiguration(ObjectLockConfiguration&& value) { SetObjectLockConfiguration(std::move(value)); return *this;}
+
+ private:
+
+ ObjectLockConfiguration m_objectLockConfiguration;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRequest.h
new file mode 100644
index 00000000000..c26051713d2
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRequest.h
@@ -0,0 +1,1185 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetObjectRequest : public S3Request
+ {
+ public:
+ GetObjectRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetObject"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline const Aws::String& GetIfMatch() const{ return m_ifMatch; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline bool IfMatchHasBeenSet() const { return m_ifMatchHasBeenSet; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfMatch(const Aws::String& value) { m_ifMatchHasBeenSet = true; m_ifMatch = value; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfMatch(Aws::String&& value) { m_ifMatchHasBeenSet = true; m_ifMatch = std::move(value); }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfMatch(const char* value) { m_ifMatchHasBeenSet = true; m_ifMatch.assign(value); }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline GetObjectRequest& WithIfMatch(const Aws::String& value) { SetIfMatch(value); return *this;}
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline GetObjectRequest& WithIfMatch(Aws::String&& value) { SetIfMatch(std::move(value)); return *this;}
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline GetObjectRequest& WithIfMatch(const char* value) { SetIfMatch(value); return *this;}
+
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline const Aws::Utils::DateTime& GetIfModifiedSince() const{ return m_ifModifiedSince; }
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline bool IfModifiedSinceHasBeenSet() const { return m_ifModifiedSinceHasBeenSet; }
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfModifiedSince(const Aws::Utils::DateTime& value) { m_ifModifiedSinceHasBeenSet = true; m_ifModifiedSince = value; }
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfModifiedSince(Aws::Utils::DateTime&& value) { m_ifModifiedSinceHasBeenSet = true; m_ifModifiedSince = std::move(value); }
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline GetObjectRequest& WithIfModifiedSince(const Aws::Utils::DateTime& value) { SetIfModifiedSince(value); return *this;}
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline GetObjectRequest& WithIfModifiedSince(Aws::Utils::DateTime&& value) { SetIfModifiedSince(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline const Aws::String& GetIfNoneMatch() const{ return m_ifNoneMatch; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline bool IfNoneMatchHasBeenSet() const { return m_ifNoneMatchHasBeenSet; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfNoneMatch(const Aws::String& value) { m_ifNoneMatchHasBeenSet = true; m_ifNoneMatch = value; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfNoneMatch(Aws::String&& value) { m_ifNoneMatchHasBeenSet = true; m_ifNoneMatch = std::move(value); }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfNoneMatch(const char* value) { m_ifNoneMatchHasBeenSet = true; m_ifNoneMatch.assign(value); }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline GetObjectRequest& WithIfNoneMatch(const Aws::String& value) { SetIfNoneMatch(value); return *this;}
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline GetObjectRequest& WithIfNoneMatch(Aws::String&& value) { SetIfNoneMatch(std::move(value)); return *this;}
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline GetObjectRequest& WithIfNoneMatch(const char* value) { SetIfNoneMatch(value); return *this;}
+
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline const Aws::Utils::DateTime& GetIfUnmodifiedSince() const{ return m_ifUnmodifiedSince; }
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline bool IfUnmodifiedSinceHasBeenSet() const { return m_ifUnmodifiedSinceHasBeenSet; }
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfUnmodifiedSince(const Aws::Utils::DateTime& value) { m_ifUnmodifiedSinceHasBeenSet = true; m_ifUnmodifiedSince = value; }
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfUnmodifiedSince(Aws::Utils::DateTime&& value) { m_ifUnmodifiedSinceHasBeenSet = true; m_ifUnmodifiedSince = std::move(value); }
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline GetObjectRequest& WithIfUnmodifiedSince(const Aws::Utils::DateTime& value) { SetIfUnmodifiedSince(value); return *this;}
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline GetObjectRequest& WithIfUnmodifiedSince(Aws::Utils::DateTime&& value) { SetIfUnmodifiedSince(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Key of the object to get.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Key of the object to get.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Key of the object to get.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Key of the object to get.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Key of the object to get.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Key of the object to get.</p>
+ */
+ inline GetObjectRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Key of the object to get.</p>
+ */
+ inline GetObjectRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Key of the object to get.</p>
+ */
+ inline GetObjectRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline const Aws::String& GetRange() const{ return m_range; }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline bool RangeHasBeenSet() const { return m_rangeHasBeenSet; }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline void SetRange(const Aws::String& value) { m_rangeHasBeenSet = true; m_range = value; }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline void SetRange(Aws::String&& value) { m_rangeHasBeenSet = true; m_range = std::move(value); }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline void SetRange(const char* value) { m_rangeHasBeenSet = true; m_range.assign(value); }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline GetObjectRequest& WithRange(const Aws::String& value) { SetRange(value); return *this;}
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline GetObjectRequest& WithRange(Aws::String&& value) { SetRange(std::move(value)); return *this;}
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline GetObjectRequest& WithRange(const char* value) { SetRange(value); return *this;}
+
+
+ /**
+ * <p>Sets the <code>Cache-Control</code> header of the response.</p>
+ */
+ inline const Aws::String& GetResponseCacheControl() const{ return m_responseCacheControl; }
+
+ /**
+ * <p>Sets the <code>Cache-Control</code> header of the response.</p>
+ */
+ inline bool ResponseCacheControlHasBeenSet() const { return m_responseCacheControlHasBeenSet; }
+
+ /**
+ * <p>Sets the <code>Cache-Control</code> header of the response.</p>
+ */
+ inline void SetResponseCacheControl(const Aws::String& value) { m_responseCacheControlHasBeenSet = true; m_responseCacheControl = value; }
+
+ /**
+ * <p>Sets the <code>Cache-Control</code> header of the response.</p>
+ */
+ inline void SetResponseCacheControl(Aws::String&& value) { m_responseCacheControlHasBeenSet = true; m_responseCacheControl = std::move(value); }
+
+ /**
+ * <p>Sets the <code>Cache-Control</code> header of the response.</p>
+ */
+ inline void SetResponseCacheControl(const char* value) { m_responseCacheControlHasBeenSet = true; m_responseCacheControl.assign(value); }
+
+ /**
+ * <p>Sets the <code>Cache-Control</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseCacheControl(const Aws::String& value) { SetResponseCacheControl(value); return *this;}
+
+ /**
+ * <p>Sets the <code>Cache-Control</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseCacheControl(Aws::String&& value) { SetResponseCacheControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Sets the <code>Cache-Control</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseCacheControl(const char* value) { SetResponseCacheControl(value); return *this;}
+
+
+ /**
+ * <p>Sets the <code>Content-Disposition</code> header of the response</p>
+ */
+ inline const Aws::String& GetResponseContentDisposition() const{ return m_responseContentDisposition; }
+
+ /**
+ * <p>Sets the <code>Content-Disposition</code> header of the response</p>
+ */
+ inline bool ResponseContentDispositionHasBeenSet() const { return m_responseContentDispositionHasBeenSet; }
+
+ /**
+ * <p>Sets the <code>Content-Disposition</code> header of the response</p>
+ */
+ inline void SetResponseContentDisposition(const Aws::String& value) { m_responseContentDispositionHasBeenSet = true; m_responseContentDisposition = value; }
+
+ /**
+ * <p>Sets the <code>Content-Disposition</code> header of the response</p>
+ */
+ inline void SetResponseContentDisposition(Aws::String&& value) { m_responseContentDispositionHasBeenSet = true; m_responseContentDisposition = std::move(value); }
+
+ /**
+ * <p>Sets the <code>Content-Disposition</code> header of the response</p>
+ */
+ inline void SetResponseContentDisposition(const char* value) { m_responseContentDispositionHasBeenSet = true; m_responseContentDisposition.assign(value); }
+
+ /**
+ * <p>Sets the <code>Content-Disposition</code> header of the response</p>
+ */
+ inline GetObjectRequest& WithResponseContentDisposition(const Aws::String& value) { SetResponseContentDisposition(value); return *this;}
+
+ /**
+ * <p>Sets the <code>Content-Disposition</code> header of the response</p>
+ */
+ inline GetObjectRequest& WithResponseContentDisposition(Aws::String&& value) { SetResponseContentDisposition(std::move(value)); return *this;}
+
+ /**
+ * <p>Sets the <code>Content-Disposition</code> header of the response</p>
+ */
+ inline GetObjectRequest& WithResponseContentDisposition(const char* value) { SetResponseContentDisposition(value); return *this;}
+
+
+ /**
+ * <p>Sets the <code>Content-Encoding</code> header of the response.</p>
+ */
+ inline const Aws::String& GetResponseContentEncoding() const{ return m_responseContentEncoding; }
+
+ /**
+ * <p>Sets the <code>Content-Encoding</code> header of the response.</p>
+ */
+ inline bool ResponseContentEncodingHasBeenSet() const { return m_responseContentEncodingHasBeenSet; }
+
+ /**
+ * <p>Sets the <code>Content-Encoding</code> header of the response.</p>
+ */
+ inline void SetResponseContentEncoding(const Aws::String& value) { m_responseContentEncodingHasBeenSet = true; m_responseContentEncoding = value; }
+
+ /**
+ * <p>Sets the <code>Content-Encoding</code> header of the response.</p>
+ */
+ inline void SetResponseContentEncoding(Aws::String&& value) { m_responseContentEncodingHasBeenSet = true; m_responseContentEncoding = std::move(value); }
+
+ /**
+ * <p>Sets the <code>Content-Encoding</code> header of the response.</p>
+ */
+ inline void SetResponseContentEncoding(const char* value) { m_responseContentEncodingHasBeenSet = true; m_responseContentEncoding.assign(value); }
+
+ /**
+ * <p>Sets the <code>Content-Encoding</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseContentEncoding(const Aws::String& value) { SetResponseContentEncoding(value); return *this;}
+
+ /**
+ * <p>Sets the <code>Content-Encoding</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseContentEncoding(Aws::String&& value) { SetResponseContentEncoding(std::move(value)); return *this;}
+
+ /**
+ * <p>Sets the <code>Content-Encoding</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseContentEncoding(const char* value) { SetResponseContentEncoding(value); return *this;}
+
+
+ /**
+ * <p>Sets the <code>Content-Language</code> header of the response.</p>
+ */
+ inline const Aws::String& GetResponseContentLanguage() const{ return m_responseContentLanguage; }
+
+ /**
+ * <p>Sets the <code>Content-Language</code> header of the response.</p>
+ */
+ inline bool ResponseContentLanguageHasBeenSet() const { return m_responseContentLanguageHasBeenSet; }
+
+ /**
+ * <p>Sets the <code>Content-Language</code> header of the response.</p>
+ */
+ inline void SetResponseContentLanguage(const Aws::String& value) { m_responseContentLanguageHasBeenSet = true; m_responseContentLanguage = value; }
+
+ /**
+ * <p>Sets the <code>Content-Language</code> header of the response.</p>
+ */
+ inline void SetResponseContentLanguage(Aws::String&& value) { m_responseContentLanguageHasBeenSet = true; m_responseContentLanguage = std::move(value); }
+
+ /**
+ * <p>Sets the <code>Content-Language</code> header of the response.</p>
+ */
+ inline void SetResponseContentLanguage(const char* value) { m_responseContentLanguageHasBeenSet = true; m_responseContentLanguage.assign(value); }
+
+ /**
+ * <p>Sets the <code>Content-Language</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseContentLanguage(const Aws::String& value) { SetResponseContentLanguage(value); return *this;}
+
+ /**
+ * <p>Sets the <code>Content-Language</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseContentLanguage(Aws::String&& value) { SetResponseContentLanguage(std::move(value)); return *this;}
+
+ /**
+ * <p>Sets the <code>Content-Language</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseContentLanguage(const char* value) { SetResponseContentLanguage(value); return *this;}
+
+
+ /**
+ * <p>Sets the <code>Content-Type</code> header of the response.</p>
+ */
+ inline const Aws::String& GetResponseContentType() const{ return m_responseContentType; }
+
+ /**
+ * <p>Sets the <code>Content-Type</code> header of the response.</p>
+ */
+ inline bool ResponseContentTypeHasBeenSet() const { return m_responseContentTypeHasBeenSet; }
+
+ /**
+ * <p>Sets the <code>Content-Type</code> header of the response.</p>
+ */
+ inline void SetResponseContentType(const Aws::String& value) { m_responseContentTypeHasBeenSet = true; m_responseContentType = value; }
+
+ /**
+ * <p>Sets the <code>Content-Type</code> header of the response.</p>
+ */
+ inline void SetResponseContentType(Aws::String&& value) { m_responseContentTypeHasBeenSet = true; m_responseContentType = std::move(value); }
+
+ /**
+ * <p>Sets the <code>Content-Type</code> header of the response.</p>
+ */
+ inline void SetResponseContentType(const char* value) { m_responseContentTypeHasBeenSet = true; m_responseContentType.assign(value); }
+
+ /**
+ * <p>Sets the <code>Content-Type</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseContentType(const Aws::String& value) { SetResponseContentType(value); return *this;}
+
+ /**
+ * <p>Sets the <code>Content-Type</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseContentType(Aws::String&& value) { SetResponseContentType(std::move(value)); return *this;}
+
+ /**
+ * <p>Sets the <code>Content-Type</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseContentType(const char* value) { SetResponseContentType(value); return *this;}
+
+
+ /**
+ * <p>Sets the <code>Expires</code> header of the response.</p>
+ */
+ inline const Aws::Utils::DateTime& GetResponseExpires() const{ return m_responseExpires; }
+
+ /**
+ * <p>Sets the <code>Expires</code> header of the response.</p>
+ */
+ inline bool ResponseExpiresHasBeenSet() const { return m_responseExpiresHasBeenSet; }
+
+ /**
+ * <p>Sets the <code>Expires</code> header of the response.</p>
+ */
+ inline void SetResponseExpires(const Aws::Utils::DateTime& value) { m_responseExpiresHasBeenSet = true; m_responseExpires = value; }
+
+ /**
+ * <p>Sets the <code>Expires</code> header of the response.</p>
+ */
+ inline void SetResponseExpires(Aws::Utils::DateTime&& value) { m_responseExpiresHasBeenSet = true; m_responseExpires = std::move(value); }
+
+ /**
+ * <p>Sets the <code>Expires</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseExpires(const Aws::Utils::DateTime& value) { SetResponseExpires(value); return *this;}
+
+ /**
+ * <p>Sets the <code>Expires</code> header of the response.</p>
+ */
+ inline GetObjectRequest& WithResponseExpires(Aws::Utils::DateTime&& value) { SetResponseExpires(std::move(value)); return *this;}
+
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline GetObjectRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline GetObjectRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline GetObjectRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline bool SSECustomerAlgorithmHasBeenSet() const { return m_sSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline GetObjectRequest& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline GetObjectRequest& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline GetObjectRequest& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline const Aws::String& GetSSECustomerKey() const{ return m_sSECustomerKey; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline bool SSECustomerKeyHasBeenSet() const { return m_sSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const Aws::String& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = value; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(Aws::String&& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = std::move(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const char* value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey.assign(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline GetObjectRequest& WithSSECustomerKey(const Aws::String& value) { SetSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline GetObjectRequest& WithSSECustomerKey(Aws::String&& value) { SetSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline GetObjectRequest& WithSSECustomerKey(const char* value) { SetSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline bool SSECustomerKeyMD5HasBeenSet() const { return m_sSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline GetObjectRequest& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline GetObjectRequest& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline GetObjectRequest& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline GetObjectRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline GetObjectRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Part number of the object being read. This is a positive integer between 1
+ * and 10,000. Effectively performs a 'ranged' GET request for the part specified.
+ * Useful for downloading just a part of an object.</p>
+ */
+ inline int GetPartNumber() const{ return m_partNumber; }
+
+ /**
+ * <p>Part number of the object being read. This is a positive integer between 1
+ * and 10,000. Effectively performs a 'ranged' GET request for the part specified.
+ * Useful for downloading just a part of an object.</p>
+ */
+ inline bool PartNumberHasBeenSet() const { return m_partNumberHasBeenSet; }
+
+ /**
+ * <p>Part number of the object being read. This is a positive integer between 1
+ * and 10,000. Effectively performs a 'ranged' GET request for the part specified.
+ * Useful for downloading just a part of an object.</p>
+ */
+ inline void SetPartNumber(int value) { m_partNumberHasBeenSet = true; m_partNumber = value; }
+
+ /**
+ * <p>Part number of the object being read. This is a positive integer between 1
+ * and 10,000. Effectively performs a 'ranged' GET request for the part specified.
+ * Useful for downloading just a part of an object.</p>
+ */
+ inline GetObjectRequest& WithPartNumber(int value) { SetPartNumber(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetObjectRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetObjectRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetObjectRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_ifMatch;
+ bool m_ifMatchHasBeenSet;
+
+ Aws::Utils::DateTime m_ifModifiedSince;
+ bool m_ifModifiedSinceHasBeenSet;
+
+ Aws::String m_ifNoneMatch;
+ bool m_ifNoneMatchHasBeenSet;
+
+ Aws::Utils::DateTime m_ifUnmodifiedSince;
+ bool m_ifUnmodifiedSinceHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_range;
+ bool m_rangeHasBeenSet;
+
+ Aws::String m_responseCacheControl;
+ bool m_responseCacheControlHasBeenSet;
+
+ Aws::String m_responseContentDisposition;
+ bool m_responseContentDispositionHasBeenSet;
+
+ Aws::String m_responseContentEncoding;
+ bool m_responseContentEncodingHasBeenSet;
+
+ Aws::String m_responseContentLanguage;
+ bool m_responseContentLanguageHasBeenSet;
+
+ Aws::String m_responseContentType;
+ bool m_responseContentTypeHasBeenSet;
+
+ Aws::Utils::DateTime m_responseExpires;
+ bool m_responseExpiresHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ Aws::String m_sSECustomerAlgorithm;
+ bool m_sSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_sSECustomerKey;
+ bool m_sSECustomerKeyHasBeenSet;
+
+ Aws::String m_sSECustomerKeyMD5;
+ bool m_sSECustomerKeyMD5HasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ int m_partNumber;
+ bool m_partNumberHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectResult.h
new file mode 100644
index 00000000000..e9eb7bf9ede
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectResult.h
@@ -0,0 +1,1239 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/stream/ResponseStream.h>
+#include <aws/core/utils/Array.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <aws/s3/model/ReplicationStatus.h>
+#include <aws/s3/model/ObjectLockMode.h>
+#include <aws/s3/model/ObjectLockLegalHoldStatus.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetObjectResult
+ {
+ public:
+ GetObjectResult();
+ //We have to define these because Microsoft doesn't auto generate them
+ GetObjectResult(GetObjectResult&&);
+ GetObjectResult& operator=(GetObjectResult&&);
+ //we delete these because Microsoft doesn't handle move generation correctly
+ //and we therefore don't trust them to get it right here either.
+ GetObjectResult(const GetObjectResult&) = delete;
+ GetObjectResult& operator=(const GetObjectResult&) = delete;
+
+
+ GetObjectResult(Aws::AmazonWebServiceResult<Aws::Utils::Stream::ResponseStream>&& result);
+ GetObjectResult& operator=(Aws::AmazonWebServiceResult<Aws::Utils::Stream::ResponseStream>&& result);
+
+
+
+ /**
+ * <p>Object data.</p>
+ */
+ inline Aws::IOStream& GetBody() { return m_body.GetUnderlyingStream(); }
+
+ /**
+ * <p>Object data.</p>
+ */
+ inline void ReplaceBody(Aws::IOStream* body) { m_body = Aws::Utils::Stream::ResponseStream(body); }
+
+
+ /**
+ * <p>Specifies whether the object retrieved was (true) or was not (false) a Delete
+ * Marker. If false, this response header does not appear in the response.</p>
+ */
+ inline bool GetDeleteMarker() const{ return m_deleteMarker; }
+
+ /**
+ * <p>Specifies whether the object retrieved was (true) or was not (false) a Delete
+ * Marker. If false, this response header does not appear in the response.</p>
+ */
+ inline void SetDeleteMarker(bool value) { m_deleteMarker = value; }
+
+ /**
+ * <p>Specifies whether the object retrieved was (true) or was not (false) a Delete
+ * Marker. If false, this response header does not appear in the response.</p>
+ */
+ inline GetObjectResult& WithDeleteMarker(bool value) { SetDeleteMarker(value); return *this;}
+
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline const Aws::String& GetAcceptRanges() const{ return m_acceptRanges; }
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline void SetAcceptRanges(const Aws::String& value) { m_acceptRanges = value; }
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline void SetAcceptRanges(Aws::String&& value) { m_acceptRanges = std::move(value); }
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline void SetAcceptRanges(const char* value) { m_acceptRanges.assign(value); }
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline GetObjectResult& WithAcceptRanges(const Aws::String& value) { SetAcceptRanges(value); return *this;}
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline GetObjectResult& WithAcceptRanges(Aws::String&& value) { SetAcceptRanges(std::move(value)); return *this;}
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline GetObjectResult& WithAcceptRanges(const char* value) { SetAcceptRanges(value); return *this;}
+
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline const Aws::String& GetExpiration() const{ return m_expiration; }
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline void SetExpiration(const Aws::String& value) { m_expiration = value; }
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline void SetExpiration(Aws::String&& value) { m_expiration = std::move(value); }
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline void SetExpiration(const char* value) { m_expiration.assign(value); }
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline GetObjectResult& WithExpiration(const Aws::String& value) { SetExpiration(value); return *this;}
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline GetObjectResult& WithExpiration(Aws::String&& value) { SetExpiration(std::move(value)); return *this;}
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline GetObjectResult& WithExpiration(const char* value) { SetExpiration(value); return *this;}
+
+
+ /**
+ * <p>Provides information about object restoration operation and expiration time
+ * of the restored object copy.</p>
+ */
+ inline const Aws::String& GetRestore() const{ return m_restore; }
+
+ /**
+ * <p>Provides information about object restoration operation and expiration time
+ * of the restored object copy.</p>
+ */
+ inline void SetRestore(const Aws::String& value) { m_restore = value; }
+
+ /**
+ * <p>Provides information about object restoration operation and expiration time
+ * of the restored object copy.</p>
+ */
+ inline void SetRestore(Aws::String&& value) { m_restore = std::move(value); }
+
+ /**
+ * <p>Provides information about object restoration operation and expiration time
+ * of the restored object copy.</p>
+ */
+ inline void SetRestore(const char* value) { m_restore.assign(value); }
+
+ /**
+ * <p>Provides information about object restoration operation and expiration time
+ * of the restored object copy.</p>
+ */
+ inline GetObjectResult& WithRestore(const Aws::String& value) { SetRestore(value); return *this;}
+
+ /**
+ * <p>Provides information about object restoration operation and expiration time
+ * of the restored object copy.</p>
+ */
+ inline GetObjectResult& WithRestore(Aws::String&& value) { SetRestore(std::move(value)); return *this;}
+
+ /**
+ * <p>Provides information about object restoration operation and expiration time
+ * of the restored object copy.</p>
+ */
+ inline GetObjectResult& WithRestore(const char* value) { SetRestore(value); return *this;}
+
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline const Aws::Utils::DateTime& GetLastModified() const{ return m_lastModified; }
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline void SetLastModified(const Aws::Utils::DateTime& value) { m_lastModified = value; }
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline void SetLastModified(Aws::Utils::DateTime&& value) { m_lastModified = std::move(value); }
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline GetObjectResult& WithLastModified(const Aws::Utils::DateTime& value) { SetLastModified(value); return *this;}
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline GetObjectResult& WithLastModified(Aws::Utils::DateTime&& value) { SetLastModified(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Size of the body in bytes.</p>
+ */
+ inline long long GetContentLength() const{ return m_contentLength; }
+
+ /**
+ * <p>Size of the body in bytes.</p>
+ */
+ inline void SetContentLength(long long value) { m_contentLength = value; }
+
+ /**
+ * <p>Size of the body in bytes.</p>
+ */
+ inline GetObjectResult& WithContentLength(long long value) { SetContentLength(value); return *this;}
+
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTag = value; }
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTag = std::move(value); }
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline void SetETag(const char* value) { m_eTag.assign(value); }
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline GetObjectResult& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline GetObjectResult& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline GetObjectResult& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>This is set to the number of metadata entries not returned in
+ * <code>x-amz-meta</code> headers. This can happen if you create metadata using an
+ * API like SOAP that supports more flexible metadata than the REST API. For
+ * example, using SOAP, you can create metadata whose values are not legal HTTP
+ * headers.</p>
+ */
+ inline int GetMissingMeta() const{ return m_missingMeta; }
+
+ /**
+ * <p>This is set to the number of metadata entries not returned in
+ * <code>x-amz-meta</code> headers. This can happen if you create metadata using an
+ * API like SOAP that supports more flexible metadata than the REST API. For
+ * example, using SOAP, you can create metadata whose values are not legal HTTP
+ * headers.</p>
+ */
+ inline void SetMissingMeta(int value) { m_missingMeta = value; }
+
+ /**
+ * <p>This is set to the number of metadata entries not returned in
+ * <code>x-amz-meta</code> headers. This can happen if you create metadata using an
+ * API like SOAP that supports more flexible metadata than the REST API. For
+ * example, using SOAP, you can create metadata whose values are not legal HTTP
+ * headers.</p>
+ */
+ inline GetObjectResult& WithMissingMeta(int value) { SetMissingMeta(value); return *this;}
+
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionId = value; }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionId = std::move(value); }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionId.assign(value); }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline GetObjectResult& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline GetObjectResult& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline GetObjectResult& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline const Aws::String& GetCacheControl() const{ return m_cacheControl; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(const Aws::String& value) { m_cacheControl = value; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(Aws::String&& value) { m_cacheControl = std::move(value); }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(const char* value) { m_cacheControl.assign(value); }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline GetObjectResult& WithCacheControl(const Aws::String& value) { SetCacheControl(value); return *this;}
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline GetObjectResult& WithCacheControl(Aws::String&& value) { SetCacheControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline GetObjectResult& WithCacheControl(const char* value) { SetCacheControl(value); return *this;}
+
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline const Aws::String& GetContentDisposition() const{ return m_contentDisposition; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(const Aws::String& value) { m_contentDisposition = value; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(Aws::String&& value) { m_contentDisposition = std::move(value); }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(const char* value) { m_contentDisposition.assign(value); }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline GetObjectResult& WithContentDisposition(const Aws::String& value) { SetContentDisposition(value); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline GetObjectResult& WithContentDisposition(Aws::String&& value) { SetContentDisposition(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline GetObjectResult& WithContentDisposition(const char* value) { SetContentDisposition(value); return *this;}
+
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline const Aws::String& GetContentEncoding() const{ return m_contentEncoding; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(const Aws::String& value) { m_contentEncoding = value; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(Aws::String&& value) { m_contentEncoding = std::move(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(const char* value) { m_contentEncoding.assign(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline GetObjectResult& WithContentEncoding(const Aws::String& value) { SetContentEncoding(value); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline GetObjectResult& WithContentEncoding(Aws::String&& value) { SetContentEncoding(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline GetObjectResult& WithContentEncoding(const char* value) { SetContentEncoding(value); return *this;}
+
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline const Aws::String& GetContentLanguage() const{ return m_contentLanguage; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const Aws::String& value) { m_contentLanguage = value; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(Aws::String&& value) { m_contentLanguage = std::move(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const char* value) { m_contentLanguage.assign(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline GetObjectResult& WithContentLanguage(const Aws::String& value) { SetContentLanguage(value); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline GetObjectResult& WithContentLanguage(Aws::String&& value) { SetContentLanguage(std::move(value)); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline GetObjectResult& WithContentLanguage(const char* value) { SetContentLanguage(value); return *this;}
+
+
+ /**
+ * <p>The portion of the object returned in the response.</p>
+ */
+ inline const Aws::String& GetContentRange() const{ return m_contentRange; }
+
+ /**
+ * <p>The portion of the object returned in the response.</p>
+ */
+ inline void SetContentRange(const Aws::String& value) { m_contentRange = value; }
+
+ /**
+ * <p>The portion of the object returned in the response.</p>
+ */
+ inline void SetContentRange(Aws::String&& value) { m_contentRange = std::move(value); }
+
+ /**
+ * <p>The portion of the object returned in the response.</p>
+ */
+ inline void SetContentRange(const char* value) { m_contentRange.assign(value); }
+
+ /**
+ * <p>The portion of the object returned in the response.</p>
+ */
+ inline GetObjectResult& WithContentRange(const Aws::String& value) { SetContentRange(value); return *this;}
+
+ /**
+ * <p>The portion of the object returned in the response.</p>
+ */
+ inline GetObjectResult& WithContentRange(Aws::String&& value) { SetContentRange(std::move(value)); return *this;}
+
+ /**
+ * <p>The portion of the object returned in the response.</p>
+ */
+ inline GetObjectResult& WithContentRange(const char* value) { SetContentRange(value); return *this;}
+
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline const Aws::String& GetContentType() const{ return m_contentType; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(const Aws::String& value) { m_contentType = value; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(Aws::String&& value) { m_contentType = std::move(value); }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(const char* value) { m_contentType.assign(value); }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline GetObjectResult& WithContentType(const Aws::String& value) { SetContentType(value); return *this;}
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline GetObjectResult& WithContentType(Aws::String&& value) { SetContentType(std::move(value)); return *this;}
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline GetObjectResult& WithContentType(const char* value) { SetContentType(value); return *this;}
+
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline const Aws::Utils::DateTime& GetExpires() const{ return m_expires; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline void SetExpires(const Aws::Utils::DateTime& value) { m_expires = value; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline void SetExpires(Aws::Utils::DateTime&& value) { m_expires = std::move(value); }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline GetObjectResult& WithExpires(const Aws::Utils::DateTime& value) { SetExpires(value); return *this;}
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline GetObjectResult& WithExpires(Aws::Utils::DateTime&& value) { SetExpires(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline const Aws::String& GetWebsiteRedirectLocation() const{ return m_websiteRedirectLocation; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(const Aws::String& value) { m_websiteRedirectLocation = value; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(Aws::String&& value) { m_websiteRedirectLocation = std::move(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(const char* value) { m_websiteRedirectLocation.assign(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline GetObjectResult& WithWebsiteRedirectLocation(const Aws::String& value) { SetWebsiteRedirectLocation(value); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline GetObjectResult& WithWebsiteRedirectLocation(Aws::String&& value) { SetWebsiteRedirectLocation(std::move(value)); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline GetObjectResult& WithWebsiteRedirectLocation(const char* value) { SetWebsiteRedirectLocation(value); return *this;}
+
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline GetObjectResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline GetObjectResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline const Aws::Map<Aws::String, Aws::String>& GetMetadata() const{ return m_metadata; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(const Aws::Map<Aws::String, Aws::String>& value) { m_metadata = value; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(Aws::Map<Aws::String, Aws::String>&& value) { m_metadata = std::move(value); }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline GetObjectResult& WithMetadata(const Aws::Map<Aws::String, Aws::String>& value) { SetMetadata(value); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline GetObjectResult& WithMetadata(Aws::Map<Aws::String, Aws::String>&& value) { SetMetadata(std::move(value)); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline GetObjectResult& AddMetadata(const Aws::String& key, const Aws::String& value) { m_metadata.emplace(key, value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline GetObjectResult& AddMetadata(Aws::String&& key, const Aws::String& value) { m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline GetObjectResult& AddMetadata(const Aws::String& key, Aws::String&& value) { m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline GetObjectResult& AddMetadata(Aws::String&& key, Aws::String&& value) { m_metadata.emplace(std::move(key), std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline GetObjectResult& AddMetadata(const char* key, Aws::String&& value) { m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline GetObjectResult& AddMetadata(Aws::String&& key, const char* value) { m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline GetObjectResult& AddMetadata(const char* key, const char* value) { m_metadata.emplace(key, value); return *this; }
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline GetObjectResult& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline GetObjectResult& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline GetObjectResult& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline GetObjectResult& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline GetObjectResult& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline GetObjectResult& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline GetObjectResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline GetObjectResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline GetObjectResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption
+ * with AWS KMS (SSE-KMS).</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption
+ * with AWS KMS (SSE-KMS).</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption
+ * with AWS KMS (SSE-KMS).</p>
+ */
+ inline GetObjectResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p>
+ */
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p>
+ */
+ inline void SetStorageClass(const StorageClass& value) { m_storageClass = value; }
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p>
+ */
+ inline void SetStorageClass(StorageClass&& value) { m_storageClass = std::move(value); }
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p>
+ */
+ inline GetObjectResult& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p>
+ */
+ inline GetObjectResult& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline GetObjectResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline GetObjectResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Amazon S3 can return this if your request involves a bucket that is either a
+ * source or destination in a replication rule.</p>
+ */
+ inline const ReplicationStatus& GetReplicationStatus() const{ return m_replicationStatus; }
+
+ /**
+ * <p>Amazon S3 can return this if your request involves a bucket that is either a
+ * source or destination in a replication rule.</p>
+ */
+ inline void SetReplicationStatus(const ReplicationStatus& value) { m_replicationStatus = value; }
+
+ /**
+ * <p>Amazon S3 can return this if your request involves a bucket that is either a
+ * source or destination in a replication rule.</p>
+ */
+ inline void SetReplicationStatus(ReplicationStatus&& value) { m_replicationStatus = std::move(value); }
+
+ /**
+ * <p>Amazon S3 can return this if your request involves a bucket that is either a
+ * source or destination in a replication rule.</p>
+ */
+ inline GetObjectResult& WithReplicationStatus(const ReplicationStatus& value) { SetReplicationStatus(value); return *this;}
+
+ /**
+ * <p>Amazon S3 can return this if your request involves a bucket that is either a
+ * source or destination in a replication rule.</p>
+ */
+ inline GetObjectResult& WithReplicationStatus(ReplicationStatus&& value) { SetReplicationStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The count of parts this object has.</p>
+ */
+ inline int GetPartsCount() const{ return m_partsCount; }
+
+ /**
+ * <p>The count of parts this object has.</p>
+ */
+ inline void SetPartsCount(int value) { m_partsCount = value; }
+
+ /**
+ * <p>The count of parts this object has.</p>
+ */
+ inline GetObjectResult& WithPartsCount(int value) { SetPartsCount(value); return *this;}
+
+
+ /**
+ * <p>The number of tags, if any, on the object.</p>
+ */
+ inline int GetTagCount() const{ return m_tagCount; }
+
+ /**
+ * <p>The number of tags, if any, on the object.</p>
+ */
+ inline void SetTagCount(int value) { m_tagCount = value; }
+
+ /**
+ * <p>The number of tags, if any, on the object.</p>
+ */
+ inline GetObjectResult& WithTagCount(int value) { SetTagCount(value); return *this;}
+
+
+ /**
+ * <p>The Object Lock mode currently in place for this object.</p>
+ */
+ inline const ObjectLockMode& GetObjectLockMode() const{ return m_objectLockMode; }
+
+ /**
+ * <p>The Object Lock mode currently in place for this object.</p>
+ */
+ inline void SetObjectLockMode(const ObjectLockMode& value) { m_objectLockMode = value; }
+
+ /**
+ * <p>The Object Lock mode currently in place for this object.</p>
+ */
+ inline void SetObjectLockMode(ObjectLockMode&& value) { m_objectLockMode = std::move(value); }
+
+ /**
+ * <p>The Object Lock mode currently in place for this object.</p>
+ */
+ inline GetObjectResult& WithObjectLockMode(const ObjectLockMode& value) { SetObjectLockMode(value); return *this;}
+
+ /**
+ * <p>The Object Lock mode currently in place for this object.</p>
+ */
+ inline GetObjectResult& WithObjectLockMode(ObjectLockMode&& value) { SetObjectLockMode(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The date and time when this object's Object Lock will expire.</p>
+ */
+ inline const Aws::Utils::DateTime& GetObjectLockRetainUntilDate() const{ return m_objectLockRetainUntilDate; }
+
+ /**
+ * <p>The date and time when this object's Object Lock will expire.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { m_objectLockRetainUntilDate = value; }
+
+ /**
+ * <p>The date and time when this object's Object Lock will expire.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { m_objectLockRetainUntilDate = std::move(value); }
+
+ /**
+ * <p>The date and time when this object's Object Lock will expire.</p>
+ */
+ inline GetObjectResult& WithObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { SetObjectLockRetainUntilDate(value); return *this;}
+
+ /**
+ * <p>The date and time when this object's Object Lock will expire.</p>
+ */
+ inline GetObjectResult& WithObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { SetObjectLockRetainUntilDate(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Indicates whether this object has an active legal hold. This field is only
+ * returned if you have permission to view an object's legal hold status. </p>
+ */
+ inline const ObjectLockLegalHoldStatus& GetObjectLockLegalHoldStatus() const{ return m_objectLockLegalHoldStatus; }
+
+ /**
+ * <p>Indicates whether this object has an active legal hold. This field is only
+ * returned if you have permission to view an object's legal hold status. </p>
+ */
+ inline void SetObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { m_objectLockLegalHoldStatus = value; }
+
+ /**
+ * <p>Indicates whether this object has an active legal hold. This field is only
+ * returned if you have permission to view an object's legal hold status. </p>
+ */
+ inline void SetObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { m_objectLockLegalHoldStatus = std::move(value); }
+
+ /**
+ * <p>Indicates whether this object has an active legal hold. This field is only
+ * returned if you have permission to view an object's legal hold status. </p>
+ */
+ inline GetObjectResult& WithObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { SetObjectLockLegalHoldStatus(value); return *this;}
+
+ /**
+ * <p>Indicates whether this object has an active legal hold. This field is only
+ * returned if you have permission to view an object's legal hold status. </p>
+ */
+ inline GetObjectResult& WithObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { SetObjectLockLegalHoldStatus(std::move(value)); return *this;}
+
+
+
+ inline const Aws::String& GetId2() const{ return m_id2; }
+
+
+ inline void SetId2(const Aws::String& value) { m_id2 = value; }
+
+
+ inline void SetId2(Aws::String&& value) { m_id2 = std::move(value); }
+
+
+ inline void SetId2(const char* value) { m_id2.assign(value); }
+
+
+ inline GetObjectResult& WithId2(const Aws::String& value) { SetId2(value); return *this;}
+
+
+ inline GetObjectResult& WithId2(Aws::String&& value) { SetId2(std::move(value)); return *this;}
+
+
+ inline GetObjectResult& WithId2(const char* value) { SetId2(value); return *this;}
+
+
+
+ inline const Aws::String& GetRequestId() const{ return m_requestId; }
+
+
+ inline void SetRequestId(const Aws::String& value) { m_requestId = value; }
+
+
+ inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); }
+
+
+ inline void SetRequestId(const char* value) { m_requestId.assign(value); }
+
+
+ inline GetObjectResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;}
+
+
+ inline GetObjectResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;}
+
+
+ inline GetObjectResult& WithRequestId(const char* value) { SetRequestId(value); return *this;}
+
+ private:
+
+ Aws::Utils::Stream::ResponseStream m_body;
+
+ bool m_deleteMarker;
+
+ Aws::String m_acceptRanges;
+
+ Aws::String m_expiration;
+
+ Aws::String m_restore;
+
+ Aws::Utils::DateTime m_lastModified;
+
+ long long m_contentLength;
+
+ Aws::String m_eTag;
+
+ int m_missingMeta;
+
+ Aws::String m_versionId;
+
+ Aws::String m_cacheControl;
+
+ Aws::String m_contentDisposition;
+
+ Aws::String m_contentEncoding;
+
+ Aws::String m_contentLanguage;
+
+ Aws::String m_contentRange;
+
+ Aws::String m_contentType;
+
+ Aws::Utils::DateTime m_expires;
+
+ Aws::String m_websiteRedirectLocation;
+
+ ServerSideEncryption m_serverSideEncryption;
+
+ Aws::Map<Aws::String, Aws::String> m_metadata;
+
+ Aws::String m_sSECustomerAlgorithm;
+
+ Aws::String m_sSECustomerKeyMD5;
+
+ Aws::String m_sSEKMSKeyId;
+
+ bool m_bucketKeyEnabled;
+
+ StorageClass m_storageClass;
+
+ RequestCharged m_requestCharged;
+
+ ReplicationStatus m_replicationStatus;
+
+ int m_partsCount;
+
+ int m_tagCount;
+
+ ObjectLockMode m_objectLockMode;
+
+ Aws::Utils::DateTime m_objectLockRetainUntilDate;
+
+ ObjectLockLegalHoldStatus m_objectLockLegalHoldStatus;
+
+ Aws::String m_id2;
+
+ Aws::String m_requestId;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRetentionRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRetentionRequest.h
new file mode 100644
index 00000000000..02153e82520
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRetentionRequest.h
@@ -0,0 +1,394 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetObjectRetentionRequest : public S3Request
+ {
+ public:
+ GetObjectRetentionRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetObjectRetention"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name containing the object whose retention settings you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name containing the object whose retention settings you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name containing the object whose retention settings you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name containing the object whose retention settings you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name containing the object whose retention settings you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name containing the object whose retention settings you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectRetentionRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name containing the object whose retention settings you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectRetentionRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name containing the object whose retention settings you want to
+ * retrieve. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectRetentionRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The key name for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The key name for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The key name for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The key name for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The key name for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The key name for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline GetObjectRetentionRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The key name for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline GetObjectRetentionRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The key name for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline GetObjectRetentionRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The version ID for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The version ID for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>The version ID for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>The version ID for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>The version ID for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>The version ID for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline GetObjectRetentionRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The version ID for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline GetObjectRetentionRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The version ID for the object whose retention settings you want to
+ * retrieve.</p>
+ */
+ inline GetObjectRetentionRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline GetObjectRetentionRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline GetObjectRetentionRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectRetentionRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectRetentionRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectRetentionRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetObjectRetentionRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetObjectRetentionRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetObjectRetentionRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetObjectRetentionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectRetentionRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectRetentionRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetObjectRetentionRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectRetentionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectRetentionRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRetentionResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRetentionResult.h
new file mode 100644
index 00000000000..13c5e6b25d2
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRetentionResult.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ObjectLockRetention.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetObjectRetentionResult
+ {
+ public:
+ GetObjectRetentionResult();
+ GetObjectRetentionResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetObjectRetentionResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The container element for an object's retention settings.</p>
+ */
+ inline const ObjectLockRetention& GetRetention() const{ return m_retention; }
+
+ /**
+ * <p>The container element for an object's retention settings.</p>
+ */
+ inline void SetRetention(const ObjectLockRetention& value) { m_retention = value; }
+
+ /**
+ * <p>The container element for an object's retention settings.</p>
+ */
+ inline void SetRetention(ObjectLockRetention&& value) { m_retention = std::move(value); }
+
+ /**
+ * <p>The container element for an object's retention settings.</p>
+ */
+ inline GetObjectRetentionResult& WithRetention(const ObjectLockRetention& value) { SetRetention(value); return *this;}
+
+ /**
+ * <p>The container element for an object's retention settings.</p>
+ */
+ inline GetObjectRetentionResult& WithRetention(ObjectLockRetention&& value) { SetRetention(std::move(value)); return *this;}
+
+ private:
+
+ ObjectLockRetention m_retention;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTaggingRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTaggingRequest.h
new file mode 100644
index 00000000000..5fca33c33aa
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTaggingRequest.h
@@ -0,0 +1,427 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetObjectTaggingRequest : public S3Request
+ {
+ public:
+ GetObjectTaggingRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetObjectTagging"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name containing the object for which to get the tagging
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name containing the object for which to get the tagging
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name containing the object for which to get the tagging
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name containing the object for which to get the tagging
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name containing the object for which to get the tagging
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name containing the object for which to get the tagging
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectTaggingRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name containing the object for which to get the tagging
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectTaggingRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name containing the object for which to get the tagging
+ * information. </p> <p>When using this API with an access point, you must direct
+ * requests to the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline GetObjectTaggingRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Object key for which to get the tagging information.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which to get the tagging information.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Object key for which to get the tagging information.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Object key for which to get the tagging information.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which to get the tagging information.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Object key for which to get the tagging information.</p>
+ */
+ inline GetObjectTaggingRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which to get the tagging information.</p>
+ */
+ inline GetObjectTaggingRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which to get the tagging information.</p>
+ */
+ inline GetObjectTaggingRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The versionId of the object for which to get the tagging information.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The versionId of the object for which to get the tagging information.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>The versionId of the object for which to get the tagging information.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>The versionId of the object for which to get the tagging information.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>The versionId of the object for which to get the tagging information.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>The versionId of the object for which to get the tagging information.</p>
+ */
+ inline GetObjectTaggingRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The versionId of the object for which to get the tagging information.</p>
+ */
+ inline GetObjectTaggingRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The versionId of the object for which to get the tagging information.</p>
+ */
+ inline GetObjectTaggingRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectTaggingRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectTaggingRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectTaggingRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetObjectTaggingRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetObjectTaggingRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetObjectTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetObjectTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetObjectTaggingRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectTaggingRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTaggingResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTaggingResult.h
new file mode 100644
index 00000000000..c945f85e611
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTaggingResult.h
@@ -0,0 +1,117 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tag.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetObjectTaggingResult
+ {
+ public:
+ GetObjectTaggingResult();
+ GetObjectTaggingResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetObjectTaggingResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The versionId of the object for which you got the tagging information.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The versionId of the object for which you got the tagging information.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionId = value; }
+
+ /**
+ * <p>The versionId of the object for which you got the tagging information.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionId = std::move(value); }
+
+ /**
+ * <p>The versionId of the object for which you got the tagging information.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionId.assign(value); }
+
+ /**
+ * <p>The versionId of the object for which you got the tagging information.</p>
+ */
+ inline GetObjectTaggingResult& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The versionId of the object for which you got the tagging information.</p>
+ */
+ inline GetObjectTaggingResult& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The versionId of the object for which you got the tagging information.</p>
+ */
+ inline GetObjectTaggingResult& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline const Aws::Vector<Tag>& GetTagSet() const{ return m_tagSet; }
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline void SetTagSet(const Aws::Vector<Tag>& value) { m_tagSet = value; }
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline void SetTagSet(Aws::Vector<Tag>&& value) { m_tagSet = std::move(value); }
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline GetObjectTaggingResult& WithTagSet(const Aws::Vector<Tag>& value) { SetTagSet(value); return *this;}
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline GetObjectTaggingResult& WithTagSet(Aws::Vector<Tag>&& value) { SetTagSet(std::move(value)); return *this;}
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline GetObjectTaggingResult& AddTagSet(const Tag& value) { m_tagSet.push_back(value); return *this; }
+
+ /**
+ * <p>Contains the tag set.</p>
+ */
+ inline GetObjectTaggingResult& AddTagSet(Tag&& value) { m_tagSet.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::String m_versionId;
+
+ Aws::Vector<Tag> m_tagSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTorrentRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTorrentRequest.h
new file mode 100644
index 00000000000..732e8f7c030
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTorrentRequest.h
@@ -0,0 +1,270 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetObjectTorrentRequest : public S3Request
+ {
+ public:
+ GetObjectTorrentRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetObjectTorrent"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the object for which to get the torrent
+ * files.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the object for which to get the torrent
+ * files.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the object for which to get the torrent
+ * files.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the object for which to get the torrent
+ * files.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the object for which to get the torrent
+ * files.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the object for which to get the torrent
+ * files.</p>
+ */
+ inline GetObjectTorrentRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the object for which to get the torrent
+ * files.</p>
+ */
+ inline GetObjectTorrentRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the object for which to get the torrent
+ * files.</p>
+ */
+ inline GetObjectTorrentRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The object key for which to get the information.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The object key for which to get the information.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The object key for which to get the information.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The object key for which to get the information.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The object key for which to get the information.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The object key for which to get the information.</p>
+ */
+ inline GetObjectTorrentRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The object key for which to get the information.</p>
+ */
+ inline GetObjectTorrentRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The object key for which to get the information.</p>
+ */
+ inline GetObjectTorrentRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline GetObjectTorrentRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline GetObjectTorrentRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectTorrentRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectTorrentRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetObjectTorrentRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetObjectTorrentRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetObjectTorrentRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetObjectTorrentRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetObjectTorrentRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectTorrentRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectTorrentRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetObjectTorrentRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetObjectTorrentRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetObjectTorrentRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTorrentResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTorrentResult.h
new file mode 100644
index 00000000000..97c8b3edf91
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectTorrentResult.h
@@ -0,0 +1,75 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/stream/ResponseStream.h>
+#include <aws/core/utils/Array.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetObjectTorrentResult
+ {
+ public:
+ GetObjectTorrentResult();
+ //We have to define these because Microsoft doesn't auto generate them
+ GetObjectTorrentResult(GetObjectTorrentResult&&);
+ GetObjectTorrentResult& operator=(GetObjectTorrentResult&&);
+ //we delete these because Microsoft doesn't handle move generation correctly
+ //and we therefore don't trust them to get it right here either.
+ GetObjectTorrentResult(const GetObjectTorrentResult&) = delete;
+ GetObjectTorrentResult& operator=(const GetObjectTorrentResult&) = delete;
+
+
+ GetObjectTorrentResult(Aws::AmazonWebServiceResult<Aws::Utils::Stream::ResponseStream>&& result);
+ GetObjectTorrentResult& operator=(Aws::AmazonWebServiceResult<Aws::Utils::Stream::ResponseStream>&& result);
+
+
+
+ /**
+ * <p>A Bencoded dictionary as defined by the BitTorrent specification</p>
+ */
+ inline Aws::IOStream& GetBody() { return m_body.GetUnderlyingStream(); }
+
+ /**
+ * <p>A Bencoded dictionary as defined by the BitTorrent specification</p>
+ */
+ inline void ReplaceBody(Aws::IOStream* body) { m_body = Aws::Utils::Stream::ResponseStream(body); }
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline GetObjectTorrentResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline GetObjectTorrentResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ Aws::Utils::Stream::ResponseStream m_body;
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetPublicAccessBlockRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetPublicAccessBlockRequest.h
new file mode 100644
index 00000000000..76c706ec544
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetPublicAccessBlockRequest.h
@@ -0,0 +1,203 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API GetPublicAccessBlockRequest : public S3Request
+ {
+ public:
+ GetPublicAccessBlockRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "GetPublicAccessBlock"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to retrieve. </p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to retrieve. </p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to retrieve. </p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to retrieve. </p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to retrieve. </p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to retrieve. </p>
+ */
+ inline GetPublicAccessBlockRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to retrieve. </p>
+ */
+ inline GetPublicAccessBlockRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to retrieve. </p>
+ */
+ inline GetPublicAccessBlockRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetPublicAccessBlockRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetPublicAccessBlockRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline GetPublicAccessBlockRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline GetPublicAccessBlockRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline GetPublicAccessBlockRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline GetPublicAccessBlockRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline GetPublicAccessBlockRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetPublicAccessBlockRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetPublicAccessBlockRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline GetPublicAccessBlockRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline GetPublicAccessBlockRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline GetPublicAccessBlockRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetPublicAccessBlockResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetPublicAccessBlockResult.h
new file mode 100644
index 00000000000..22d40032cb9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GetPublicAccessBlockResult.h
@@ -0,0 +1,72 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/PublicAccessBlockConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API GetPublicAccessBlockResult
+ {
+ public:
+ GetPublicAccessBlockResult();
+ GetPublicAccessBlockResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ GetPublicAccessBlockResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration currently in effect for this
+ * Amazon S3 bucket.</p>
+ */
+ inline const PublicAccessBlockConfiguration& GetPublicAccessBlockConfiguration() const{ return m_publicAccessBlockConfiguration; }
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration currently in effect for this
+ * Amazon S3 bucket.</p>
+ */
+ inline void SetPublicAccessBlockConfiguration(const PublicAccessBlockConfiguration& value) { m_publicAccessBlockConfiguration = value; }
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration currently in effect for this
+ * Amazon S3 bucket.</p>
+ */
+ inline void SetPublicAccessBlockConfiguration(PublicAccessBlockConfiguration&& value) { m_publicAccessBlockConfiguration = std::move(value); }
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration currently in effect for this
+ * Amazon S3 bucket.</p>
+ */
+ inline GetPublicAccessBlockResult& WithPublicAccessBlockConfiguration(const PublicAccessBlockConfiguration& value) { SetPublicAccessBlockConfiguration(value); return *this;}
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration currently in effect for this
+ * Amazon S3 bucket.</p>
+ */
+ inline GetPublicAccessBlockResult& WithPublicAccessBlockConfiguration(PublicAccessBlockConfiguration&& value) { SetPublicAccessBlockConfiguration(std::move(value)); return *this;}
+
+ private:
+
+ PublicAccessBlockConfiguration m_publicAccessBlockConfiguration;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GlacierJobParameters.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GlacierJobParameters.h
new file mode 100644
index 00000000000..d6fcfdaee3c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/GlacierJobParameters.h
@@ -0,0 +1,78 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Tier.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for S3 Glacier job parameters.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GlacierJobParameters">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API GlacierJobParameters
+ {
+ public:
+ GlacierJobParameters();
+ GlacierJobParameters(const Aws::Utils::Xml::XmlNode& xmlNode);
+ GlacierJobParameters& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline const Tier& GetTier() const{ return m_tier; }
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline bool TierHasBeenSet() const { return m_tierHasBeenSet; }
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline void SetTier(const Tier& value) { m_tierHasBeenSet = true; m_tier = value; }
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline void SetTier(Tier&& value) { m_tierHasBeenSet = true; m_tier = std::move(value); }
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline GlacierJobParameters& WithTier(const Tier& value) { SetTier(value); return *this;}
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline GlacierJobParameters& WithTier(Tier&& value) { SetTier(std::move(value)); return *this;}
+
+ private:
+
+ Tier m_tier;
+ bool m_tierHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Grant.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Grant.h
new file mode 100644
index 00000000000..392c95090e4
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Grant.h
@@ -0,0 +1,113 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Grantee.h>
+#include <aws/s3/model/Permission.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for grant information.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Grant">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Grant
+ {
+ public:
+ Grant();
+ Grant(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Grant& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The person being granted permissions.</p>
+ */
+ inline const Grantee& GetGrantee() const{ return m_grantee; }
+
+ /**
+ * <p>The person being granted permissions.</p>
+ */
+ inline bool GranteeHasBeenSet() const { return m_granteeHasBeenSet; }
+
+ /**
+ * <p>The person being granted permissions.</p>
+ */
+ inline void SetGrantee(const Grantee& value) { m_granteeHasBeenSet = true; m_grantee = value; }
+
+ /**
+ * <p>The person being granted permissions.</p>
+ */
+ inline void SetGrantee(Grantee&& value) { m_granteeHasBeenSet = true; m_grantee = std::move(value); }
+
+ /**
+ * <p>The person being granted permissions.</p>
+ */
+ inline Grant& WithGrantee(const Grantee& value) { SetGrantee(value); return *this;}
+
+ /**
+ * <p>The person being granted permissions.</p>
+ */
+ inline Grant& WithGrantee(Grantee&& value) { SetGrantee(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the permission given to the grantee.</p>
+ */
+ inline const Permission& GetPermission() const{ return m_permission; }
+
+ /**
+ * <p>Specifies the permission given to the grantee.</p>
+ */
+ inline bool PermissionHasBeenSet() const { return m_permissionHasBeenSet; }
+
+ /**
+ * <p>Specifies the permission given to the grantee.</p>
+ */
+ inline void SetPermission(const Permission& value) { m_permissionHasBeenSet = true; m_permission = value; }
+
+ /**
+ * <p>Specifies the permission given to the grantee.</p>
+ */
+ inline void SetPermission(Permission&& value) { m_permissionHasBeenSet = true; m_permission = std::move(value); }
+
+ /**
+ * <p>Specifies the permission given to the grantee.</p>
+ */
+ inline Grant& WithPermission(const Permission& value) { SetPermission(value); return *this;}
+
+ /**
+ * <p>Specifies the permission given to the grantee.</p>
+ */
+ inline Grant& WithPermission(Permission&& value) { SetPermission(std::move(value)); return *this;}
+
+ private:
+
+ Grantee m_grantee;
+ bool m_granteeHasBeenSet;
+
+ Permission m_permission;
+ bool m_permissionHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Grantee.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Grantee.h
new file mode 100644
index 00000000000..a6715e45cd4
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Grantee.h
@@ -0,0 +1,319 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Type.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for the person being granted permissions.</p><p><h3>See Also:</h3>
+ * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Grantee">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Grantee
+ {
+ public:
+ Grantee();
+ Grantee(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Grantee& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Screen name of the grantee.</p>
+ */
+ inline const Aws::String& GetDisplayName() const{ return m_displayName; }
+
+ /**
+ * <p>Screen name of the grantee.</p>
+ */
+ inline bool DisplayNameHasBeenSet() const { return m_displayNameHasBeenSet; }
+
+ /**
+ * <p>Screen name of the grantee.</p>
+ */
+ inline void SetDisplayName(const Aws::String& value) { m_displayNameHasBeenSet = true; m_displayName = value; }
+
+ /**
+ * <p>Screen name of the grantee.</p>
+ */
+ inline void SetDisplayName(Aws::String&& value) { m_displayNameHasBeenSet = true; m_displayName = std::move(value); }
+
+ /**
+ * <p>Screen name of the grantee.</p>
+ */
+ inline void SetDisplayName(const char* value) { m_displayNameHasBeenSet = true; m_displayName.assign(value); }
+
+ /**
+ * <p>Screen name of the grantee.</p>
+ */
+ inline Grantee& WithDisplayName(const Aws::String& value) { SetDisplayName(value); return *this;}
+
+ /**
+ * <p>Screen name of the grantee.</p>
+ */
+ inline Grantee& WithDisplayName(Aws::String&& value) { SetDisplayName(std::move(value)); return *this;}
+
+ /**
+ * <p>Screen name of the grantee.</p>
+ */
+ inline Grantee& WithDisplayName(const char* value) { SetDisplayName(value); return *this;}
+
+
+ /**
+ * <p>Email address of the grantee.</p> <p>Using email addresses to specify
+ * a grantee is only supported in the following AWS Regions: </p> <ul> <li> <p>US
+ * East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p>
+ * US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li>
+ * <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li>
+ * <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul>
+ * <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a> in the AWS General Reference.</p>
+ */
+ inline const Aws::String& GetEmailAddress() const{ return m_emailAddress; }
+
+ /**
+ * <p>Email address of the grantee.</p> <p>Using email addresses to specify
+ * a grantee is only supported in the following AWS Regions: </p> <ul> <li> <p>US
+ * East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p>
+ * US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li>
+ * <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li>
+ * <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul>
+ * <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a> in the AWS General Reference.</p>
+ */
+ inline bool EmailAddressHasBeenSet() const { return m_emailAddressHasBeenSet; }
+
+ /**
+ * <p>Email address of the grantee.</p> <p>Using email addresses to specify
+ * a grantee is only supported in the following AWS Regions: </p> <ul> <li> <p>US
+ * East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p>
+ * US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li>
+ * <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li>
+ * <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul>
+ * <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a> in the AWS General Reference.</p>
+ */
+ inline void SetEmailAddress(const Aws::String& value) { m_emailAddressHasBeenSet = true; m_emailAddress = value; }
+
+ /**
+ * <p>Email address of the grantee.</p> <p>Using email addresses to specify
+ * a grantee is only supported in the following AWS Regions: </p> <ul> <li> <p>US
+ * East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p>
+ * US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li>
+ * <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li>
+ * <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul>
+ * <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a> in the AWS General Reference.</p>
+ */
+ inline void SetEmailAddress(Aws::String&& value) { m_emailAddressHasBeenSet = true; m_emailAddress = std::move(value); }
+
+ /**
+ * <p>Email address of the grantee.</p> <p>Using email addresses to specify
+ * a grantee is only supported in the following AWS Regions: </p> <ul> <li> <p>US
+ * East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p>
+ * US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li>
+ * <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li>
+ * <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul>
+ * <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a> in the AWS General Reference.</p>
+ */
+ inline void SetEmailAddress(const char* value) { m_emailAddressHasBeenSet = true; m_emailAddress.assign(value); }
+
+ /**
+ * <p>Email address of the grantee.</p> <p>Using email addresses to specify
+ * a grantee is only supported in the following AWS Regions: </p> <ul> <li> <p>US
+ * East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p>
+ * US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li>
+ * <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li>
+ * <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul>
+ * <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a> in the AWS General Reference.</p>
+ */
+ inline Grantee& WithEmailAddress(const Aws::String& value) { SetEmailAddress(value); return *this;}
+
+ /**
+ * <p>Email address of the grantee.</p> <p>Using email addresses to specify
+ * a grantee is only supported in the following AWS Regions: </p> <ul> <li> <p>US
+ * East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p>
+ * US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li>
+ * <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li>
+ * <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul>
+ * <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a> in the AWS General Reference.</p>
+ */
+ inline Grantee& WithEmailAddress(Aws::String&& value) { SetEmailAddress(std::move(value)); return *this;}
+
+ /**
+ * <p>Email address of the grantee.</p> <p>Using email addresses to specify
+ * a grantee is only supported in the following AWS Regions: </p> <ul> <li> <p>US
+ * East (N. Virginia)</p> </li> <li> <p>US West (N. California)</p> </li> <li> <p>
+ * US West (Oregon)</p> </li> <li> <p> Asia Pacific (Singapore)</p> </li> <li>
+ * <p>Asia Pacific (Sydney)</p> </li> <li> <p>Asia Pacific (Tokyo)</p> </li> <li>
+ * <p>Europe (Ireland)</p> </li> <li> <p>South America (São Paulo)</p> </li> </ul>
+ * <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a
+ * href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions
+ * and Endpoints</a> in the AWS General Reference.</p>
+ */
+ inline Grantee& WithEmailAddress(const char* value) { SetEmailAddress(value); return *this;}
+
+
+ /**
+ * <p>The canonical user ID of the grantee.</p>
+ */
+ inline const Aws::String& GetID() const{ return m_iD; }
+
+ /**
+ * <p>The canonical user ID of the grantee.</p>
+ */
+ inline bool IDHasBeenSet() const { return m_iDHasBeenSet; }
+
+ /**
+ * <p>The canonical user ID of the grantee.</p>
+ */
+ inline void SetID(const Aws::String& value) { m_iDHasBeenSet = true; m_iD = value; }
+
+ /**
+ * <p>The canonical user ID of the grantee.</p>
+ */
+ inline void SetID(Aws::String&& value) { m_iDHasBeenSet = true; m_iD = std::move(value); }
+
+ /**
+ * <p>The canonical user ID of the grantee.</p>
+ */
+ inline void SetID(const char* value) { m_iDHasBeenSet = true; m_iD.assign(value); }
+
+ /**
+ * <p>The canonical user ID of the grantee.</p>
+ */
+ inline Grantee& WithID(const Aws::String& value) { SetID(value); return *this;}
+
+ /**
+ * <p>The canonical user ID of the grantee.</p>
+ */
+ inline Grantee& WithID(Aws::String&& value) { SetID(std::move(value)); return *this;}
+
+ /**
+ * <p>The canonical user ID of the grantee.</p>
+ */
+ inline Grantee& WithID(const char* value) { SetID(value); return *this;}
+
+
+ /**
+ * <p>Type of grantee</p>
+ */
+ inline const Type& GetType() const{ return m_type; }
+
+ /**
+ * <p>Type of grantee</p>
+ */
+ inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; }
+
+ /**
+ * <p>Type of grantee</p>
+ */
+ inline void SetType(const Type& value) { m_typeHasBeenSet = true; m_type = value; }
+
+ /**
+ * <p>Type of grantee</p>
+ */
+ inline void SetType(Type&& value) { m_typeHasBeenSet = true; m_type = std::move(value); }
+
+ /**
+ * <p>Type of grantee</p>
+ */
+ inline Grantee& WithType(const Type& value) { SetType(value); return *this;}
+
+ /**
+ * <p>Type of grantee</p>
+ */
+ inline Grantee& WithType(Type&& value) { SetType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>URI of the grantee group.</p>
+ */
+ inline const Aws::String& GetURI() const{ return m_uRI; }
+
+ /**
+ * <p>URI of the grantee group.</p>
+ */
+ inline bool URIHasBeenSet() const { return m_uRIHasBeenSet; }
+
+ /**
+ * <p>URI of the grantee group.</p>
+ */
+ inline void SetURI(const Aws::String& value) { m_uRIHasBeenSet = true; m_uRI = value; }
+
+ /**
+ * <p>URI of the grantee group.</p>
+ */
+ inline void SetURI(Aws::String&& value) { m_uRIHasBeenSet = true; m_uRI = std::move(value); }
+
+ /**
+ * <p>URI of the grantee group.</p>
+ */
+ inline void SetURI(const char* value) { m_uRIHasBeenSet = true; m_uRI.assign(value); }
+
+ /**
+ * <p>URI of the grantee group.</p>
+ */
+ inline Grantee& WithURI(const Aws::String& value) { SetURI(value); return *this;}
+
+ /**
+ * <p>URI of the grantee group.</p>
+ */
+ inline Grantee& WithURI(Aws::String&& value) { SetURI(std::move(value)); return *this;}
+
+ /**
+ * <p>URI of the grantee group.</p>
+ */
+ inline Grantee& WithURI(const char* value) { SetURI(value); return *this;}
+
+ private:
+
+ Aws::String m_displayName;
+ bool m_displayNameHasBeenSet;
+
+ Aws::String m_emailAddress;
+ bool m_emailAddressHasBeenSet;
+
+ Aws::String m_iD;
+ bool m_iDHasBeenSet;
+
+ Type m_type;
+ bool m_typeHasBeenSet;
+
+ Aws::String m_uRI;
+ bool m_uRIHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadBucketRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadBucketRequest.h
new file mode 100644
index 00000000000..dbef92bdf92
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadBucketRequest.h
@@ -0,0 +1,339 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API HeadBucketRequest : public S3Request
+ {
+ public:
+ HeadBucketRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "HeadBucket"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline HeadBucketRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline HeadBucketRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline HeadBucketRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline HeadBucketRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline HeadBucketRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline HeadBucketRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline HeadBucketRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline HeadBucketRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline HeadBucketRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline HeadBucketRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline HeadBucketRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline HeadBucketRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline HeadBucketRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline HeadBucketRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline HeadBucketRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectRequest.h
new file mode 100644
index 00000000000..d7de0c5ab2f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectRequest.h
@@ -0,0 +1,935 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API HeadObjectRequest : public S3Request
+ {
+ public:
+ HeadObjectRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "HeadObject"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the object.</p> <p>When using this API with
+ * an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the object.</p> <p>When using this API with
+ * an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the object.</p> <p>When using this API with
+ * an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the object.</p> <p>When using this API with
+ * an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the object.</p> <p>When using this API with
+ * an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the object.</p> <p>When using this API with
+ * an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline HeadObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the object.</p> <p>When using this API with
+ * an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline HeadObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the object.</p> <p>When using this API with
+ * an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline HeadObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline const Aws::String& GetIfMatch() const{ return m_ifMatch; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline bool IfMatchHasBeenSet() const { return m_ifMatchHasBeenSet; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfMatch(const Aws::String& value) { m_ifMatchHasBeenSet = true; m_ifMatch = value; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfMatch(Aws::String&& value) { m_ifMatchHasBeenSet = true; m_ifMatch = std::move(value); }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfMatch(const char* value) { m_ifMatchHasBeenSet = true; m_ifMatch.assign(value); }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline HeadObjectRequest& WithIfMatch(const Aws::String& value) { SetIfMatch(value); return *this;}
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline HeadObjectRequest& WithIfMatch(Aws::String&& value) { SetIfMatch(std::move(value)); return *this;}
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is the same as the one
+ * specified, otherwise return a 412 (precondition failed).</p>
+ */
+ inline HeadObjectRequest& WithIfMatch(const char* value) { SetIfMatch(value); return *this;}
+
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline const Aws::Utils::DateTime& GetIfModifiedSince() const{ return m_ifModifiedSince; }
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline bool IfModifiedSinceHasBeenSet() const { return m_ifModifiedSinceHasBeenSet; }
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfModifiedSince(const Aws::Utils::DateTime& value) { m_ifModifiedSinceHasBeenSet = true; m_ifModifiedSince = value; }
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfModifiedSince(Aws::Utils::DateTime&& value) { m_ifModifiedSinceHasBeenSet = true; m_ifModifiedSince = std::move(value); }
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline HeadObjectRequest& WithIfModifiedSince(const Aws::Utils::DateTime& value) { SetIfModifiedSince(value); return *this;}
+
+ /**
+ * <p>Return the object only if it has been modified since the specified time,
+ * otherwise return a 304 (not modified).</p>
+ */
+ inline HeadObjectRequest& WithIfModifiedSince(Aws::Utils::DateTime&& value) { SetIfModifiedSince(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline const Aws::String& GetIfNoneMatch() const{ return m_ifNoneMatch; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline bool IfNoneMatchHasBeenSet() const { return m_ifNoneMatchHasBeenSet; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfNoneMatch(const Aws::String& value) { m_ifNoneMatchHasBeenSet = true; m_ifNoneMatch = value; }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfNoneMatch(Aws::String&& value) { m_ifNoneMatchHasBeenSet = true; m_ifNoneMatch = std::move(value); }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline void SetIfNoneMatch(const char* value) { m_ifNoneMatchHasBeenSet = true; m_ifNoneMatch.assign(value); }
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline HeadObjectRequest& WithIfNoneMatch(const Aws::String& value) { SetIfNoneMatch(value); return *this;}
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline HeadObjectRequest& WithIfNoneMatch(Aws::String&& value) { SetIfNoneMatch(std::move(value)); return *this;}
+
+ /**
+ * <p>Return the object only if its entity tag (ETag) is different from the one
+ * specified, otherwise return a 304 (not modified).</p>
+ */
+ inline HeadObjectRequest& WithIfNoneMatch(const char* value) { SetIfNoneMatch(value); return *this;}
+
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline const Aws::Utils::DateTime& GetIfUnmodifiedSince() const{ return m_ifUnmodifiedSince; }
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline bool IfUnmodifiedSinceHasBeenSet() const { return m_ifUnmodifiedSinceHasBeenSet; }
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfUnmodifiedSince(const Aws::Utils::DateTime& value) { m_ifUnmodifiedSinceHasBeenSet = true; m_ifUnmodifiedSince = value; }
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline void SetIfUnmodifiedSince(Aws::Utils::DateTime&& value) { m_ifUnmodifiedSinceHasBeenSet = true; m_ifUnmodifiedSince = std::move(value); }
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline HeadObjectRequest& WithIfUnmodifiedSince(const Aws::Utils::DateTime& value) { SetIfUnmodifiedSince(value); return *this;}
+
+ /**
+ * <p>Return the object only if it has not been modified since the specified time,
+ * otherwise return a 412 (precondition failed).</p>
+ */
+ inline HeadObjectRequest& WithIfUnmodifiedSince(Aws::Utils::DateTime&& value) { SetIfUnmodifiedSince(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline HeadObjectRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline HeadObjectRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline HeadObjectRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline const Aws::String& GetRange() const{ return m_range; }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline bool RangeHasBeenSet() const { return m_rangeHasBeenSet; }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline void SetRange(const Aws::String& value) { m_rangeHasBeenSet = true; m_range = value; }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline void SetRange(Aws::String&& value) { m_rangeHasBeenSet = true; m_range = std::move(value); }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline void SetRange(const char* value) { m_rangeHasBeenSet = true; m_range.assign(value); }
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline HeadObjectRequest& WithRange(const Aws::String& value) { SetRange(value); return *this;}
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline HeadObjectRequest& WithRange(Aws::String&& value) { SetRange(std::move(value)); return *this;}
+
+ /**
+ * <p>Downloads the specified range bytes of an object. For more information about
+ * the HTTP Range header, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35</a>.</p>
+ * <p>Amazon S3 doesn't support retrieving multiple ranges of data per
+ * <code>GET</code> request.</p>
+ */
+ inline HeadObjectRequest& WithRange(const char* value) { SetRange(value); return *this;}
+
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline HeadObjectRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline HeadObjectRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline HeadObjectRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline bool SSECustomerAlgorithmHasBeenSet() const { return m_sSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline HeadObjectRequest& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline HeadObjectRequest& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline HeadObjectRequest& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline const Aws::String& GetSSECustomerKey() const{ return m_sSECustomerKey; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline bool SSECustomerKeyHasBeenSet() const { return m_sSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const Aws::String& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = value; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(Aws::String&& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = std::move(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const char* value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey.assign(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline HeadObjectRequest& WithSSECustomerKey(const Aws::String& value) { SetSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline HeadObjectRequest& WithSSECustomerKey(Aws::String&& value) { SetSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline HeadObjectRequest& WithSSECustomerKey(const char* value) { SetSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline bool SSECustomerKeyMD5HasBeenSet() const { return m_sSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline HeadObjectRequest& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline HeadObjectRequest& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline HeadObjectRequest& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline HeadObjectRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline HeadObjectRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Part number of the object being read. This is a positive integer between 1
+ * and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
+ * Useful querying about the size of the part and the number of parts in this
+ * object.</p>
+ */
+ inline int GetPartNumber() const{ return m_partNumber; }
+
+ /**
+ * <p>Part number of the object being read. This is a positive integer between 1
+ * and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
+ * Useful querying about the size of the part and the number of parts in this
+ * object.</p>
+ */
+ inline bool PartNumberHasBeenSet() const { return m_partNumberHasBeenSet; }
+
+ /**
+ * <p>Part number of the object being read. This is a positive integer between 1
+ * and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
+ * Useful querying about the size of the part and the number of parts in this
+ * object.</p>
+ */
+ inline void SetPartNumber(int value) { m_partNumberHasBeenSet = true; m_partNumber = value; }
+
+ /**
+ * <p>Part number of the object being read. This is a positive integer between 1
+ * and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
+ * Useful querying about the size of the part and the number of parts in this
+ * object.</p>
+ */
+ inline HeadObjectRequest& WithPartNumber(int value) { SetPartNumber(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline HeadObjectRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline HeadObjectRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline HeadObjectRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline HeadObjectRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline HeadObjectRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline HeadObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline HeadObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline HeadObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline HeadObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline HeadObjectRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline HeadObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline HeadObjectRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_ifMatch;
+ bool m_ifMatchHasBeenSet;
+
+ Aws::Utils::DateTime m_ifModifiedSince;
+ bool m_ifModifiedSinceHasBeenSet;
+
+ Aws::String m_ifNoneMatch;
+ bool m_ifNoneMatchHasBeenSet;
+
+ Aws::Utils::DateTime m_ifUnmodifiedSince;
+ bool m_ifUnmodifiedSinceHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_range;
+ bool m_rangeHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ Aws::String m_sSECustomerAlgorithm;
+ bool m_sSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_sSECustomerKey;
+ bool m_sSECustomerKeyHasBeenSet;
+
+ Aws::String m_sSECustomerKeyMD5;
+ bool m_sSECustomerKeyMD5HasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ int m_partNumber;
+ bool m_partNumberHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectResult.h
new file mode 100644
index 00000000000..7004c0a8254
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectResult.h
@@ -0,0 +1,1433 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ArchiveStatus.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <aws/s3/model/ReplicationStatus.h>
+#include <aws/s3/model/ObjectLockMode.h>
+#include <aws/s3/model/ObjectLockLegalHoldStatus.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API HeadObjectResult
+ {
+ public:
+ HeadObjectResult();
+ HeadObjectResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ HeadObjectResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Specifies whether the object retrieved was (true) or was not (false) a Delete
+ * Marker. If false, this response header does not appear in the response.</p>
+ */
+ inline bool GetDeleteMarker() const{ return m_deleteMarker; }
+
+ /**
+ * <p>Specifies whether the object retrieved was (true) or was not (false) a Delete
+ * Marker. If false, this response header does not appear in the response.</p>
+ */
+ inline void SetDeleteMarker(bool value) { m_deleteMarker = value; }
+
+ /**
+ * <p>Specifies whether the object retrieved was (true) or was not (false) a Delete
+ * Marker. If false, this response header does not appear in the response.</p>
+ */
+ inline HeadObjectResult& WithDeleteMarker(bool value) { SetDeleteMarker(value); return *this;}
+
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline const Aws::String& GetAcceptRanges() const{ return m_acceptRanges; }
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline void SetAcceptRanges(const Aws::String& value) { m_acceptRanges = value; }
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline void SetAcceptRanges(Aws::String&& value) { m_acceptRanges = std::move(value); }
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline void SetAcceptRanges(const char* value) { m_acceptRanges.assign(value); }
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline HeadObjectResult& WithAcceptRanges(const Aws::String& value) { SetAcceptRanges(value); return *this;}
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline HeadObjectResult& WithAcceptRanges(Aws::String&& value) { SetAcceptRanges(std::move(value)); return *this;}
+
+ /**
+ * <p>Indicates that a range of bytes was specified.</p>
+ */
+ inline HeadObjectResult& WithAcceptRanges(const char* value) { SetAcceptRanges(value); return *this;}
+
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline const Aws::String& GetExpiration() const{ return m_expiration; }
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline void SetExpiration(const Aws::String& value) { m_expiration = value; }
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline void SetExpiration(Aws::String&& value) { m_expiration = std::move(value); }
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline void SetExpiration(const char* value) { m_expiration.assign(value); }
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline HeadObjectResult& WithExpiration(const Aws::String& value) { SetExpiration(value); return *this;}
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline HeadObjectResult& WithExpiration(Aws::String&& value) { SetExpiration(std::move(value)); return *this;}
+
+ /**
+ * <p>If the object expiration is configured (see PUT Bucket lifecycle), the
+ * response includes this header. It includes the expiry-date and rule-id key-value
+ * pairs providing object expiration information. The value of the rule-id is URL
+ * encoded.</p>
+ */
+ inline HeadObjectResult& WithExpiration(const char* value) { SetExpiration(value); return *this;}
+
+
+ /**
+ * <p>If the object is an archived object (an object whose storage class is
+ * GLACIER), the response includes this header if either the archive restoration is
+ * in progress (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a>
+ * or an archive copy is already restored.</p> <p> If an archive copy is already
+ * restored, the header value indicates when Amazon S3 is scheduled to delete the
+ * object copy. For example:</p> <p> <code>x-amz-restore: ongoing-request="false",
+ * expiry-date="Fri, 23 Dec 2012 00:00:00 GMT"</code> </p> <p>If the object
+ * restoration is in progress, the header returns the value
+ * <code>ongoing-request="true"</code>.</p> <p>For more information about archiving
+ * objects, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning
+ * Objects: General Considerations</a>.</p>
+ */
+ inline const Aws::String& GetRestore() const{ return m_restore; }
+
+ /**
+ * <p>If the object is an archived object (an object whose storage class is
+ * GLACIER), the response includes this header if either the archive restoration is
+ * in progress (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a>
+ * or an archive copy is already restored.</p> <p> If an archive copy is already
+ * restored, the header value indicates when Amazon S3 is scheduled to delete the
+ * object copy. For example:</p> <p> <code>x-amz-restore: ongoing-request="false",
+ * expiry-date="Fri, 23 Dec 2012 00:00:00 GMT"</code> </p> <p>If the object
+ * restoration is in progress, the header returns the value
+ * <code>ongoing-request="true"</code>.</p> <p>For more information about archiving
+ * objects, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning
+ * Objects: General Considerations</a>.</p>
+ */
+ inline void SetRestore(const Aws::String& value) { m_restore = value; }
+
+ /**
+ * <p>If the object is an archived object (an object whose storage class is
+ * GLACIER), the response includes this header if either the archive restoration is
+ * in progress (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a>
+ * or an archive copy is already restored.</p> <p> If an archive copy is already
+ * restored, the header value indicates when Amazon S3 is scheduled to delete the
+ * object copy. For example:</p> <p> <code>x-amz-restore: ongoing-request="false",
+ * expiry-date="Fri, 23 Dec 2012 00:00:00 GMT"</code> </p> <p>If the object
+ * restoration is in progress, the header returns the value
+ * <code>ongoing-request="true"</code>.</p> <p>For more information about archiving
+ * objects, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning
+ * Objects: General Considerations</a>.</p>
+ */
+ inline void SetRestore(Aws::String&& value) { m_restore = std::move(value); }
+
+ /**
+ * <p>If the object is an archived object (an object whose storage class is
+ * GLACIER), the response includes this header if either the archive restoration is
+ * in progress (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a>
+ * or an archive copy is already restored.</p> <p> If an archive copy is already
+ * restored, the header value indicates when Amazon S3 is scheduled to delete the
+ * object copy. For example:</p> <p> <code>x-amz-restore: ongoing-request="false",
+ * expiry-date="Fri, 23 Dec 2012 00:00:00 GMT"</code> </p> <p>If the object
+ * restoration is in progress, the header returns the value
+ * <code>ongoing-request="true"</code>.</p> <p>For more information about archiving
+ * objects, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning
+ * Objects: General Considerations</a>.</p>
+ */
+ inline void SetRestore(const char* value) { m_restore.assign(value); }
+
+ /**
+ * <p>If the object is an archived object (an object whose storage class is
+ * GLACIER), the response includes this header if either the archive restoration is
+ * in progress (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a>
+ * or an archive copy is already restored.</p> <p> If an archive copy is already
+ * restored, the header value indicates when Amazon S3 is scheduled to delete the
+ * object copy. For example:</p> <p> <code>x-amz-restore: ongoing-request="false",
+ * expiry-date="Fri, 23 Dec 2012 00:00:00 GMT"</code> </p> <p>If the object
+ * restoration is in progress, the header returns the value
+ * <code>ongoing-request="true"</code>.</p> <p>For more information about archiving
+ * objects, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning
+ * Objects: General Considerations</a>.</p>
+ */
+ inline HeadObjectResult& WithRestore(const Aws::String& value) { SetRestore(value); return *this;}
+
+ /**
+ * <p>If the object is an archived object (an object whose storage class is
+ * GLACIER), the response includes this header if either the archive restoration is
+ * in progress (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a>
+ * or an archive copy is already restored.</p> <p> If an archive copy is already
+ * restored, the header value indicates when Amazon S3 is scheduled to delete the
+ * object copy. For example:</p> <p> <code>x-amz-restore: ongoing-request="false",
+ * expiry-date="Fri, 23 Dec 2012 00:00:00 GMT"</code> </p> <p>If the object
+ * restoration is in progress, the header returns the value
+ * <code>ongoing-request="true"</code>.</p> <p>For more information about archiving
+ * objects, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning
+ * Objects: General Considerations</a>.</p>
+ */
+ inline HeadObjectResult& WithRestore(Aws::String&& value) { SetRestore(std::move(value)); return *this;}
+
+ /**
+ * <p>If the object is an archived object (an object whose storage class is
+ * GLACIER), the response includes this header if either the archive restoration is
+ * in progress (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html">RestoreObject</a>
+ * or an archive copy is already restored.</p> <p> If an archive copy is already
+ * restored, the header value indicates when Amazon S3 is scheduled to delete the
+ * object copy. For example:</p> <p> <code>x-amz-restore: ongoing-request="false",
+ * expiry-date="Fri, 23 Dec 2012 00:00:00 GMT"</code> </p> <p>If the object
+ * restoration is in progress, the header returns the value
+ * <code>ongoing-request="true"</code>.</p> <p>For more information about archiving
+ * objects, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations">Transitioning
+ * Objects: General Considerations</a>.</p>
+ */
+ inline HeadObjectResult& WithRestore(const char* value) { SetRestore(value); return *this;}
+
+
+ /**
+ * <p>The archive state of the head object.</p>
+ */
+ inline const ArchiveStatus& GetArchiveStatus() const{ return m_archiveStatus; }
+
+ /**
+ * <p>The archive state of the head object.</p>
+ */
+ inline void SetArchiveStatus(const ArchiveStatus& value) { m_archiveStatus = value; }
+
+ /**
+ * <p>The archive state of the head object.</p>
+ */
+ inline void SetArchiveStatus(ArchiveStatus&& value) { m_archiveStatus = std::move(value); }
+
+ /**
+ * <p>The archive state of the head object.</p>
+ */
+ inline HeadObjectResult& WithArchiveStatus(const ArchiveStatus& value) { SetArchiveStatus(value); return *this;}
+
+ /**
+ * <p>The archive state of the head object.</p>
+ */
+ inline HeadObjectResult& WithArchiveStatus(ArchiveStatus&& value) { SetArchiveStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline const Aws::Utils::DateTime& GetLastModified() const{ return m_lastModified; }
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline void SetLastModified(const Aws::Utils::DateTime& value) { m_lastModified = value; }
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline void SetLastModified(Aws::Utils::DateTime&& value) { m_lastModified = std::move(value); }
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline HeadObjectResult& WithLastModified(const Aws::Utils::DateTime& value) { SetLastModified(value); return *this;}
+
+ /**
+ * <p>Last modified date of the object</p>
+ */
+ inline HeadObjectResult& WithLastModified(Aws::Utils::DateTime&& value) { SetLastModified(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Size of the body in bytes.</p>
+ */
+ inline long long GetContentLength() const{ return m_contentLength; }
+
+ /**
+ * <p>Size of the body in bytes.</p>
+ */
+ inline void SetContentLength(long long value) { m_contentLength = value; }
+
+ /**
+ * <p>Size of the body in bytes.</p>
+ */
+ inline HeadObjectResult& WithContentLength(long long value) { SetContentLength(value); return *this;}
+
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTag = value; }
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTag = std::move(value); }
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline void SetETag(const char* value) { m_eTag.assign(value); }
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline HeadObjectResult& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline HeadObjectResult& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>An ETag is an opaque identifier assigned by a web server to a specific
+ * version of a resource found at a URL.</p>
+ */
+ inline HeadObjectResult& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>This is set to the number of metadata entries not returned in
+ * <code>x-amz-meta</code> headers. This can happen if you create metadata using an
+ * API like SOAP that supports more flexible metadata than the REST API. For
+ * example, using SOAP, you can create metadata whose values are not legal HTTP
+ * headers.</p>
+ */
+ inline int GetMissingMeta() const{ return m_missingMeta; }
+
+ /**
+ * <p>This is set to the number of metadata entries not returned in
+ * <code>x-amz-meta</code> headers. This can happen if you create metadata using an
+ * API like SOAP that supports more flexible metadata than the REST API. For
+ * example, using SOAP, you can create metadata whose values are not legal HTTP
+ * headers.</p>
+ */
+ inline void SetMissingMeta(int value) { m_missingMeta = value; }
+
+ /**
+ * <p>This is set to the number of metadata entries not returned in
+ * <code>x-amz-meta</code> headers. This can happen if you create metadata using an
+ * API like SOAP that supports more flexible metadata than the REST API. For
+ * example, using SOAP, you can create metadata whose values are not legal HTTP
+ * headers.</p>
+ */
+ inline HeadObjectResult& WithMissingMeta(int value) { SetMissingMeta(value); return *this;}
+
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionId = value; }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionId = std::move(value); }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionId.assign(value); }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline HeadObjectResult& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline HeadObjectResult& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline HeadObjectResult& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline const Aws::String& GetCacheControl() const{ return m_cacheControl; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(const Aws::String& value) { m_cacheControl = value; }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(Aws::String&& value) { m_cacheControl = std::move(value); }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline void SetCacheControl(const char* value) { m_cacheControl.assign(value); }
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline HeadObjectResult& WithCacheControl(const Aws::String& value) { SetCacheControl(value); return *this;}
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline HeadObjectResult& WithCacheControl(Aws::String&& value) { SetCacheControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies caching behavior along the request/reply chain.</p>
+ */
+ inline HeadObjectResult& WithCacheControl(const char* value) { SetCacheControl(value); return *this;}
+
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline const Aws::String& GetContentDisposition() const{ return m_contentDisposition; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(const Aws::String& value) { m_contentDisposition = value; }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(Aws::String&& value) { m_contentDisposition = std::move(value); }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline void SetContentDisposition(const char* value) { m_contentDisposition.assign(value); }
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline HeadObjectResult& WithContentDisposition(const Aws::String& value) { SetContentDisposition(value); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline HeadObjectResult& WithContentDisposition(Aws::String&& value) { SetContentDisposition(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object.</p>
+ */
+ inline HeadObjectResult& WithContentDisposition(const char* value) { SetContentDisposition(value); return *this;}
+
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline const Aws::String& GetContentEncoding() const{ return m_contentEncoding; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(const Aws::String& value) { m_contentEncoding = value; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(Aws::String&& value) { m_contentEncoding = std::move(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline void SetContentEncoding(const char* value) { m_contentEncoding.assign(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline HeadObjectResult& WithContentEncoding(const Aws::String& value) { SetContentEncoding(value); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline HeadObjectResult& WithContentEncoding(Aws::String&& value) { SetContentEncoding(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field.</p>
+ */
+ inline HeadObjectResult& WithContentEncoding(const char* value) { SetContentEncoding(value); return *this;}
+
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline const Aws::String& GetContentLanguage() const{ return m_contentLanguage; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const Aws::String& value) { m_contentLanguage = value; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(Aws::String&& value) { m_contentLanguage = std::move(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const char* value) { m_contentLanguage.assign(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline HeadObjectResult& WithContentLanguage(const Aws::String& value) { SetContentLanguage(value); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline HeadObjectResult& WithContentLanguage(Aws::String&& value) { SetContentLanguage(std::move(value)); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline HeadObjectResult& WithContentLanguage(const char* value) { SetContentLanguage(value); return *this;}
+
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline const Aws::String& GetContentType() const{ return m_contentType; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(const Aws::String& value) { m_contentType = value; }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(Aws::String&& value) { m_contentType = std::move(value); }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline void SetContentType(const char* value) { m_contentType.assign(value); }
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline HeadObjectResult& WithContentType(const Aws::String& value) { SetContentType(value); return *this;}
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline HeadObjectResult& WithContentType(Aws::String&& value) { SetContentType(std::move(value)); return *this;}
+
+ /**
+ * <p>A standard MIME type describing the format of the object data.</p>
+ */
+ inline HeadObjectResult& WithContentType(const char* value) { SetContentType(value); return *this;}
+
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline const Aws::Utils::DateTime& GetExpires() const{ return m_expires; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline void SetExpires(const Aws::Utils::DateTime& value) { m_expires = value; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline void SetExpires(Aws::Utils::DateTime&& value) { m_expires = std::move(value); }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline HeadObjectResult& WithExpires(const Aws::Utils::DateTime& value) { SetExpires(value); return *this;}
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable.</p>
+ */
+ inline HeadObjectResult& WithExpires(Aws::Utils::DateTime&& value) { SetExpires(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline const Aws::String& GetWebsiteRedirectLocation() const{ return m_websiteRedirectLocation; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(const Aws::String& value) { m_websiteRedirectLocation = value; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(Aws::String&& value) { m_websiteRedirectLocation = std::move(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline void SetWebsiteRedirectLocation(const char* value) { m_websiteRedirectLocation.assign(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline HeadObjectResult& WithWebsiteRedirectLocation(const Aws::String& value) { SetWebsiteRedirectLocation(value); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline HeadObjectResult& WithWebsiteRedirectLocation(Aws::String&& value) { SetWebsiteRedirectLocation(std::move(value)); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata.</p>
+ */
+ inline HeadObjectResult& WithWebsiteRedirectLocation(const char* value) { SetWebsiteRedirectLocation(value); return *this;}
+
+
+ /**
+ * <p>If the object is stored using server-side encryption either with an AWS KMS
+ * customer master key (CMK) or an Amazon S3-managed encryption key, the response
+ * includes this header with the value of the server-side encryption algorithm used
+ * when storing this object in Amazon S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>If the object is stored using server-side encryption either with an AWS KMS
+ * customer master key (CMK) or an Amazon S3-managed encryption key, the response
+ * includes this header with the value of the server-side encryption algorithm used
+ * when storing this object in Amazon S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; }
+
+ /**
+ * <p>If the object is stored using server-side encryption either with an AWS KMS
+ * customer master key (CMK) or an Amazon S3-managed encryption key, the response
+ * includes this header with the value of the server-side encryption algorithm used
+ * when storing this object in Amazon S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>If the object is stored using server-side encryption either with an AWS KMS
+ * customer master key (CMK) or an Amazon S3-managed encryption key, the response
+ * includes this header with the value of the server-side encryption algorithm used
+ * when storing this object in Amazon S3 (for example, AES256, aws:kms).</p>
+ */
+ inline HeadObjectResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>If the object is stored using server-side encryption either with an AWS KMS
+ * customer master key (CMK) or an Amazon S3-managed encryption key, the response
+ * includes this header with the value of the server-side encryption algorithm used
+ * when storing this object in Amazon S3 (for example, AES256, aws:kms).</p>
+ */
+ inline HeadObjectResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline const Aws::Map<Aws::String, Aws::String>& GetMetadata() const{ return m_metadata; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(const Aws::Map<Aws::String, Aws::String>& value) { m_metadata = value; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(Aws::Map<Aws::String, Aws::String>&& value) { m_metadata = std::move(value); }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline HeadObjectResult& WithMetadata(const Aws::Map<Aws::String, Aws::String>& value) { SetMetadata(value); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline HeadObjectResult& WithMetadata(Aws::Map<Aws::String, Aws::String>&& value) { SetMetadata(std::move(value)); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline HeadObjectResult& AddMetadata(const Aws::String& key, const Aws::String& value) { m_metadata.emplace(key, value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline HeadObjectResult& AddMetadata(Aws::String&& key, const Aws::String& value) { m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline HeadObjectResult& AddMetadata(const Aws::String& key, Aws::String&& value) { m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline HeadObjectResult& AddMetadata(Aws::String&& key, Aws::String&& value) { m_metadata.emplace(std::move(key), std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline HeadObjectResult& AddMetadata(const char* key, Aws::String&& value) { m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline HeadObjectResult& AddMetadata(Aws::String&& key, const char* value) { m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline HeadObjectResult& AddMetadata(const char* key, const char* value) { m_metadata.emplace(key, value); return *this; }
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline HeadObjectResult& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline HeadObjectResult& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline HeadObjectResult& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline HeadObjectResult& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline HeadObjectResult& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline HeadObjectResult& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline HeadObjectResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline HeadObjectResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline HeadObjectResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption
+ * with AWS KMS (SSE-KMS).</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption
+ * with AWS KMS (SSE-KMS).</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Indicates whether the object uses an S3 Bucket Key for server-side encryption
+ * with AWS KMS (SSE-KMS).</p>
+ */
+ inline HeadObjectResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p> <p>For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a>.</p>
+ */
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p> <p>For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a>.</p>
+ */
+ inline void SetStorageClass(const StorageClass& value) { m_storageClass = value; }
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p> <p>For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a>.</p>
+ */
+ inline void SetStorageClass(StorageClass&& value) { m_storageClass = std::move(value); }
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p> <p>For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a>.</p>
+ */
+ inline HeadObjectResult& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>Provides storage class information of the object. Amazon S3 returns this
+ * header for all objects except for S3 Standard storage class objects.</p> <p>For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a>.</p>
+ */
+ inline HeadObjectResult& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline HeadObjectResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline HeadObjectResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Amazon S3 can return this header if your request involves a bucket that is
+ * either a source or a destination in a replication rule.</p> <p>In replication,
+ * you have a source bucket on which you configure replication and destination
+ * bucket or buckets where Amazon S3 stores object replicas. When you request an
+ * object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>)
+ * from these buckets, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header in the response as follows:</p>
+ * <ul> <li> <p>If requesting an object from the source bucket — Amazon S3 will
+ * return the <code>x-amz-replication-status</code> header if the object in your
+ * request is eligible for replication.</p> <p> For example, suppose that in your
+ * replication configuration, you specify object prefix <code>TaxDocs</code>
+ * requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>.
+ * Any objects you upload with this key name prefix, for example
+ * <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object
+ * request with this key name prefix, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or
+ * FAILED indicating object replication status.</p> </li> <li> <p>If requesting an
+ * object from a destination bucket — Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value REPLICA if the object in
+ * your request is a replica that Amazon S3 created and there is no replica
+ * modification replication in progress.</p> </li> <li> <p>When replicating objects
+ * to multiple destination buckets the <code>x-amz-replication-status</code> header
+ * acts differently. The header of the source object will only return a value of
+ * COMPLETED when replication is successful to all destinations. The header will
+ * remain at value PENDING until replication has completed for all destinations. If
+ * one or more destinations fails replication the header will return FAILED. </p>
+ * </li> </ul> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p>
+ */
+ inline const ReplicationStatus& GetReplicationStatus() const{ return m_replicationStatus; }
+
+ /**
+ * <p>Amazon S3 can return this header if your request involves a bucket that is
+ * either a source or a destination in a replication rule.</p> <p>In replication,
+ * you have a source bucket on which you configure replication and destination
+ * bucket or buckets where Amazon S3 stores object replicas. When you request an
+ * object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>)
+ * from these buckets, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header in the response as follows:</p>
+ * <ul> <li> <p>If requesting an object from the source bucket — Amazon S3 will
+ * return the <code>x-amz-replication-status</code> header if the object in your
+ * request is eligible for replication.</p> <p> For example, suppose that in your
+ * replication configuration, you specify object prefix <code>TaxDocs</code>
+ * requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>.
+ * Any objects you upload with this key name prefix, for example
+ * <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object
+ * request with this key name prefix, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or
+ * FAILED indicating object replication status.</p> </li> <li> <p>If requesting an
+ * object from a destination bucket — Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value REPLICA if the object in
+ * your request is a replica that Amazon S3 created and there is no replica
+ * modification replication in progress.</p> </li> <li> <p>When replicating objects
+ * to multiple destination buckets the <code>x-amz-replication-status</code> header
+ * acts differently. The header of the source object will only return a value of
+ * COMPLETED when replication is successful to all destinations. The header will
+ * remain at value PENDING until replication has completed for all destinations. If
+ * one or more destinations fails replication the header will return FAILED. </p>
+ * </li> </ul> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p>
+ */
+ inline void SetReplicationStatus(const ReplicationStatus& value) { m_replicationStatus = value; }
+
+ /**
+ * <p>Amazon S3 can return this header if your request involves a bucket that is
+ * either a source or a destination in a replication rule.</p> <p>In replication,
+ * you have a source bucket on which you configure replication and destination
+ * bucket or buckets where Amazon S3 stores object replicas. When you request an
+ * object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>)
+ * from these buckets, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header in the response as follows:</p>
+ * <ul> <li> <p>If requesting an object from the source bucket — Amazon S3 will
+ * return the <code>x-amz-replication-status</code> header if the object in your
+ * request is eligible for replication.</p> <p> For example, suppose that in your
+ * replication configuration, you specify object prefix <code>TaxDocs</code>
+ * requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>.
+ * Any objects you upload with this key name prefix, for example
+ * <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object
+ * request with this key name prefix, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or
+ * FAILED indicating object replication status.</p> </li> <li> <p>If requesting an
+ * object from a destination bucket — Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value REPLICA if the object in
+ * your request is a replica that Amazon S3 created and there is no replica
+ * modification replication in progress.</p> </li> <li> <p>When replicating objects
+ * to multiple destination buckets the <code>x-amz-replication-status</code> header
+ * acts differently. The header of the source object will only return a value of
+ * COMPLETED when replication is successful to all destinations. The header will
+ * remain at value PENDING until replication has completed for all destinations. If
+ * one or more destinations fails replication the header will return FAILED. </p>
+ * </li> </ul> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p>
+ */
+ inline void SetReplicationStatus(ReplicationStatus&& value) { m_replicationStatus = std::move(value); }
+
+ /**
+ * <p>Amazon S3 can return this header if your request involves a bucket that is
+ * either a source or a destination in a replication rule.</p> <p>In replication,
+ * you have a source bucket on which you configure replication and destination
+ * bucket or buckets where Amazon S3 stores object replicas. When you request an
+ * object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>)
+ * from these buckets, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header in the response as follows:</p>
+ * <ul> <li> <p>If requesting an object from the source bucket — Amazon S3 will
+ * return the <code>x-amz-replication-status</code> header if the object in your
+ * request is eligible for replication.</p> <p> For example, suppose that in your
+ * replication configuration, you specify object prefix <code>TaxDocs</code>
+ * requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>.
+ * Any objects you upload with this key name prefix, for example
+ * <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object
+ * request with this key name prefix, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or
+ * FAILED indicating object replication status.</p> </li> <li> <p>If requesting an
+ * object from a destination bucket — Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value REPLICA if the object in
+ * your request is a replica that Amazon S3 created and there is no replica
+ * modification replication in progress.</p> </li> <li> <p>When replicating objects
+ * to multiple destination buckets the <code>x-amz-replication-status</code> header
+ * acts differently. The header of the source object will only return a value of
+ * COMPLETED when replication is successful to all destinations. The header will
+ * remain at value PENDING until replication has completed for all destinations. If
+ * one or more destinations fails replication the header will return FAILED. </p>
+ * </li> </ul> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p>
+ */
+ inline HeadObjectResult& WithReplicationStatus(const ReplicationStatus& value) { SetReplicationStatus(value); return *this;}
+
+ /**
+ * <p>Amazon S3 can return this header if your request involves a bucket that is
+ * either a source or a destination in a replication rule.</p> <p>In replication,
+ * you have a source bucket on which you configure replication and destination
+ * bucket or buckets where Amazon S3 stores object replicas. When you request an
+ * object (<code>GetObject</code>) or object metadata (<code>HeadObject</code>)
+ * from these buckets, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header in the response as follows:</p>
+ * <ul> <li> <p>If requesting an object from the source bucket — Amazon S3 will
+ * return the <code>x-amz-replication-status</code> header if the object in your
+ * request is eligible for replication.</p> <p> For example, suppose that in your
+ * replication configuration, you specify object prefix <code>TaxDocs</code>
+ * requesting Amazon S3 to replicate objects with key prefix <code>TaxDocs</code>.
+ * Any objects you upload with this key name prefix, for example
+ * <code>TaxDocs/document1.pdf</code>, are eligible for replication. For any object
+ * request with this key name prefix, Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value PENDING, COMPLETED or
+ * FAILED indicating object replication status.</p> </li> <li> <p>If requesting an
+ * object from a destination bucket — Amazon S3 will return the
+ * <code>x-amz-replication-status</code> header with value REPLICA if the object in
+ * your request is a replica that Amazon S3 created and there is no replica
+ * modification replication in progress.</p> </li> <li> <p>When replicating objects
+ * to multiple destination buckets the <code>x-amz-replication-status</code> header
+ * acts differently. The header of the source object will only return a value of
+ * COMPLETED when replication is successful to all destinations. The header will
+ * remain at value PENDING until replication has completed for all destinations. If
+ * one or more destinations fails replication the header will return FAILED. </p>
+ * </li> </ul> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Replication</a>.</p>
+ */
+ inline HeadObjectResult& WithReplicationStatus(ReplicationStatus&& value) { SetReplicationStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The count of parts this object has.</p>
+ */
+ inline int GetPartsCount() const{ return m_partsCount; }
+
+ /**
+ * <p>The count of parts this object has.</p>
+ */
+ inline void SetPartsCount(int value) { m_partsCount = value; }
+
+ /**
+ * <p>The count of parts this object has.</p>
+ */
+ inline HeadObjectResult& WithPartsCount(int value) { SetPartsCount(value); return *this;}
+
+
+ /**
+ * <p>The Object Lock mode, if any, that's in effect for this object. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission. For more information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>. </p>
+ */
+ inline const ObjectLockMode& GetObjectLockMode() const{ return m_objectLockMode; }
+
+ /**
+ * <p>The Object Lock mode, if any, that's in effect for this object. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission. For more information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>. </p>
+ */
+ inline void SetObjectLockMode(const ObjectLockMode& value) { m_objectLockMode = value; }
+
+ /**
+ * <p>The Object Lock mode, if any, that's in effect for this object. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission. For more information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>. </p>
+ */
+ inline void SetObjectLockMode(ObjectLockMode&& value) { m_objectLockMode = std::move(value); }
+
+ /**
+ * <p>The Object Lock mode, if any, that's in effect for this object. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission. For more information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>. </p>
+ */
+ inline HeadObjectResult& WithObjectLockMode(const ObjectLockMode& value) { SetObjectLockMode(value); return *this;}
+
+ /**
+ * <p>The Object Lock mode, if any, that's in effect for this object. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission. For more information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>. </p>
+ */
+ inline HeadObjectResult& WithObjectLockMode(ObjectLockMode&& value) { SetObjectLockMode(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The date and time when the Object Lock retention period expires. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission.</p>
+ */
+ inline const Aws::Utils::DateTime& GetObjectLockRetainUntilDate() const{ return m_objectLockRetainUntilDate; }
+
+ /**
+ * <p>The date and time when the Object Lock retention period expires. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { m_objectLockRetainUntilDate = value; }
+
+ /**
+ * <p>The date and time when the Object Lock retention period expires. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { m_objectLockRetainUntilDate = std::move(value); }
+
+ /**
+ * <p>The date and time when the Object Lock retention period expires. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission.</p>
+ */
+ inline HeadObjectResult& WithObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { SetObjectLockRetainUntilDate(value); return *this;}
+
+ /**
+ * <p>The date and time when the Object Lock retention period expires. This header
+ * is only returned if the requester has the <code>s3:GetObjectRetention</code>
+ * permission.</p>
+ */
+ inline HeadObjectResult& WithObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { SetObjectLockRetainUntilDate(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether a legal hold is in effect for this object. This header is
+ * only returned if the requester has the <code>s3:GetObjectLegalHold</code>
+ * permission. This header is not returned if the specified version of this object
+ * has never had a legal hold applied. For more information about S3 Object Lock,
+ * see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline const ObjectLockLegalHoldStatus& GetObjectLockLegalHoldStatus() const{ return m_objectLockLegalHoldStatus; }
+
+ /**
+ * <p>Specifies whether a legal hold is in effect for this object. This header is
+ * only returned if the requester has the <code>s3:GetObjectLegalHold</code>
+ * permission. This header is not returned if the specified version of this object
+ * has never had a legal hold applied. For more information about S3 Object Lock,
+ * see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline void SetObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { m_objectLockLegalHoldStatus = value; }
+
+ /**
+ * <p>Specifies whether a legal hold is in effect for this object. This header is
+ * only returned if the requester has the <code>s3:GetObjectLegalHold</code>
+ * permission. This header is not returned if the specified version of this object
+ * has never had a legal hold applied. For more information about S3 Object Lock,
+ * see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline void SetObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { m_objectLockLegalHoldStatus = std::move(value); }
+
+ /**
+ * <p>Specifies whether a legal hold is in effect for this object. This header is
+ * only returned if the requester has the <code>s3:GetObjectLegalHold</code>
+ * permission. This header is not returned if the specified version of this object
+ * has never had a legal hold applied. For more information about S3 Object Lock,
+ * see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline HeadObjectResult& WithObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { SetObjectLockLegalHoldStatus(value); return *this;}
+
+ /**
+ * <p>Specifies whether a legal hold is in effect for this object. This header is
+ * only returned if the requester has the <code>s3:GetObjectLegalHold</code>
+ * permission. This header is not returned if the specified version of this object
+ * has never had a legal hold applied. For more information about S3 Object Lock,
+ * see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline HeadObjectResult& WithObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { SetObjectLockLegalHoldStatus(std::move(value)); return *this;}
+
+ private:
+
+ bool m_deleteMarker;
+
+ Aws::String m_acceptRanges;
+
+ Aws::String m_expiration;
+
+ Aws::String m_restore;
+
+ ArchiveStatus m_archiveStatus;
+
+ Aws::Utils::DateTime m_lastModified;
+
+ long long m_contentLength;
+
+ Aws::String m_eTag;
+
+ int m_missingMeta;
+
+ Aws::String m_versionId;
+
+ Aws::String m_cacheControl;
+
+ Aws::String m_contentDisposition;
+
+ Aws::String m_contentEncoding;
+
+ Aws::String m_contentLanguage;
+
+ Aws::String m_contentType;
+
+ Aws::Utils::DateTime m_expires;
+
+ Aws::String m_websiteRedirectLocation;
+
+ ServerSideEncryption m_serverSideEncryption;
+
+ Aws::Map<Aws::String, Aws::String> m_metadata;
+
+ Aws::String m_sSECustomerAlgorithm;
+
+ Aws::String m_sSECustomerKeyMD5;
+
+ Aws::String m_sSEKMSKeyId;
+
+ bool m_bucketKeyEnabled;
+
+ StorageClass m_storageClass;
+
+ RequestCharged m_requestCharged;
+
+ ReplicationStatus m_replicationStatus;
+
+ int m_partsCount;
+
+ ObjectLockMode m_objectLockMode;
+
+ Aws::Utils::DateTime m_objectLockRetainUntilDate;
+
+ ObjectLockLegalHoldStatus m_objectLockLegalHoldStatus;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IndexDocument.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IndexDocument.h
new file mode 100644
index 00000000000..1bd88410c6f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IndexDocument.h
@@ -0,0 +1,120 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for the <code>Suffix</code> element.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/IndexDocument">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API IndexDocument
+ {
+ public:
+ IndexDocument();
+ IndexDocument(const Aws::Utils::Xml::XmlNode& xmlNode);
+ IndexDocument& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>A suffix that is appended to a request that is for a directory on the website
+ * endpoint (for example,if the suffix is index.html and you make a request to
+ * samplebucket/images/ the data that is returned will be for the object with the
+ * key name images/index.html) The suffix must not be empty and must not include a
+ * slash character.</p>
+ */
+ inline const Aws::String& GetSuffix() const{ return m_suffix; }
+
+ /**
+ * <p>A suffix that is appended to a request that is for a directory on the website
+ * endpoint (for example,if the suffix is index.html and you make a request to
+ * samplebucket/images/ the data that is returned will be for the object with the
+ * key name images/index.html) The suffix must not be empty and must not include a
+ * slash character.</p>
+ */
+ inline bool SuffixHasBeenSet() const { return m_suffixHasBeenSet; }
+
+ /**
+ * <p>A suffix that is appended to a request that is for a directory on the website
+ * endpoint (for example,if the suffix is index.html and you make a request to
+ * samplebucket/images/ the data that is returned will be for the object with the
+ * key name images/index.html) The suffix must not be empty and must not include a
+ * slash character.</p>
+ */
+ inline void SetSuffix(const Aws::String& value) { m_suffixHasBeenSet = true; m_suffix = value; }
+
+ /**
+ * <p>A suffix that is appended to a request that is for a directory on the website
+ * endpoint (for example,if the suffix is index.html and you make a request to
+ * samplebucket/images/ the data that is returned will be for the object with the
+ * key name images/index.html) The suffix must not be empty and must not include a
+ * slash character.</p>
+ */
+ inline void SetSuffix(Aws::String&& value) { m_suffixHasBeenSet = true; m_suffix = std::move(value); }
+
+ /**
+ * <p>A suffix that is appended to a request that is for a directory on the website
+ * endpoint (for example,if the suffix is index.html and you make a request to
+ * samplebucket/images/ the data that is returned will be for the object with the
+ * key name images/index.html) The suffix must not be empty and must not include a
+ * slash character.</p>
+ */
+ inline void SetSuffix(const char* value) { m_suffixHasBeenSet = true; m_suffix.assign(value); }
+
+ /**
+ * <p>A suffix that is appended to a request that is for a directory on the website
+ * endpoint (for example,if the suffix is index.html and you make a request to
+ * samplebucket/images/ the data that is returned will be for the object with the
+ * key name images/index.html) The suffix must not be empty and must not include a
+ * slash character.</p>
+ */
+ inline IndexDocument& WithSuffix(const Aws::String& value) { SetSuffix(value); return *this;}
+
+ /**
+ * <p>A suffix that is appended to a request that is for a directory on the website
+ * endpoint (for example,if the suffix is index.html and you make a request to
+ * samplebucket/images/ the data that is returned will be for the object with the
+ * key name images/index.html) The suffix must not be empty and must not include a
+ * slash character.</p>
+ */
+ inline IndexDocument& WithSuffix(Aws::String&& value) { SetSuffix(std::move(value)); return *this;}
+
+ /**
+ * <p>A suffix that is appended to a request that is for a directory on the website
+ * endpoint (for example,if the suffix is index.html and you make a request to
+ * samplebucket/images/ the data that is returned will be for the object with the
+ * key name images/index.html) The suffix must not be empty and must not include a
+ * slash character.</p>
+ */
+ inline IndexDocument& WithSuffix(const char* value) { SetSuffix(value); return *this;}
+
+ private:
+
+ Aws::String m_suffix;
+ bool m_suffixHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Initiator.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Initiator.h
new file mode 100644
index 00000000000..7e831b799d9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Initiator.h
@@ -0,0 +1,141 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container element that identifies who initiated the multipart upload.
+ * </p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Initiator">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Initiator
+ {
+ public:
+ Initiator();
+ Initiator(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Initiator& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>If the principal is an AWS account, it provides the Canonical User ID. If the
+ * principal is an IAM User, it provides a user ARN value.</p>
+ */
+ inline const Aws::String& GetID() const{ return m_iD; }
+
+ /**
+ * <p>If the principal is an AWS account, it provides the Canonical User ID. If the
+ * principal is an IAM User, it provides a user ARN value.</p>
+ */
+ inline bool IDHasBeenSet() const { return m_iDHasBeenSet; }
+
+ /**
+ * <p>If the principal is an AWS account, it provides the Canonical User ID. If the
+ * principal is an IAM User, it provides a user ARN value.</p>
+ */
+ inline void SetID(const Aws::String& value) { m_iDHasBeenSet = true; m_iD = value; }
+
+ /**
+ * <p>If the principal is an AWS account, it provides the Canonical User ID. If the
+ * principal is an IAM User, it provides a user ARN value.</p>
+ */
+ inline void SetID(Aws::String&& value) { m_iDHasBeenSet = true; m_iD = std::move(value); }
+
+ /**
+ * <p>If the principal is an AWS account, it provides the Canonical User ID. If the
+ * principal is an IAM User, it provides a user ARN value.</p>
+ */
+ inline void SetID(const char* value) { m_iDHasBeenSet = true; m_iD.assign(value); }
+
+ /**
+ * <p>If the principal is an AWS account, it provides the Canonical User ID. If the
+ * principal is an IAM User, it provides a user ARN value.</p>
+ */
+ inline Initiator& WithID(const Aws::String& value) { SetID(value); return *this;}
+
+ /**
+ * <p>If the principal is an AWS account, it provides the Canonical User ID. If the
+ * principal is an IAM User, it provides a user ARN value.</p>
+ */
+ inline Initiator& WithID(Aws::String&& value) { SetID(std::move(value)); return *this;}
+
+ /**
+ * <p>If the principal is an AWS account, it provides the Canonical User ID. If the
+ * principal is an IAM User, it provides a user ARN value.</p>
+ */
+ inline Initiator& WithID(const char* value) { SetID(value); return *this;}
+
+
+ /**
+ * <p>Name of the Principal.</p>
+ */
+ inline const Aws::String& GetDisplayName() const{ return m_displayName; }
+
+ /**
+ * <p>Name of the Principal.</p>
+ */
+ inline bool DisplayNameHasBeenSet() const { return m_displayNameHasBeenSet; }
+
+ /**
+ * <p>Name of the Principal.</p>
+ */
+ inline void SetDisplayName(const Aws::String& value) { m_displayNameHasBeenSet = true; m_displayName = value; }
+
+ /**
+ * <p>Name of the Principal.</p>
+ */
+ inline void SetDisplayName(Aws::String&& value) { m_displayNameHasBeenSet = true; m_displayName = std::move(value); }
+
+ /**
+ * <p>Name of the Principal.</p>
+ */
+ inline void SetDisplayName(const char* value) { m_displayNameHasBeenSet = true; m_displayName.assign(value); }
+
+ /**
+ * <p>Name of the Principal.</p>
+ */
+ inline Initiator& WithDisplayName(const Aws::String& value) { SetDisplayName(value); return *this;}
+
+ /**
+ * <p>Name of the Principal.</p>
+ */
+ inline Initiator& WithDisplayName(Aws::String&& value) { SetDisplayName(std::move(value)); return *this;}
+
+ /**
+ * <p>Name of the Principal.</p>
+ */
+ inline Initiator& WithDisplayName(const char* value) { SetDisplayName(value); return *this;}
+
+ private:
+
+ Aws::String m_iD;
+ bool m_iDHasBeenSet;
+
+ Aws::String m_displayName;
+ bool m_displayNameHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InputSerialization.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InputSerialization.h
new file mode 100644
index 00000000000..332b4ec21de
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InputSerialization.h
@@ -0,0 +1,190 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/CSVInput.h>
+#include <aws/s3/model/CompressionType.h>
+#include <aws/s3/model/JSONInput.h>
+#include <aws/s3/model/ParquetInput.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes the serialization format of the object.</p><p><h3>See Also:</h3>
+ * <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/InputSerialization">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API InputSerialization
+ {
+ public:
+ InputSerialization();
+ InputSerialization(const Aws::Utils::Xml::XmlNode& xmlNode);
+ InputSerialization& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Describes the serialization of a CSV-encoded object.</p>
+ */
+ inline const CSVInput& GetCSV() const{ return m_cSV; }
+
+ /**
+ * <p>Describes the serialization of a CSV-encoded object.</p>
+ */
+ inline bool CSVHasBeenSet() const { return m_cSVHasBeenSet; }
+
+ /**
+ * <p>Describes the serialization of a CSV-encoded object.</p>
+ */
+ inline void SetCSV(const CSVInput& value) { m_cSVHasBeenSet = true; m_cSV = value; }
+
+ /**
+ * <p>Describes the serialization of a CSV-encoded object.</p>
+ */
+ inline void SetCSV(CSVInput&& value) { m_cSVHasBeenSet = true; m_cSV = std::move(value); }
+
+ /**
+ * <p>Describes the serialization of a CSV-encoded object.</p>
+ */
+ inline InputSerialization& WithCSV(const CSVInput& value) { SetCSV(value); return *this;}
+
+ /**
+ * <p>Describes the serialization of a CSV-encoded object.</p>
+ */
+ inline InputSerialization& WithCSV(CSVInput&& value) { SetCSV(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies object's compression format. Valid values: NONE, GZIP, BZIP2.
+ * Default Value: NONE.</p>
+ */
+ inline const CompressionType& GetCompressionType() const{ return m_compressionType; }
+
+ /**
+ * <p>Specifies object's compression format. Valid values: NONE, GZIP, BZIP2.
+ * Default Value: NONE.</p>
+ */
+ inline bool CompressionTypeHasBeenSet() const { return m_compressionTypeHasBeenSet; }
+
+ /**
+ * <p>Specifies object's compression format. Valid values: NONE, GZIP, BZIP2.
+ * Default Value: NONE.</p>
+ */
+ inline void SetCompressionType(const CompressionType& value) { m_compressionTypeHasBeenSet = true; m_compressionType = value; }
+
+ /**
+ * <p>Specifies object's compression format. Valid values: NONE, GZIP, BZIP2.
+ * Default Value: NONE.</p>
+ */
+ inline void SetCompressionType(CompressionType&& value) { m_compressionTypeHasBeenSet = true; m_compressionType = std::move(value); }
+
+ /**
+ * <p>Specifies object's compression format. Valid values: NONE, GZIP, BZIP2.
+ * Default Value: NONE.</p>
+ */
+ inline InputSerialization& WithCompressionType(const CompressionType& value) { SetCompressionType(value); return *this;}
+
+ /**
+ * <p>Specifies object's compression format. Valid values: NONE, GZIP, BZIP2.
+ * Default Value: NONE.</p>
+ */
+ inline InputSerialization& WithCompressionType(CompressionType&& value) { SetCompressionType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies JSON as object's input serialization format.</p>
+ */
+ inline const JSONInput& GetJSON() const{ return m_jSON; }
+
+ /**
+ * <p>Specifies JSON as object's input serialization format.</p>
+ */
+ inline bool JSONHasBeenSet() const { return m_jSONHasBeenSet; }
+
+ /**
+ * <p>Specifies JSON as object's input serialization format.</p>
+ */
+ inline void SetJSON(const JSONInput& value) { m_jSONHasBeenSet = true; m_jSON = value; }
+
+ /**
+ * <p>Specifies JSON as object's input serialization format.</p>
+ */
+ inline void SetJSON(JSONInput&& value) { m_jSONHasBeenSet = true; m_jSON = std::move(value); }
+
+ /**
+ * <p>Specifies JSON as object's input serialization format.</p>
+ */
+ inline InputSerialization& WithJSON(const JSONInput& value) { SetJSON(value); return *this;}
+
+ /**
+ * <p>Specifies JSON as object's input serialization format.</p>
+ */
+ inline InputSerialization& WithJSON(JSONInput&& value) { SetJSON(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies Parquet as object's input serialization format.</p>
+ */
+ inline const ParquetInput& GetParquet() const{ return m_parquet; }
+
+ /**
+ * <p>Specifies Parquet as object's input serialization format.</p>
+ */
+ inline bool ParquetHasBeenSet() const { return m_parquetHasBeenSet; }
+
+ /**
+ * <p>Specifies Parquet as object's input serialization format.</p>
+ */
+ inline void SetParquet(const ParquetInput& value) { m_parquetHasBeenSet = true; m_parquet = value; }
+
+ /**
+ * <p>Specifies Parquet as object's input serialization format.</p>
+ */
+ inline void SetParquet(ParquetInput&& value) { m_parquetHasBeenSet = true; m_parquet = std::move(value); }
+
+ /**
+ * <p>Specifies Parquet as object's input serialization format.</p>
+ */
+ inline InputSerialization& WithParquet(const ParquetInput& value) { SetParquet(value); return *this;}
+
+ /**
+ * <p>Specifies Parquet as object's input serialization format.</p>
+ */
+ inline InputSerialization& WithParquet(ParquetInput&& value) { SetParquet(std::move(value)); return *this;}
+
+ private:
+
+ CSVInput m_cSV;
+ bool m_cSVHasBeenSet;
+
+ CompressionType m_compressionType;
+ bool m_compressionTypeHasBeenSet;
+
+ JSONInput m_jSON;
+ bool m_jSONHasBeenSet;
+
+ ParquetInput m_parquet;
+ bool m_parquetHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringAccessTier.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringAccessTier.h
new file mode 100644
index 00000000000..b84259b865c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringAccessTier.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class IntelligentTieringAccessTier
+ {
+ NOT_SET,
+ ARCHIVE_ACCESS,
+ DEEP_ARCHIVE_ACCESS
+ };
+
+namespace IntelligentTieringAccessTierMapper
+{
+AWS_S3_API IntelligentTieringAccessTier GetIntelligentTieringAccessTierForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForIntelligentTieringAccessTier(IntelligentTieringAccessTier value);
+} // namespace IntelligentTieringAccessTierMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringAndOperator.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringAndOperator.h
new file mode 100644
index 00000000000..f40740341b9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringAndOperator.h
@@ -0,0 +1,152 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tag.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for specifying S3 Intelligent-Tiering filters. The filters
+ * determine the subset of objects to which the rule applies.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/IntelligentTieringAndOperator">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API IntelligentTieringAndOperator
+ {
+ public:
+ IntelligentTieringAndOperator();
+ IntelligentTieringAndOperator(const Aws::Utils::Xml::XmlNode& xmlNode);
+ IntelligentTieringAndOperator& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * configuration applies.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * configuration applies.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * configuration applies.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * configuration applies.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * configuration applies.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * configuration applies.</p>
+ */
+ inline IntelligentTieringAndOperator& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * configuration applies.</p>
+ */
+ inline IntelligentTieringAndOperator& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * configuration applies.</p>
+ */
+ inline IntelligentTieringAndOperator& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the
+ * configuration to apply.</p>
+ */
+ inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the
+ * configuration to apply.</p>
+ */
+ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the
+ * configuration to apply.</p>
+ */
+ inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the
+ * configuration to apply.</p>
+ */
+ inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the
+ * configuration to apply.</p>
+ */
+ inline IntelligentTieringAndOperator& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the
+ * configuration to apply.</p>
+ */
+ inline IntelligentTieringAndOperator& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the
+ * configuration to apply.</p>
+ */
+ inline IntelligentTieringAndOperator& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the
+ * configuration to apply.</p>
+ */
+ inline IntelligentTieringAndOperator& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Aws::Vector<Tag> m_tags;
+ bool m_tagsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringConfiguration.h
new file mode 100644
index 00000000000..5e89009326e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringConfiguration.h
@@ -0,0 +1,223 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/IntelligentTieringFilter.h>
+#include <aws/s3/model/IntelligentTieringStatus.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tiering.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the S3 Intelligent-Tiering configuration for an Amazon S3
+ * bucket.</p> <p>For information about the S3 Intelligent-Tiering storage class,
+ * see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
+ * class for automatically optimizing frequently and infrequently accessed
+ * objects</a>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/IntelligentTieringConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API IntelligentTieringConfiguration
+ {
+ public:
+ IntelligentTieringConfiguration();
+ IntelligentTieringConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ IntelligentTieringConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline IntelligentTieringConfiguration& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline IntelligentTieringConfiguration& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline IntelligentTieringConfiguration& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>Specifies a bucket filter. The configuration only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline const IntelligentTieringFilter& GetFilter() const{ return m_filter; }
+
+ /**
+ * <p>Specifies a bucket filter. The configuration only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
+
+ /**
+ * <p>Specifies a bucket filter. The configuration only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline void SetFilter(const IntelligentTieringFilter& value) { m_filterHasBeenSet = true; m_filter = value; }
+
+ /**
+ * <p>Specifies a bucket filter. The configuration only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline void SetFilter(IntelligentTieringFilter&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
+
+ /**
+ * <p>Specifies a bucket filter. The configuration only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline IntelligentTieringConfiguration& WithFilter(const IntelligentTieringFilter& value) { SetFilter(value); return *this;}
+
+ /**
+ * <p>Specifies a bucket filter. The configuration only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline IntelligentTieringConfiguration& WithFilter(IntelligentTieringFilter&& value) { SetFilter(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the status of the configuration.</p>
+ */
+ inline const IntelligentTieringStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>Specifies the status of the configuration.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>Specifies the status of the configuration.</p>
+ */
+ inline void SetStatus(const IntelligentTieringStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>Specifies the status of the configuration.</p>
+ */
+ inline void SetStatus(IntelligentTieringStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>Specifies the status of the configuration.</p>
+ */
+ inline IntelligentTieringConfiguration& WithStatus(const IntelligentTieringStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>Specifies the status of the configuration.</p>
+ */
+ inline IntelligentTieringConfiguration& WithStatus(IntelligentTieringStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the S3 Intelligent-Tiering storage class tier of the
+ * configuration.</p>
+ */
+ inline const Aws::Vector<Tiering>& GetTierings() const{ return m_tierings; }
+
+ /**
+ * <p>Specifies the S3 Intelligent-Tiering storage class tier of the
+ * configuration.</p>
+ */
+ inline bool TieringsHasBeenSet() const { return m_tieringsHasBeenSet; }
+
+ /**
+ * <p>Specifies the S3 Intelligent-Tiering storage class tier of the
+ * configuration.</p>
+ */
+ inline void SetTierings(const Aws::Vector<Tiering>& value) { m_tieringsHasBeenSet = true; m_tierings = value; }
+
+ /**
+ * <p>Specifies the S3 Intelligent-Tiering storage class tier of the
+ * configuration.</p>
+ */
+ inline void SetTierings(Aws::Vector<Tiering>&& value) { m_tieringsHasBeenSet = true; m_tierings = std::move(value); }
+
+ /**
+ * <p>Specifies the S3 Intelligent-Tiering storage class tier of the
+ * configuration.</p>
+ */
+ inline IntelligentTieringConfiguration& WithTierings(const Aws::Vector<Tiering>& value) { SetTierings(value); return *this;}
+
+ /**
+ * <p>Specifies the S3 Intelligent-Tiering storage class tier of the
+ * configuration.</p>
+ */
+ inline IntelligentTieringConfiguration& WithTierings(Aws::Vector<Tiering>&& value) { SetTierings(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the S3 Intelligent-Tiering storage class tier of the
+ * configuration.</p>
+ */
+ inline IntelligentTieringConfiguration& AddTierings(const Tiering& value) { m_tieringsHasBeenSet = true; m_tierings.push_back(value); return *this; }
+
+ /**
+ * <p>Specifies the S3 Intelligent-Tiering storage class tier of the
+ * configuration.</p>
+ */
+ inline IntelligentTieringConfiguration& AddTierings(Tiering&& value) { m_tieringsHasBeenSet = true; m_tierings.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ IntelligentTieringFilter m_filter;
+ bool m_filterHasBeenSet;
+
+ IntelligentTieringStatus m_status;
+ bool m_statusHasBeenSet;
+
+ Aws::Vector<Tiering> m_tierings;
+ bool m_tieringsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringFilter.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringFilter.h
new file mode 100644
index 00000000000..971f9569cca
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringFilter.h
@@ -0,0 +1,167 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Tag.h>
+#include <aws/s3/model/IntelligentTieringAndOperator.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The <code>Filter</code> is used to identify objects that the S3
+ * Intelligent-Tiering configuration applies to.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/IntelligentTieringFilter">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API IntelligentTieringFilter
+ {
+ public:
+ IntelligentTieringFilter();
+ IntelligentTieringFilter(const Aws::Utils::Xml::XmlNode& xmlNode);
+ IntelligentTieringFilter& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline IntelligentTieringFilter& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline IntelligentTieringFilter& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline IntelligentTieringFilter& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+
+ inline const Tag& GetTag() const{ return m_tag; }
+
+
+ inline bool TagHasBeenSet() const { return m_tagHasBeenSet; }
+
+
+ inline void SetTag(const Tag& value) { m_tagHasBeenSet = true; m_tag = value; }
+
+
+ inline void SetTag(Tag&& value) { m_tagHasBeenSet = true; m_tag = std::move(value); }
+
+
+ inline IntelligentTieringFilter& WithTag(const Tag& value) { SetTag(value); return *this;}
+
+
+ inline IntelligentTieringFilter& WithTag(Tag&& value) { SetTag(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline const IntelligentTieringAndOperator& GetAnd() const{ return m_and; }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline bool AndHasBeenSet() const { return m_andHasBeenSet; }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline void SetAnd(const IntelligentTieringAndOperator& value) { m_andHasBeenSet = true; m_and = value; }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline void SetAnd(IntelligentTieringAndOperator&& value) { m_andHasBeenSet = true; m_and = std::move(value); }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline IntelligentTieringFilter& WithAnd(const IntelligentTieringAndOperator& value) { SetAnd(value); return *this;}
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline IntelligentTieringFilter& WithAnd(IntelligentTieringAndOperator&& value) { SetAnd(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Tag m_tag;
+ bool m_tagHasBeenSet;
+
+ IntelligentTieringAndOperator m_and;
+ bool m_andHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringStatus.h
new file mode 100644
index 00000000000..f829375dabf
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/IntelligentTieringStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class IntelligentTieringStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace IntelligentTieringStatusMapper
+{
+AWS_S3_API IntelligentTieringStatus GetIntelligentTieringStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForIntelligentTieringStatus(IntelligentTieringStatus value);
+} // namespace IntelligentTieringStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InvalidObjectState.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InvalidObjectState.h
new file mode 100644
index 00000000000..2ce6a101d21
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InvalidObjectState.h
@@ -0,0 +1,90 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/IntelligentTieringAccessTier.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Object is archived and inaccessible until restored.</p><p><h3>See Also:</h3>
+ * <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/InvalidObjectState">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API InvalidObjectState
+ {
+ public:
+ InvalidObjectState();
+ InvalidObjectState(const Aws::Utils::Xml::XmlNode& xmlNode);
+ InvalidObjectState& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+
+ inline void SetStorageClass(const StorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+
+ inline void SetStorageClass(StorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+
+ inline InvalidObjectState& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+
+ inline InvalidObjectState& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+
+ inline const IntelligentTieringAccessTier& GetAccessTier() const{ return m_accessTier; }
+
+
+ inline bool AccessTierHasBeenSet() const { return m_accessTierHasBeenSet; }
+
+
+ inline void SetAccessTier(const IntelligentTieringAccessTier& value) { m_accessTierHasBeenSet = true; m_accessTier = value; }
+
+
+ inline void SetAccessTier(IntelligentTieringAccessTier&& value) { m_accessTierHasBeenSet = true; m_accessTier = std::move(value); }
+
+
+ inline InvalidObjectState& WithAccessTier(const IntelligentTieringAccessTier& value) { SetAccessTier(value); return *this;}
+
+
+ inline InvalidObjectState& WithAccessTier(IntelligentTieringAccessTier&& value) { SetAccessTier(std::move(value)); return *this;}
+
+ private:
+
+ StorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+
+ IntelligentTieringAccessTier m_accessTier;
+ bool m_accessTierHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryConfiguration.h
new file mode 100644
index 00000000000..d48347ff653
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryConfiguration.h
@@ -0,0 +1,340 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/InventoryDestination.h>
+#include <aws/s3/model/InventoryFilter.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/InventoryIncludedObjectVersions.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/InventorySchedule.h>
+#include <aws/s3/model/InventoryOptionalField.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the inventory configuration for an Amazon S3 bucket. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html">GET
+ * Bucket inventory</a> in the <i>Amazon Simple Storage Service API Reference</i>.
+ * </p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/InventoryConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API InventoryConfiguration
+ {
+ public:
+ InventoryConfiguration();
+ InventoryConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ InventoryConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Contains information about where to publish the inventory results.</p>
+ */
+ inline const InventoryDestination& GetDestination() const{ return m_destination; }
+
+ /**
+ * <p>Contains information about where to publish the inventory results.</p>
+ */
+ inline bool DestinationHasBeenSet() const { return m_destinationHasBeenSet; }
+
+ /**
+ * <p>Contains information about where to publish the inventory results.</p>
+ */
+ inline void SetDestination(const InventoryDestination& value) { m_destinationHasBeenSet = true; m_destination = value; }
+
+ /**
+ * <p>Contains information about where to publish the inventory results.</p>
+ */
+ inline void SetDestination(InventoryDestination&& value) { m_destinationHasBeenSet = true; m_destination = std::move(value); }
+
+ /**
+ * <p>Contains information about where to publish the inventory results.</p>
+ */
+ inline InventoryConfiguration& WithDestination(const InventoryDestination& value) { SetDestination(value); return *this;}
+
+ /**
+ * <p>Contains information about where to publish the inventory results.</p>
+ */
+ inline InventoryConfiguration& WithDestination(InventoryDestination&& value) { SetDestination(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether the inventory is enabled or disabled. If set to
+ * <code>True</code>, an inventory list is generated. If set to <code>False</code>,
+ * no inventory list is generated.</p>
+ */
+ inline bool GetIsEnabled() const{ return m_isEnabled; }
+
+ /**
+ * <p>Specifies whether the inventory is enabled or disabled. If set to
+ * <code>True</code>, an inventory list is generated. If set to <code>False</code>,
+ * no inventory list is generated.</p>
+ */
+ inline bool IsEnabledHasBeenSet() const { return m_isEnabledHasBeenSet; }
+
+ /**
+ * <p>Specifies whether the inventory is enabled or disabled. If set to
+ * <code>True</code>, an inventory list is generated. If set to <code>False</code>,
+ * no inventory list is generated.</p>
+ */
+ inline void SetIsEnabled(bool value) { m_isEnabledHasBeenSet = true; m_isEnabled = value; }
+
+ /**
+ * <p>Specifies whether the inventory is enabled or disabled. If set to
+ * <code>True</code>, an inventory list is generated. If set to <code>False</code>,
+ * no inventory list is generated.</p>
+ */
+ inline InventoryConfiguration& WithIsEnabled(bool value) { SetIsEnabled(value); return *this;}
+
+
+ /**
+ * <p>Specifies an inventory filter. The inventory only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline const InventoryFilter& GetFilter() const{ return m_filter; }
+
+ /**
+ * <p>Specifies an inventory filter. The inventory only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
+
+ /**
+ * <p>Specifies an inventory filter. The inventory only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline void SetFilter(const InventoryFilter& value) { m_filterHasBeenSet = true; m_filter = value; }
+
+ /**
+ * <p>Specifies an inventory filter. The inventory only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline void SetFilter(InventoryFilter&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
+
+ /**
+ * <p>Specifies an inventory filter. The inventory only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline InventoryConfiguration& WithFilter(const InventoryFilter& value) { SetFilter(value); return *this;}
+
+ /**
+ * <p>Specifies an inventory filter. The inventory only includes objects that meet
+ * the filter's criteria.</p>
+ */
+ inline InventoryConfiguration& WithFilter(InventoryFilter&& value) { SetFilter(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline InventoryConfiguration& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline InventoryConfiguration& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline InventoryConfiguration& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>Object versions to include in the inventory list. If set to <code>All</code>,
+ * the list includes all the object versions, which adds the version-related fields
+ * <code>VersionId</code>, <code>IsLatest</code>, and <code>DeleteMarker</code> to
+ * the list. If set to <code>Current</code>, the list does not contain these
+ * version-related fields.</p>
+ */
+ inline const InventoryIncludedObjectVersions& GetIncludedObjectVersions() const{ return m_includedObjectVersions; }
+
+ /**
+ * <p>Object versions to include in the inventory list. If set to <code>All</code>,
+ * the list includes all the object versions, which adds the version-related fields
+ * <code>VersionId</code>, <code>IsLatest</code>, and <code>DeleteMarker</code> to
+ * the list. If set to <code>Current</code>, the list does not contain these
+ * version-related fields.</p>
+ */
+ inline bool IncludedObjectVersionsHasBeenSet() const { return m_includedObjectVersionsHasBeenSet; }
+
+ /**
+ * <p>Object versions to include in the inventory list. If set to <code>All</code>,
+ * the list includes all the object versions, which adds the version-related fields
+ * <code>VersionId</code>, <code>IsLatest</code>, and <code>DeleteMarker</code> to
+ * the list. If set to <code>Current</code>, the list does not contain these
+ * version-related fields.</p>
+ */
+ inline void SetIncludedObjectVersions(const InventoryIncludedObjectVersions& value) { m_includedObjectVersionsHasBeenSet = true; m_includedObjectVersions = value; }
+
+ /**
+ * <p>Object versions to include in the inventory list. If set to <code>All</code>,
+ * the list includes all the object versions, which adds the version-related fields
+ * <code>VersionId</code>, <code>IsLatest</code>, and <code>DeleteMarker</code> to
+ * the list. If set to <code>Current</code>, the list does not contain these
+ * version-related fields.</p>
+ */
+ inline void SetIncludedObjectVersions(InventoryIncludedObjectVersions&& value) { m_includedObjectVersionsHasBeenSet = true; m_includedObjectVersions = std::move(value); }
+
+ /**
+ * <p>Object versions to include in the inventory list. If set to <code>All</code>,
+ * the list includes all the object versions, which adds the version-related fields
+ * <code>VersionId</code>, <code>IsLatest</code>, and <code>DeleteMarker</code> to
+ * the list. If set to <code>Current</code>, the list does not contain these
+ * version-related fields.</p>
+ */
+ inline InventoryConfiguration& WithIncludedObjectVersions(const InventoryIncludedObjectVersions& value) { SetIncludedObjectVersions(value); return *this;}
+
+ /**
+ * <p>Object versions to include in the inventory list. If set to <code>All</code>,
+ * the list includes all the object versions, which adds the version-related fields
+ * <code>VersionId</code>, <code>IsLatest</code>, and <code>DeleteMarker</code> to
+ * the list. If set to <code>Current</code>, the list does not contain these
+ * version-related fields.</p>
+ */
+ inline InventoryConfiguration& WithIncludedObjectVersions(InventoryIncludedObjectVersions&& value) { SetIncludedObjectVersions(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Contains the optional fields that are included in the inventory results.</p>
+ */
+ inline const Aws::Vector<InventoryOptionalField>& GetOptionalFields() const{ return m_optionalFields; }
+
+ /**
+ * <p>Contains the optional fields that are included in the inventory results.</p>
+ */
+ inline bool OptionalFieldsHasBeenSet() const { return m_optionalFieldsHasBeenSet; }
+
+ /**
+ * <p>Contains the optional fields that are included in the inventory results.</p>
+ */
+ inline void SetOptionalFields(const Aws::Vector<InventoryOptionalField>& value) { m_optionalFieldsHasBeenSet = true; m_optionalFields = value; }
+
+ /**
+ * <p>Contains the optional fields that are included in the inventory results.</p>
+ */
+ inline void SetOptionalFields(Aws::Vector<InventoryOptionalField>&& value) { m_optionalFieldsHasBeenSet = true; m_optionalFields = std::move(value); }
+
+ /**
+ * <p>Contains the optional fields that are included in the inventory results.</p>
+ */
+ inline InventoryConfiguration& WithOptionalFields(const Aws::Vector<InventoryOptionalField>& value) { SetOptionalFields(value); return *this;}
+
+ /**
+ * <p>Contains the optional fields that are included in the inventory results.</p>
+ */
+ inline InventoryConfiguration& WithOptionalFields(Aws::Vector<InventoryOptionalField>&& value) { SetOptionalFields(std::move(value)); return *this;}
+
+ /**
+ * <p>Contains the optional fields that are included in the inventory results.</p>
+ */
+ inline InventoryConfiguration& AddOptionalFields(const InventoryOptionalField& value) { m_optionalFieldsHasBeenSet = true; m_optionalFields.push_back(value); return *this; }
+
+ /**
+ * <p>Contains the optional fields that are included in the inventory results.</p>
+ */
+ inline InventoryConfiguration& AddOptionalFields(InventoryOptionalField&& value) { m_optionalFieldsHasBeenSet = true; m_optionalFields.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Specifies the schedule for generating inventory results.</p>
+ */
+ inline const InventorySchedule& GetSchedule() const{ return m_schedule; }
+
+ /**
+ * <p>Specifies the schedule for generating inventory results.</p>
+ */
+ inline bool ScheduleHasBeenSet() const { return m_scheduleHasBeenSet; }
+
+ /**
+ * <p>Specifies the schedule for generating inventory results.</p>
+ */
+ inline void SetSchedule(const InventorySchedule& value) { m_scheduleHasBeenSet = true; m_schedule = value; }
+
+ /**
+ * <p>Specifies the schedule for generating inventory results.</p>
+ */
+ inline void SetSchedule(InventorySchedule&& value) { m_scheduleHasBeenSet = true; m_schedule = std::move(value); }
+
+ /**
+ * <p>Specifies the schedule for generating inventory results.</p>
+ */
+ inline InventoryConfiguration& WithSchedule(const InventorySchedule& value) { SetSchedule(value); return *this;}
+
+ /**
+ * <p>Specifies the schedule for generating inventory results.</p>
+ */
+ inline InventoryConfiguration& WithSchedule(InventorySchedule&& value) { SetSchedule(std::move(value)); return *this;}
+
+ private:
+
+ InventoryDestination m_destination;
+ bool m_destinationHasBeenSet;
+
+ bool m_isEnabled;
+ bool m_isEnabledHasBeenSet;
+
+ InventoryFilter m_filter;
+ bool m_filterHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ InventoryIncludedObjectVersions m_includedObjectVersions;
+ bool m_includedObjectVersionsHasBeenSet;
+
+ Aws::Vector<InventoryOptionalField> m_optionalFields;
+ bool m_optionalFieldsHasBeenSet;
+
+ InventorySchedule m_schedule;
+ bool m_scheduleHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryDestination.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryDestination.h
new file mode 100644
index 00000000000..08f259cd74b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryDestination.h
@@ -0,0 +1,85 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/InventoryS3BucketDestination.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the inventory configuration for an Amazon S3 bucket.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/InventoryDestination">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API InventoryDestination
+ {
+ public:
+ InventoryDestination();
+ InventoryDestination(const Aws::Utils::Xml::XmlNode& xmlNode);
+ InventoryDestination& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Contains the bucket name, file format, bucket owner (optional), and prefix
+ * (optional) where inventory results are published.</p>
+ */
+ inline const InventoryS3BucketDestination& GetS3BucketDestination() const{ return m_s3BucketDestination; }
+
+ /**
+ * <p>Contains the bucket name, file format, bucket owner (optional), and prefix
+ * (optional) where inventory results are published.</p>
+ */
+ inline bool S3BucketDestinationHasBeenSet() const { return m_s3BucketDestinationHasBeenSet; }
+
+ /**
+ * <p>Contains the bucket name, file format, bucket owner (optional), and prefix
+ * (optional) where inventory results are published.</p>
+ */
+ inline void SetS3BucketDestination(const InventoryS3BucketDestination& value) { m_s3BucketDestinationHasBeenSet = true; m_s3BucketDestination = value; }
+
+ /**
+ * <p>Contains the bucket name, file format, bucket owner (optional), and prefix
+ * (optional) where inventory results are published.</p>
+ */
+ inline void SetS3BucketDestination(InventoryS3BucketDestination&& value) { m_s3BucketDestinationHasBeenSet = true; m_s3BucketDestination = std::move(value); }
+
+ /**
+ * <p>Contains the bucket name, file format, bucket owner (optional), and prefix
+ * (optional) where inventory results are published.</p>
+ */
+ inline InventoryDestination& WithS3BucketDestination(const InventoryS3BucketDestination& value) { SetS3BucketDestination(value); return *this;}
+
+ /**
+ * <p>Contains the bucket name, file format, bucket owner (optional), and prefix
+ * (optional) where inventory results are published.</p>
+ */
+ inline InventoryDestination& WithS3BucketDestination(InventoryS3BucketDestination&& value) { SetS3BucketDestination(std::move(value)); return *this;}
+
+ private:
+
+ InventoryS3BucketDestination m_s3BucketDestination;
+ bool m_s3BucketDestinationHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryEncryption.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryEncryption.h
new file mode 100644
index 00000000000..6c11c726340
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryEncryption.h
@@ -0,0 +1,114 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/SSES3.h>
+#include <aws/s3/model/SSEKMS.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Contains the type of server-side encryption used to encrypt the inventory
+ * results.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/InventoryEncryption">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API InventoryEncryption
+ {
+ public:
+ InventoryEncryption();
+ InventoryEncryption(const Aws::Utils::Xml::XmlNode& xmlNode);
+ InventoryEncryption& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the use of SSE-S3 to encrypt delivered inventory reports.</p>
+ */
+ inline const SSES3& GetSSES3() const{ return m_sSES3; }
+
+ /**
+ * <p>Specifies the use of SSE-S3 to encrypt delivered inventory reports.</p>
+ */
+ inline bool SSES3HasBeenSet() const { return m_sSES3HasBeenSet; }
+
+ /**
+ * <p>Specifies the use of SSE-S3 to encrypt delivered inventory reports.</p>
+ */
+ inline void SetSSES3(const SSES3& value) { m_sSES3HasBeenSet = true; m_sSES3 = value; }
+
+ /**
+ * <p>Specifies the use of SSE-S3 to encrypt delivered inventory reports.</p>
+ */
+ inline void SetSSES3(SSES3&& value) { m_sSES3HasBeenSet = true; m_sSES3 = std::move(value); }
+
+ /**
+ * <p>Specifies the use of SSE-S3 to encrypt delivered inventory reports.</p>
+ */
+ inline InventoryEncryption& WithSSES3(const SSES3& value) { SetSSES3(value); return *this;}
+
+ /**
+ * <p>Specifies the use of SSE-S3 to encrypt delivered inventory reports.</p>
+ */
+ inline InventoryEncryption& WithSSES3(SSES3&& value) { SetSSES3(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the use of SSE-KMS to encrypt delivered inventory reports.</p>
+ */
+ inline const SSEKMS& GetSSEKMS() const{ return m_sSEKMS; }
+
+ /**
+ * <p>Specifies the use of SSE-KMS to encrypt delivered inventory reports.</p>
+ */
+ inline bool SSEKMSHasBeenSet() const { return m_sSEKMSHasBeenSet; }
+
+ /**
+ * <p>Specifies the use of SSE-KMS to encrypt delivered inventory reports.</p>
+ */
+ inline void SetSSEKMS(const SSEKMS& value) { m_sSEKMSHasBeenSet = true; m_sSEKMS = value; }
+
+ /**
+ * <p>Specifies the use of SSE-KMS to encrypt delivered inventory reports.</p>
+ */
+ inline void SetSSEKMS(SSEKMS&& value) { m_sSEKMSHasBeenSet = true; m_sSEKMS = std::move(value); }
+
+ /**
+ * <p>Specifies the use of SSE-KMS to encrypt delivered inventory reports.</p>
+ */
+ inline InventoryEncryption& WithSSEKMS(const SSEKMS& value) { SetSSEKMS(value); return *this;}
+
+ /**
+ * <p>Specifies the use of SSE-KMS to encrypt delivered inventory reports.</p>
+ */
+ inline InventoryEncryption& WithSSEKMS(SSEKMS&& value) { SetSSEKMS(std::move(value)); return *this;}
+
+ private:
+
+ SSES3 m_sSES3;
+ bool m_sSES3HasBeenSet;
+
+ SSEKMS m_sSEKMS;
+ bool m_sSEKMSHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFilter.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFilter.h
new file mode 100644
index 00000000000..919ccf6dd7f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFilter.h
@@ -0,0 +1,97 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies an inventory filter. The inventory only includes objects that meet
+ * the filter's criteria.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/InventoryFilter">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API InventoryFilter
+ {
+ public:
+ InventoryFilter();
+ InventoryFilter(const Aws::Utils::Xml::XmlNode& xmlNode);
+ InventoryFilter& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The prefix that an object must have to be included in the inventory
+ * results.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>The prefix that an object must have to be included in the inventory
+ * results.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>The prefix that an object must have to be included in the inventory
+ * results.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>The prefix that an object must have to be included in the inventory
+ * results.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>The prefix that an object must have to be included in the inventory
+ * results.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>The prefix that an object must have to be included in the inventory
+ * results.</p>
+ */
+ inline InventoryFilter& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>The prefix that an object must have to be included in the inventory
+ * results.</p>
+ */
+ inline InventoryFilter& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>The prefix that an object must have to be included in the inventory
+ * results.</p>
+ */
+ inline InventoryFilter& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFormat.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFormat.h
new file mode 100644
index 00000000000..12ca4babb7f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFormat.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class InventoryFormat
+ {
+ NOT_SET,
+ CSV,
+ ORC,
+ Parquet
+ };
+
+namespace InventoryFormatMapper
+{
+AWS_S3_API InventoryFormat GetInventoryFormatForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForInventoryFormat(InventoryFormat value);
+} // namespace InventoryFormatMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFrequency.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFrequency.h
new file mode 100644
index 00000000000..7e004c1f41e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryFrequency.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class InventoryFrequency
+ {
+ NOT_SET,
+ Daily,
+ Weekly
+ };
+
+namespace InventoryFrequencyMapper
+{
+AWS_S3_API InventoryFrequency GetInventoryFrequencyForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForInventoryFrequency(InventoryFrequency value);
+} // namespace InventoryFrequencyMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryIncludedObjectVersions.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryIncludedObjectVersions.h
new file mode 100644
index 00000000000..80386e591f8
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryIncludedObjectVersions.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class InventoryIncludedObjectVersions
+ {
+ NOT_SET,
+ All,
+ Current
+ };
+
+namespace InventoryIncludedObjectVersionsMapper
+{
+AWS_S3_API InventoryIncludedObjectVersions GetInventoryIncludedObjectVersionsForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForInventoryIncludedObjectVersions(InventoryIncludedObjectVersions value);
+} // namespace InventoryIncludedObjectVersionsMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryOptionalField.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryOptionalField.h
new file mode 100644
index 00000000000..9959aa0bfbf
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryOptionalField.h
@@ -0,0 +1,40 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class InventoryOptionalField
+ {
+ NOT_SET,
+ Size,
+ LastModifiedDate,
+ StorageClass,
+ ETag,
+ IsMultipartUploaded,
+ ReplicationStatus,
+ EncryptionStatus,
+ ObjectLockRetainUntilDate,
+ ObjectLockMode,
+ ObjectLockLegalHoldStatus,
+ IntelligentTieringAccessTier
+ };
+
+namespace InventoryOptionalFieldMapper
+{
+AWS_S3_API InventoryOptionalField GetInventoryOptionalFieldForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForInventoryOptionalField(InventoryOptionalField value);
+} // namespace InventoryOptionalFieldMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryS3BucketDestination.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryS3BucketDestination.h
new file mode 100644
index 00000000000..d2f4f0027e0
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventoryS3BucketDestination.h
@@ -0,0 +1,285 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/InventoryFormat.h>
+#include <aws/s3/model/InventoryEncryption.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Contains the bucket name, file format, bucket owner (optional), and prefix
+ * (optional) where inventory results are published.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/InventoryS3BucketDestination">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API InventoryS3BucketDestination
+ {
+ public:
+ InventoryS3BucketDestination();
+ InventoryS3BucketDestination(const Aws::Utils::Xml::XmlNode& xmlNode);
+ InventoryS3BucketDestination& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data. </p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline const Aws::String& GetAccountId() const{ return m_accountId; }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data. </p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline bool AccountIdHasBeenSet() const { return m_accountIdHasBeenSet; }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data. </p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline void SetAccountId(const Aws::String& value) { m_accountIdHasBeenSet = true; m_accountId = value; }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data. </p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline void SetAccountId(Aws::String&& value) { m_accountIdHasBeenSet = true; m_accountId = std::move(value); }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data. </p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline void SetAccountId(const char* value) { m_accountIdHasBeenSet = true; m_accountId.assign(value); }
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data. </p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline InventoryS3BucketDestination& WithAccountId(const Aws::String& value) { SetAccountId(value); return *this;}
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data. </p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline InventoryS3BucketDestination& WithAccountId(Aws::String&& value) { SetAccountId(std::move(value)); return *this;}
+
+ /**
+ * <p>The account ID that owns the destination S3 bucket. If no account ID is
+ * provided, the owner is not validated before exporting data. </p> <p>
+ * Although this value is optional, we strongly recommend that you set it to help
+ * prevent problems if the destination bucket ownership changes. </p>
+ */
+ inline InventoryS3BucketDestination& WithAccountId(const char* value) { SetAccountId(value); return *this;}
+
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket where inventory results will be
+ * published.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket where inventory results will be
+ * published.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket where inventory results will be
+ * published.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket where inventory results will be
+ * published.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket where inventory results will be
+ * published.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket where inventory results will be
+ * published.</p>
+ */
+ inline InventoryS3BucketDestination& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket where inventory results will be
+ * published.</p>
+ */
+ inline InventoryS3BucketDestination& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the bucket where inventory results will be
+ * published.</p>
+ */
+ inline InventoryS3BucketDestination& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Specifies the output format of the inventory results.</p>
+ */
+ inline const InventoryFormat& GetFormat() const{ return m_format; }
+
+ /**
+ * <p>Specifies the output format of the inventory results.</p>
+ */
+ inline bool FormatHasBeenSet() const { return m_formatHasBeenSet; }
+
+ /**
+ * <p>Specifies the output format of the inventory results.</p>
+ */
+ inline void SetFormat(const InventoryFormat& value) { m_formatHasBeenSet = true; m_format = value; }
+
+ /**
+ * <p>Specifies the output format of the inventory results.</p>
+ */
+ inline void SetFormat(InventoryFormat&& value) { m_formatHasBeenSet = true; m_format = std::move(value); }
+
+ /**
+ * <p>Specifies the output format of the inventory results.</p>
+ */
+ inline InventoryS3BucketDestination& WithFormat(const InventoryFormat& value) { SetFormat(value); return *this;}
+
+ /**
+ * <p>Specifies the output format of the inventory results.</p>
+ */
+ inline InventoryS3BucketDestination& WithFormat(InventoryFormat&& value) { SetFormat(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The prefix that is prepended to all inventory results.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>The prefix that is prepended to all inventory results.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>The prefix that is prepended to all inventory results.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>The prefix that is prepended to all inventory results.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>The prefix that is prepended to all inventory results.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>The prefix that is prepended to all inventory results.</p>
+ */
+ inline InventoryS3BucketDestination& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>The prefix that is prepended to all inventory results.</p>
+ */
+ inline InventoryS3BucketDestination& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>The prefix that is prepended to all inventory results.</p>
+ */
+ inline InventoryS3BucketDestination& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>Contains the type of server-side encryption used to encrypt the inventory
+ * results.</p>
+ */
+ inline const InventoryEncryption& GetEncryption() const{ return m_encryption; }
+
+ /**
+ * <p>Contains the type of server-side encryption used to encrypt the inventory
+ * results.</p>
+ */
+ inline bool EncryptionHasBeenSet() const { return m_encryptionHasBeenSet; }
+
+ /**
+ * <p>Contains the type of server-side encryption used to encrypt the inventory
+ * results.</p>
+ */
+ inline void SetEncryption(const InventoryEncryption& value) { m_encryptionHasBeenSet = true; m_encryption = value; }
+
+ /**
+ * <p>Contains the type of server-side encryption used to encrypt the inventory
+ * results.</p>
+ */
+ inline void SetEncryption(InventoryEncryption&& value) { m_encryptionHasBeenSet = true; m_encryption = std::move(value); }
+
+ /**
+ * <p>Contains the type of server-side encryption used to encrypt the inventory
+ * results.</p>
+ */
+ inline InventoryS3BucketDestination& WithEncryption(const InventoryEncryption& value) { SetEncryption(value); return *this;}
+
+ /**
+ * <p>Contains the type of server-side encryption used to encrypt the inventory
+ * results.</p>
+ */
+ inline InventoryS3BucketDestination& WithEncryption(InventoryEncryption&& value) { SetEncryption(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_accountId;
+ bool m_accountIdHasBeenSet;
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ InventoryFormat m_format;
+ bool m_formatHasBeenSet;
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ InventoryEncryption m_encryption;
+ bool m_encryptionHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventorySchedule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventorySchedule.h
new file mode 100644
index 00000000000..7a6933d2dee
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/InventorySchedule.h
@@ -0,0 +1,79 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/InventoryFrequency.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the schedule for generating inventory results.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/InventorySchedule">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API InventorySchedule
+ {
+ public:
+ InventorySchedule();
+ InventorySchedule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ InventorySchedule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies how frequently inventory results are produced.</p>
+ */
+ inline const InventoryFrequency& GetFrequency() const{ return m_frequency; }
+
+ /**
+ * <p>Specifies how frequently inventory results are produced.</p>
+ */
+ inline bool FrequencyHasBeenSet() const { return m_frequencyHasBeenSet; }
+
+ /**
+ * <p>Specifies how frequently inventory results are produced.</p>
+ */
+ inline void SetFrequency(const InventoryFrequency& value) { m_frequencyHasBeenSet = true; m_frequency = value; }
+
+ /**
+ * <p>Specifies how frequently inventory results are produced.</p>
+ */
+ inline void SetFrequency(InventoryFrequency&& value) { m_frequencyHasBeenSet = true; m_frequency = std::move(value); }
+
+ /**
+ * <p>Specifies how frequently inventory results are produced.</p>
+ */
+ inline InventorySchedule& WithFrequency(const InventoryFrequency& value) { SetFrequency(value); return *this;}
+
+ /**
+ * <p>Specifies how frequently inventory results are produced.</p>
+ */
+ inline InventorySchedule& WithFrequency(InventoryFrequency&& value) { SetFrequency(std::move(value)); return *this;}
+
+ private:
+
+ InventoryFrequency m_frequency;
+ bool m_frequencyHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONInput.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONInput.h
new file mode 100644
index 00000000000..be157654bd9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONInput.h
@@ -0,0 +1,79 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/JSONType.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies JSON as object's input serialization format.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/JSONInput">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API JSONInput
+ {
+ public:
+ JSONInput();
+ JSONInput(const Aws::Utils::Xml::XmlNode& xmlNode);
+ JSONInput& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The type of JSON. Valid values: Document, Lines.</p>
+ */
+ inline const JSONType& GetType() const{ return m_type; }
+
+ /**
+ * <p>The type of JSON. Valid values: Document, Lines.</p>
+ */
+ inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; }
+
+ /**
+ * <p>The type of JSON. Valid values: Document, Lines.</p>
+ */
+ inline void SetType(const JSONType& value) { m_typeHasBeenSet = true; m_type = value; }
+
+ /**
+ * <p>The type of JSON. Valid values: Document, Lines.</p>
+ */
+ inline void SetType(JSONType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); }
+
+ /**
+ * <p>The type of JSON. Valid values: Document, Lines.</p>
+ */
+ inline JSONInput& WithType(const JSONType& value) { SetType(value); return *this;}
+
+ /**
+ * <p>The type of JSON. Valid values: Document, Lines.</p>
+ */
+ inline JSONInput& WithType(JSONType&& value) { SetType(std::move(value)); return *this;}
+
+ private:
+
+ JSONType m_type;
+ bool m_typeHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONOutput.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONOutput.h
new file mode 100644
index 00000000000..8a4865a7c08
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONOutput.h
@@ -0,0 +1,97 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies JSON as request's output serialization format.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/JSONOutput">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API JSONOutput
+ {
+ public:
+ JSONOutput();
+ JSONOutput(const Aws::Utils::Xml::XmlNode& xmlNode);
+ JSONOutput& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The value used to separate individual records in the output. If no value is
+ * specified, Amazon S3 uses a newline character ('\n').</p>
+ */
+ inline const Aws::String& GetRecordDelimiter() const{ return m_recordDelimiter; }
+
+ /**
+ * <p>The value used to separate individual records in the output. If no value is
+ * specified, Amazon S3 uses a newline character ('\n').</p>
+ */
+ inline bool RecordDelimiterHasBeenSet() const { return m_recordDelimiterHasBeenSet; }
+
+ /**
+ * <p>The value used to separate individual records in the output. If no value is
+ * specified, Amazon S3 uses a newline character ('\n').</p>
+ */
+ inline void SetRecordDelimiter(const Aws::String& value) { m_recordDelimiterHasBeenSet = true; m_recordDelimiter = value; }
+
+ /**
+ * <p>The value used to separate individual records in the output. If no value is
+ * specified, Amazon S3 uses a newline character ('\n').</p>
+ */
+ inline void SetRecordDelimiter(Aws::String&& value) { m_recordDelimiterHasBeenSet = true; m_recordDelimiter = std::move(value); }
+
+ /**
+ * <p>The value used to separate individual records in the output. If no value is
+ * specified, Amazon S3 uses a newline character ('\n').</p>
+ */
+ inline void SetRecordDelimiter(const char* value) { m_recordDelimiterHasBeenSet = true; m_recordDelimiter.assign(value); }
+
+ /**
+ * <p>The value used to separate individual records in the output. If no value is
+ * specified, Amazon S3 uses a newline character ('\n').</p>
+ */
+ inline JSONOutput& WithRecordDelimiter(const Aws::String& value) { SetRecordDelimiter(value); return *this;}
+
+ /**
+ * <p>The value used to separate individual records in the output. If no value is
+ * specified, Amazon S3 uses a newline character ('\n').</p>
+ */
+ inline JSONOutput& WithRecordDelimiter(Aws::String&& value) { SetRecordDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>The value used to separate individual records in the output. If no value is
+ * specified, Amazon S3 uses a newline character ('\n').</p>
+ */
+ inline JSONOutput& WithRecordDelimiter(const char* value) { SetRecordDelimiter(value); return *this;}
+
+ private:
+
+ Aws::String m_recordDelimiter;
+ bool m_recordDelimiterHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONType.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONType.h
new file mode 100644
index 00000000000..cf3268228da
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/JSONType.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class JSONType
+ {
+ NOT_SET,
+ DOCUMENT,
+ LINES
+ };
+
+namespace JSONTypeMapper
+{
+AWS_S3_API JSONType GetJSONTypeForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForJSONType(JSONType value);
+} // namespace JSONTypeMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LambdaFunctionConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LambdaFunctionConfiguration.h
new file mode 100644
index 00000000000..df9aaa6bdf3
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LambdaFunctionConfiguration.h
@@ -0,0 +1,218 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/NotificationConfigurationFilter.h>
+#include <aws/s3/model/Event.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for specifying the configuration for AWS Lambda
+ * notifications.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/LambdaFunctionConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API LambdaFunctionConfiguration
+ {
+ public:
+ LambdaFunctionConfiguration();
+ LambdaFunctionConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ LambdaFunctionConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const Aws::String& GetId() const{ return m_id; }
+
+
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+
+ inline LambdaFunctionConfiguration& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+
+ inline LambdaFunctionConfiguration& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+
+ inline LambdaFunctionConfiguration& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
+ * invokes when the specified event type occurs.</p>
+ */
+ inline const Aws::String& GetLambdaFunctionArn() const{ return m_lambdaFunctionArn; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
+ * invokes when the specified event type occurs.</p>
+ */
+ inline bool LambdaFunctionArnHasBeenSet() const { return m_lambdaFunctionArnHasBeenSet; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
+ * invokes when the specified event type occurs.</p>
+ */
+ inline void SetLambdaFunctionArn(const Aws::String& value) { m_lambdaFunctionArnHasBeenSet = true; m_lambdaFunctionArn = value; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
+ * invokes when the specified event type occurs.</p>
+ */
+ inline void SetLambdaFunctionArn(Aws::String&& value) { m_lambdaFunctionArnHasBeenSet = true; m_lambdaFunctionArn = std::move(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
+ * invokes when the specified event type occurs.</p>
+ */
+ inline void SetLambdaFunctionArn(const char* value) { m_lambdaFunctionArnHasBeenSet = true; m_lambdaFunctionArn.assign(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
+ * invokes when the specified event type occurs.</p>
+ */
+ inline LambdaFunctionConfiguration& WithLambdaFunctionArn(const Aws::String& value) { SetLambdaFunctionArn(value); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
+ * invokes when the specified event type occurs.</p>
+ */
+ inline LambdaFunctionConfiguration& WithLambdaFunctionArn(Aws::String&& value) { SetLambdaFunctionArn(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
+ * invokes when the specified event type occurs.</p>
+ */
+ inline LambdaFunctionConfiguration& WithLambdaFunctionArn(const char* value) { SetLambdaFunctionArn(value); return *this;}
+
+
+ /**
+ * <p>The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline const Aws::Vector<Event>& GetEvents() const{ return m_events; }
+
+ /**
+ * <p>The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline bool EventsHasBeenSet() const { return m_eventsHasBeenSet; }
+
+ /**
+ * <p>The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetEvents(const Aws::Vector<Event>& value) { m_eventsHasBeenSet = true; m_events = value; }
+
+ /**
+ * <p>The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetEvents(Aws::Vector<Event>&& value) { m_eventsHasBeenSet = true; m_events = std::move(value); }
+
+ /**
+ * <p>The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline LambdaFunctionConfiguration& WithEvents(const Aws::Vector<Event>& value) { SetEvents(value); return *this;}
+
+ /**
+ * <p>The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline LambdaFunctionConfiguration& WithEvents(Aws::Vector<Event>&& value) { SetEvents(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline LambdaFunctionConfiguration& AddEvents(const Event& value) { m_eventsHasBeenSet = true; m_events.push_back(value); return *this; }
+
+ /**
+ * <p>The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline LambdaFunctionConfiguration& AddEvents(Event&& value) { m_eventsHasBeenSet = true; m_events.push_back(std::move(value)); return *this; }
+
+
+
+ inline const NotificationConfigurationFilter& GetFilter() const{ return m_filter; }
+
+
+ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
+
+
+ inline void SetFilter(const NotificationConfigurationFilter& value) { m_filterHasBeenSet = true; m_filter = value; }
+
+
+ inline void SetFilter(NotificationConfigurationFilter&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
+
+
+ inline LambdaFunctionConfiguration& WithFilter(const NotificationConfigurationFilter& value) { SetFilter(value); return *this;}
+
+
+ inline LambdaFunctionConfiguration& WithFilter(NotificationConfigurationFilter&& value) { SetFilter(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::String m_lambdaFunctionArn;
+ bool m_lambdaFunctionArnHasBeenSet;
+
+ Aws::Vector<Event> m_events;
+ bool m_eventsHasBeenSet;
+
+ NotificationConfigurationFilter m_filter;
+ bool m_filterHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleConfiguration.h
new file mode 100644
index 00000000000..3da3b89dd83
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleConfiguration.h
@@ -0,0 +1,90 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Rule.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for lifecycle rules. You can add as many as 1000
+ * rules.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/LifecycleConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API LifecycleConfiguration
+ {
+ public:
+ LifecycleConfiguration();
+ LifecycleConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ LifecycleConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies lifecycle configuration rules for an Amazon S3 bucket. </p>
+ */
+ inline const Aws::Vector<Rule>& GetRules() const{ return m_rules; }
+
+ /**
+ * <p>Specifies lifecycle configuration rules for an Amazon S3 bucket. </p>
+ */
+ inline bool RulesHasBeenSet() const { return m_rulesHasBeenSet; }
+
+ /**
+ * <p>Specifies lifecycle configuration rules for an Amazon S3 bucket. </p>
+ */
+ inline void SetRules(const Aws::Vector<Rule>& value) { m_rulesHasBeenSet = true; m_rules = value; }
+
+ /**
+ * <p>Specifies lifecycle configuration rules for an Amazon S3 bucket. </p>
+ */
+ inline void SetRules(Aws::Vector<Rule>&& value) { m_rulesHasBeenSet = true; m_rules = std::move(value); }
+
+ /**
+ * <p>Specifies lifecycle configuration rules for an Amazon S3 bucket. </p>
+ */
+ inline LifecycleConfiguration& WithRules(const Aws::Vector<Rule>& value) { SetRules(value); return *this;}
+
+ /**
+ * <p>Specifies lifecycle configuration rules for an Amazon S3 bucket. </p>
+ */
+ inline LifecycleConfiguration& WithRules(Aws::Vector<Rule>&& value) { SetRules(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies lifecycle configuration rules for an Amazon S3 bucket. </p>
+ */
+ inline LifecycleConfiguration& AddRules(const Rule& value) { m_rulesHasBeenSet = true; m_rules.push_back(value); return *this; }
+
+ /**
+ * <p>Specifies lifecycle configuration rules for an Amazon S3 bucket. </p>
+ */
+ inline LifecycleConfiguration& AddRules(Rule&& value) { m_rulesHasBeenSet = true; m_rules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<Rule> m_rules;
+ bool m_rulesHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleExpiration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleExpiration.h
new file mode 100644
index 00000000000..cb9628df583
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleExpiration.h
@@ -0,0 +1,149 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/DateTime.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for the expiration for the lifecycle of the object.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/LifecycleExpiration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API LifecycleExpiration
+ {
+ public:
+ LifecycleExpiration();
+ LifecycleExpiration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ LifecycleExpiration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Indicates at what date the object is to be moved or deleted. Should be in GMT
+ * ISO 8601 Format.</p>
+ */
+ inline const Aws::Utils::DateTime& GetDate() const{ return m_date; }
+
+ /**
+ * <p>Indicates at what date the object is to be moved or deleted. Should be in GMT
+ * ISO 8601 Format.</p>
+ */
+ inline bool DateHasBeenSet() const { return m_dateHasBeenSet; }
+
+ /**
+ * <p>Indicates at what date the object is to be moved or deleted. Should be in GMT
+ * ISO 8601 Format.</p>
+ */
+ inline void SetDate(const Aws::Utils::DateTime& value) { m_dateHasBeenSet = true; m_date = value; }
+
+ /**
+ * <p>Indicates at what date the object is to be moved or deleted. Should be in GMT
+ * ISO 8601 Format.</p>
+ */
+ inline void SetDate(Aws::Utils::DateTime&& value) { m_dateHasBeenSet = true; m_date = std::move(value); }
+
+ /**
+ * <p>Indicates at what date the object is to be moved or deleted. Should be in GMT
+ * ISO 8601 Format.</p>
+ */
+ inline LifecycleExpiration& WithDate(const Aws::Utils::DateTime& value) { SetDate(value); return *this;}
+
+ /**
+ * <p>Indicates at what date the object is to be moved or deleted. Should be in GMT
+ * ISO 8601 Format.</p>
+ */
+ inline LifecycleExpiration& WithDate(Aws::Utils::DateTime&& value) { SetDate(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Indicates the lifetime, in days, of the objects that are subject to the rule.
+ * The value must be a non-zero positive integer.</p>
+ */
+ inline int GetDays() const{ return m_days; }
+
+ /**
+ * <p>Indicates the lifetime, in days, of the objects that are subject to the rule.
+ * The value must be a non-zero positive integer.</p>
+ */
+ inline bool DaysHasBeenSet() const { return m_daysHasBeenSet; }
+
+ /**
+ * <p>Indicates the lifetime, in days, of the objects that are subject to the rule.
+ * The value must be a non-zero positive integer.</p>
+ */
+ inline void SetDays(int value) { m_daysHasBeenSet = true; m_days = value; }
+
+ /**
+ * <p>Indicates the lifetime, in days, of the objects that are subject to the rule.
+ * The value must be a non-zero positive integer.</p>
+ */
+ inline LifecycleExpiration& WithDays(int value) { SetDays(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether Amazon S3 will remove a delete marker with no noncurrent
+ * versions. If set to true, the delete marker will be expired; if set to false the
+ * policy takes no action. This cannot be specified with Days or Date in a
+ * Lifecycle Expiration Policy.</p>
+ */
+ inline bool GetExpiredObjectDeleteMarker() const{ return m_expiredObjectDeleteMarker; }
+
+ /**
+ * <p>Indicates whether Amazon S3 will remove a delete marker with no noncurrent
+ * versions. If set to true, the delete marker will be expired; if set to false the
+ * policy takes no action. This cannot be specified with Days or Date in a
+ * Lifecycle Expiration Policy.</p>
+ */
+ inline bool ExpiredObjectDeleteMarkerHasBeenSet() const { return m_expiredObjectDeleteMarkerHasBeenSet; }
+
+ /**
+ * <p>Indicates whether Amazon S3 will remove a delete marker with no noncurrent
+ * versions. If set to true, the delete marker will be expired; if set to false the
+ * policy takes no action. This cannot be specified with Days or Date in a
+ * Lifecycle Expiration Policy.</p>
+ */
+ inline void SetExpiredObjectDeleteMarker(bool value) { m_expiredObjectDeleteMarkerHasBeenSet = true; m_expiredObjectDeleteMarker = value; }
+
+ /**
+ * <p>Indicates whether Amazon S3 will remove a delete marker with no noncurrent
+ * versions. If set to true, the delete marker will be expired; if set to false the
+ * policy takes no action. This cannot be specified with Days or Date in a
+ * Lifecycle Expiration Policy.</p>
+ */
+ inline LifecycleExpiration& WithExpiredObjectDeleteMarker(bool value) { SetExpiredObjectDeleteMarker(value); return *this;}
+
+ private:
+
+ Aws::Utils::DateTime m_date;
+ bool m_dateHasBeenSet;
+
+ int m_days;
+ bool m_daysHasBeenSet;
+
+ bool m_expiredObjectDeleteMarker;
+ bool m_expiredObjectDeleteMarkerHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRule.h
new file mode 100644
index 00000000000..573af31c60f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRule.h
@@ -0,0 +1,379 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/LifecycleExpiration.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/LifecycleRuleFilter.h>
+#include <aws/s3/model/ExpirationStatus.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/NoncurrentVersionExpiration.h>
+#include <aws/s3/model/AbortIncompleteMultipartUpload.h>
+#include <aws/s3/model/Transition.h>
+#include <aws/s3/model/NoncurrentVersionTransition.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A lifecycle rule for individual objects in an Amazon S3 bucket.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/LifecycleRule">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API LifecycleRule
+ {
+ public:
+ LifecycleRule();
+ LifecycleRule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ LifecycleRule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object in the form of date,
+ * days and, whether the object has a delete marker.</p>
+ */
+ inline const LifecycleExpiration& GetExpiration() const{ return m_expiration; }
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object in the form of date,
+ * days and, whether the object has a delete marker.</p>
+ */
+ inline bool ExpirationHasBeenSet() const { return m_expirationHasBeenSet; }
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object in the form of date,
+ * days and, whether the object has a delete marker.</p>
+ */
+ inline void SetExpiration(const LifecycleExpiration& value) { m_expirationHasBeenSet = true; m_expiration = value; }
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object in the form of date,
+ * days and, whether the object has a delete marker.</p>
+ */
+ inline void SetExpiration(LifecycleExpiration&& value) { m_expirationHasBeenSet = true; m_expiration = std::move(value); }
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object in the form of date,
+ * days and, whether the object has a delete marker.</p>
+ */
+ inline LifecycleRule& WithExpiration(const LifecycleExpiration& value) { SetExpiration(value); return *this;}
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object in the form of date,
+ * days and, whether the object has a delete marker.</p>
+ */
+ inline LifecycleRule& WithExpiration(LifecycleExpiration&& value) { SetExpiration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Unique identifier for the rule. The value cannot be longer than 255
+ * characters.</p>
+ */
+ inline const Aws::String& GetID() const{ return m_iD; }
+
+ /**
+ * <p>Unique identifier for the rule. The value cannot be longer than 255
+ * characters.</p>
+ */
+ inline bool IDHasBeenSet() const { return m_iDHasBeenSet; }
+
+ /**
+ * <p>Unique identifier for the rule. The value cannot be longer than 255
+ * characters.</p>
+ */
+ inline void SetID(const Aws::String& value) { m_iDHasBeenSet = true; m_iD = value; }
+
+ /**
+ * <p>Unique identifier for the rule. The value cannot be longer than 255
+ * characters.</p>
+ */
+ inline void SetID(Aws::String&& value) { m_iDHasBeenSet = true; m_iD = std::move(value); }
+
+ /**
+ * <p>Unique identifier for the rule. The value cannot be longer than 255
+ * characters.</p>
+ */
+ inline void SetID(const char* value) { m_iDHasBeenSet = true; m_iD.assign(value); }
+
+ /**
+ * <p>Unique identifier for the rule. The value cannot be longer than 255
+ * characters.</p>
+ */
+ inline LifecycleRule& WithID(const Aws::String& value) { SetID(value); return *this;}
+
+ /**
+ * <p>Unique identifier for the rule. The value cannot be longer than 255
+ * characters.</p>
+ */
+ inline LifecycleRule& WithID(Aws::String&& value) { SetID(std::move(value)); return *this;}
+
+ /**
+ * <p>Unique identifier for the rule. The value cannot be longer than 255
+ * characters.</p>
+ */
+ inline LifecycleRule& WithID(const char* value) { SetID(value); return *this;}
+
+
+
+ inline const LifecycleRuleFilter& GetFilter() const{ return m_filter; }
+
+
+ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
+
+
+ inline void SetFilter(const LifecycleRuleFilter& value) { m_filterHasBeenSet = true; m_filter = value; }
+
+
+ inline void SetFilter(LifecycleRuleFilter&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
+
+
+ inline LifecycleRule& WithFilter(const LifecycleRuleFilter& value) { SetFilter(value); return *this;}
+
+
+ inline LifecycleRule& WithFilter(LifecycleRuleFilter&& value) { SetFilter(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is
+ * not currently being applied.</p>
+ */
+ inline const ExpirationStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is
+ * not currently being applied.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is
+ * not currently being applied.</p>
+ */
+ inline void SetStatus(const ExpirationStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is
+ * not currently being applied.</p>
+ */
+ inline void SetStatus(ExpirationStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is
+ * not currently being applied.</p>
+ */
+ inline LifecycleRule& WithStatus(const ExpirationStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is
+ * not currently being applied.</p>
+ */
+ inline LifecycleRule& WithStatus(ExpirationStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies when an Amazon S3 object transitions to a specified storage
+ * class.</p>
+ */
+ inline const Aws::Vector<Transition>& GetTransitions() const{ return m_transitions; }
+
+ /**
+ * <p>Specifies when an Amazon S3 object transitions to a specified storage
+ * class.</p>
+ */
+ inline bool TransitionsHasBeenSet() const { return m_transitionsHasBeenSet; }
+
+ /**
+ * <p>Specifies when an Amazon S3 object transitions to a specified storage
+ * class.</p>
+ */
+ inline void SetTransitions(const Aws::Vector<Transition>& value) { m_transitionsHasBeenSet = true; m_transitions = value; }
+
+ /**
+ * <p>Specifies when an Amazon S3 object transitions to a specified storage
+ * class.</p>
+ */
+ inline void SetTransitions(Aws::Vector<Transition>&& value) { m_transitionsHasBeenSet = true; m_transitions = std::move(value); }
+
+ /**
+ * <p>Specifies when an Amazon S3 object transitions to a specified storage
+ * class.</p>
+ */
+ inline LifecycleRule& WithTransitions(const Aws::Vector<Transition>& value) { SetTransitions(value); return *this;}
+
+ /**
+ * <p>Specifies when an Amazon S3 object transitions to a specified storage
+ * class.</p>
+ */
+ inline LifecycleRule& WithTransitions(Aws::Vector<Transition>&& value) { SetTransitions(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies when an Amazon S3 object transitions to a specified storage
+ * class.</p>
+ */
+ inline LifecycleRule& AddTransitions(const Transition& value) { m_transitionsHasBeenSet = true; m_transitions.push_back(value); return *this; }
+
+ /**
+ * <p>Specifies when an Amazon S3 object transitions to a specified storage
+ * class.</p>
+ */
+ inline LifecycleRule& AddTransitions(Transition&& value) { m_transitionsHasBeenSet = true; m_transitions.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p> Specifies the transition rule for the lifecycle rule that describes when
+ * noncurrent objects transition to a specific storage class. If your bucket is
+ * versioning-enabled (or versioning is suspended), you can set this action to
+ * request that Amazon S3 transition noncurrent object versions to a specific
+ * storage class at a set period in the object's lifetime. </p>
+ */
+ inline const Aws::Vector<NoncurrentVersionTransition>& GetNoncurrentVersionTransitions() const{ return m_noncurrentVersionTransitions; }
+
+ /**
+ * <p> Specifies the transition rule for the lifecycle rule that describes when
+ * noncurrent objects transition to a specific storage class. If your bucket is
+ * versioning-enabled (or versioning is suspended), you can set this action to
+ * request that Amazon S3 transition noncurrent object versions to a specific
+ * storage class at a set period in the object's lifetime. </p>
+ */
+ inline bool NoncurrentVersionTransitionsHasBeenSet() const { return m_noncurrentVersionTransitionsHasBeenSet; }
+
+ /**
+ * <p> Specifies the transition rule for the lifecycle rule that describes when
+ * noncurrent objects transition to a specific storage class. If your bucket is
+ * versioning-enabled (or versioning is suspended), you can set this action to
+ * request that Amazon S3 transition noncurrent object versions to a specific
+ * storage class at a set period in the object's lifetime. </p>
+ */
+ inline void SetNoncurrentVersionTransitions(const Aws::Vector<NoncurrentVersionTransition>& value) { m_noncurrentVersionTransitionsHasBeenSet = true; m_noncurrentVersionTransitions = value; }
+
+ /**
+ * <p> Specifies the transition rule for the lifecycle rule that describes when
+ * noncurrent objects transition to a specific storage class. If your bucket is
+ * versioning-enabled (or versioning is suspended), you can set this action to
+ * request that Amazon S3 transition noncurrent object versions to a specific
+ * storage class at a set period in the object's lifetime. </p>
+ */
+ inline void SetNoncurrentVersionTransitions(Aws::Vector<NoncurrentVersionTransition>&& value) { m_noncurrentVersionTransitionsHasBeenSet = true; m_noncurrentVersionTransitions = std::move(value); }
+
+ /**
+ * <p> Specifies the transition rule for the lifecycle rule that describes when
+ * noncurrent objects transition to a specific storage class. If your bucket is
+ * versioning-enabled (or versioning is suspended), you can set this action to
+ * request that Amazon S3 transition noncurrent object versions to a specific
+ * storage class at a set period in the object's lifetime. </p>
+ */
+ inline LifecycleRule& WithNoncurrentVersionTransitions(const Aws::Vector<NoncurrentVersionTransition>& value) { SetNoncurrentVersionTransitions(value); return *this;}
+
+ /**
+ * <p> Specifies the transition rule for the lifecycle rule that describes when
+ * noncurrent objects transition to a specific storage class. If your bucket is
+ * versioning-enabled (or versioning is suspended), you can set this action to
+ * request that Amazon S3 transition noncurrent object versions to a specific
+ * storage class at a set period in the object's lifetime. </p>
+ */
+ inline LifecycleRule& WithNoncurrentVersionTransitions(Aws::Vector<NoncurrentVersionTransition>&& value) { SetNoncurrentVersionTransitions(std::move(value)); return *this;}
+
+ /**
+ * <p> Specifies the transition rule for the lifecycle rule that describes when
+ * noncurrent objects transition to a specific storage class. If your bucket is
+ * versioning-enabled (or versioning is suspended), you can set this action to
+ * request that Amazon S3 transition noncurrent object versions to a specific
+ * storage class at a set period in the object's lifetime. </p>
+ */
+ inline LifecycleRule& AddNoncurrentVersionTransitions(const NoncurrentVersionTransition& value) { m_noncurrentVersionTransitionsHasBeenSet = true; m_noncurrentVersionTransitions.push_back(value); return *this; }
+
+ /**
+ * <p> Specifies the transition rule for the lifecycle rule that describes when
+ * noncurrent objects transition to a specific storage class. If your bucket is
+ * versioning-enabled (or versioning is suspended), you can set this action to
+ * request that Amazon S3 transition noncurrent object versions to a specific
+ * storage class at a set period in the object's lifetime. </p>
+ */
+ inline LifecycleRule& AddNoncurrentVersionTransitions(NoncurrentVersionTransition&& value) { m_noncurrentVersionTransitionsHasBeenSet = true; m_noncurrentVersionTransitions.push_back(std::move(value)); return *this; }
+
+
+
+ inline const NoncurrentVersionExpiration& GetNoncurrentVersionExpiration() const{ return m_noncurrentVersionExpiration; }
+
+
+ inline bool NoncurrentVersionExpirationHasBeenSet() const { return m_noncurrentVersionExpirationHasBeenSet; }
+
+
+ inline void SetNoncurrentVersionExpiration(const NoncurrentVersionExpiration& value) { m_noncurrentVersionExpirationHasBeenSet = true; m_noncurrentVersionExpiration = value; }
+
+
+ inline void SetNoncurrentVersionExpiration(NoncurrentVersionExpiration&& value) { m_noncurrentVersionExpirationHasBeenSet = true; m_noncurrentVersionExpiration = std::move(value); }
+
+
+ inline LifecycleRule& WithNoncurrentVersionExpiration(const NoncurrentVersionExpiration& value) { SetNoncurrentVersionExpiration(value); return *this;}
+
+
+ inline LifecycleRule& WithNoncurrentVersionExpiration(NoncurrentVersionExpiration&& value) { SetNoncurrentVersionExpiration(std::move(value)); return *this;}
+
+
+
+ inline const AbortIncompleteMultipartUpload& GetAbortIncompleteMultipartUpload() const{ return m_abortIncompleteMultipartUpload; }
+
+
+ inline bool AbortIncompleteMultipartUploadHasBeenSet() const { return m_abortIncompleteMultipartUploadHasBeenSet; }
+
+
+ inline void SetAbortIncompleteMultipartUpload(const AbortIncompleteMultipartUpload& value) { m_abortIncompleteMultipartUploadHasBeenSet = true; m_abortIncompleteMultipartUpload = value; }
+
+
+ inline void SetAbortIncompleteMultipartUpload(AbortIncompleteMultipartUpload&& value) { m_abortIncompleteMultipartUploadHasBeenSet = true; m_abortIncompleteMultipartUpload = std::move(value); }
+
+
+ inline LifecycleRule& WithAbortIncompleteMultipartUpload(const AbortIncompleteMultipartUpload& value) { SetAbortIncompleteMultipartUpload(value); return *this;}
+
+
+ inline LifecycleRule& WithAbortIncompleteMultipartUpload(AbortIncompleteMultipartUpload&& value) { SetAbortIncompleteMultipartUpload(std::move(value)); return *this;}
+
+ private:
+
+ LifecycleExpiration m_expiration;
+ bool m_expirationHasBeenSet;
+
+ Aws::String m_iD;
+ bool m_iDHasBeenSet;
+
+ LifecycleRuleFilter m_filter;
+ bool m_filterHasBeenSet;
+
+ ExpirationStatus m_status;
+ bool m_statusHasBeenSet;
+
+ Aws::Vector<Transition> m_transitions;
+ bool m_transitionsHasBeenSet;
+
+ Aws::Vector<NoncurrentVersionTransition> m_noncurrentVersionTransitions;
+ bool m_noncurrentVersionTransitionsHasBeenSet;
+
+ NoncurrentVersionExpiration m_noncurrentVersionExpiration;
+ bool m_noncurrentVersionExpirationHasBeenSet;
+
+ AbortIncompleteMultipartUpload m_abortIncompleteMultipartUpload;
+ bool m_abortIncompleteMultipartUploadHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRuleAndOperator.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRuleAndOperator.h
new file mode 100644
index 00000000000..36ccbdd5f3c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRuleAndOperator.h
@@ -0,0 +1,144 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tag.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>This is used in a Lifecycle Rule Filter to apply a logical AND to two or more
+ * predicates. The Lifecycle Rule will apply to any object matching all of the
+ * predicates configured inside the And operator.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/LifecycleRuleAndOperator">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API LifecycleRuleAndOperator
+ {
+ public:
+ LifecycleRuleAndOperator();
+ LifecycleRuleAndOperator(const Aws::Utils::Xml::XmlNode& xmlNode);
+ LifecycleRuleAndOperator& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline LifecycleRuleAndOperator& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline LifecycleRuleAndOperator& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline LifecycleRuleAndOperator& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline LifecycleRuleAndOperator& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline LifecycleRuleAndOperator& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline LifecycleRuleAndOperator& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
+
+ /**
+ * <p>All of these tags must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline LifecycleRuleAndOperator& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Aws::Vector<Tag> m_tags;
+ bool m_tagsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRuleFilter.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRuleFilter.h
new file mode 100644
index 00000000000..1903c7af67f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LifecycleRuleFilter.h
@@ -0,0 +1,154 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Tag.h>
+#include <aws/s3/model/LifecycleRuleAndOperator.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The <code>Filter</code> is used to identify objects that a Lifecycle Rule
+ * applies to. A <code>Filter</code> must have exactly one of <code>Prefix</code>,
+ * <code>Tag</code>, or <code>And</code> specified.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/LifecycleRuleFilter">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API LifecycleRuleFilter
+ {
+ public:
+ LifecycleRuleFilter();
+ LifecycleRuleFilter(const Aws::Utils::Xml::XmlNode& xmlNode);
+ LifecycleRuleFilter& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline LifecycleRuleFilter& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline LifecycleRuleFilter& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Prefix identifying one or more objects to which the rule applies.</p>
+ */
+ inline LifecycleRuleFilter& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>This tag must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline const Tag& GetTag() const{ return m_tag; }
+
+ /**
+ * <p>This tag must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline bool TagHasBeenSet() const { return m_tagHasBeenSet; }
+
+ /**
+ * <p>This tag must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline void SetTag(const Tag& value) { m_tagHasBeenSet = true; m_tag = value; }
+
+ /**
+ * <p>This tag must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline void SetTag(Tag&& value) { m_tagHasBeenSet = true; m_tag = std::move(value); }
+
+ /**
+ * <p>This tag must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline LifecycleRuleFilter& WithTag(const Tag& value) { SetTag(value); return *this;}
+
+ /**
+ * <p>This tag must exist in the object's tag set in order for the rule to
+ * apply.</p>
+ */
+ inline LifecycleRuleFilter& WithTag(Tag&& value) { SetTag(std::move(value)); return *this;}
+
+
+
+ inline const LifecycleRuleAndOperator& GetAnd() const{ return m_and; }
+
+
+ inline bool AndHasBeenSet() const { return m_andHasBeenSet; }
+
+
+ inline void SetAnd(const LifecycleRuleAndOperator& value) { m_andHasBeenSet = true; m_and = value; }
+
+
+ inline void SetAnd(LifecycleRuleAndOperator&& value) { m_andHasBeenSet = true; m_and = std::move(value); }
+
+
+ inline LifecycleRuleFilter& WithAnd(const LifecycleRuleAndOperator& value) { SetAnd(value); return *this;}
+
+
+ inline LifecycleRuleFilter& WithAnd(LifecycleRuleAndOperator&& value) { SetAnd(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Tag m_tag;
+ bool m_tagHasBeenSet;
+
+ LifecycleRuleAndOperator m_and;
+ bool m_andHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketAnalyticsConfigurationsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketAnalyticsConfigurationsRequest.h
new file mode 100644
index 00000000000..c4e27125e76
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketAnalyticsConfigurationsRequest.h
@@ -0,0 +1,247 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API ListBucketAnalyticsConfigurationsRequest : public S3Request
+ {
+ public:
+ ListBucketAnalyticsConfigurationsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "ListBucketAnalyticsConfigurations"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket from which analytics configurations are retrieved.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket from which analytics configurations are retrieved.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket from which analytics configurations are retrieved.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket from which analytics configurations are retrieved.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket from which analytics configurations are retrieved.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket from which analytics configurations are retrieved.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket from which analytics configurations are retrieved.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket from which analytics configurations are retrieved.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline bool ContinuationTokenHasBeenSet() const { return m_continuationTokenHasBeenSet; }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = value; }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = std::move(value); }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationTokenHasBeenSet = true; m_continuationToken.assign(value); }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsRequest& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsRequest& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsRequest& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline ListBucketAnalyticsConfigurationsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline ListBucketAnalyticsConfigurationsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline ListBucketAnalyticsConfigurationsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline ListBucketAnalyticsConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListBucketAnalyticsConfigurationsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListBucketAnalyticsConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline ListBucketAnalyticsConfigurationsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListBucketAnalyticsConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListBucketAnalyticsConfigurationsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_continuationToken;
+ bool m_continuationTokenHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketAnalyticsConfigurationsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketAnalyticsConfigurationsResult.h
new file mode 100644
index 00000000000..9fc4f7cb24a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketAnalyticsConfigurationsResult.h
@@ -0,0 +1,207 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/AnalyticsConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListBucketAnalyticsConfigurationsResult
+ {
+ public:
+ ListBucketAnalyticsConfigurationsResult();
+ ListBucketAnalyticsConfigurationsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListBucketAnalyticsConfigurationsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Indicates whether the returned list of analytics configurations is complete.
+ * A value of true indicates that the list is not complete and the
+ * NextContinuationToken will be provided for a subsequent request.</p>
+ */
+ inline bool GetIsTruncated() const{ return m_isTruncated; }
+
+ /**
+ * <p>Indicates whether the returned list of analytics configurations is complete.
+ * A value of true indicates that the list is not complete and the
+ * NextContinuationToken will be provided for a subsequent request.</p>
+ */
+ inline void SetIsTruncated(bool value) { m_isTruncated = value; }
+
+ /**
+ * <p>Indicates whether the returned list of analytics configurations is complete.
+ * A value of true indicates that the list is not complete and the
+ * NextContinuationToken will be provided for a subsequent request.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& WithIsTruncated(bool value) { SetIsTruncated(value); return *this;}
+
+
+ /**
+ * <p>The marker that is used as a starting point for this analytics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p>The marker that is used as a starting point for this analytics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationToken = value; }
+
+ /**
+ * <p>The marker that is used as a starting point for this analytics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationToken = std::move(value); }
+
+ /**
+ * <p>The marker that is used as a starting point for this analytics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationToken.assign(value); }
+
+ /**
+ * <p>The marker that is used as a starting point for this analytics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p>The marker that is used as a starting point for this analytics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The marker that is used as a starting point for this analytics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which indicates that there are more analytics configurations to list. The
+ * next request must include this <code>NextContinuationToken</code>. The token is
+ * obfuscated and is not a usable value.</p>
+ */
+ inline const Aws::String& GetNextContinuationToken() const{ return m_nextContinuationToken; }
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which indicates that there are more analytics configurations to list. The
+ * next request must include this <code>NextContinuationToken</code>. The token is
+ * obfuscated and is not a usable value.</p>
+ */
+ inline void SetNextContinuationToken(const Aws::String& value) { m_nextContinuationToken = value; }
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which indicates that there are more analytics configurations to list. The
+ * next request must include this <code>NextContinuationToken</code>. The token is
+ * obfuscated and is not a usable value.</p>
+ */
+ inline void SetNextContinuationToken(Aws::String&& value) { m_nextContinuationToken = std::move(value); }
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which indicates that there are more analytics configurations to list. The
+ * next request must include this <code>NextContinuationToken</code>. The token is
+ * obfuscated and is not a usable value.</p>
+ */
+ inline void SetNextContinuationToken(const char* value) { m_nextContinuationToken.assign(value); }
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which indicates that there are more analytics configurations to list. The
+ * next request must include this <code>NextContinuationToken</code>. The token is
+ * obfuscated and is not a usable value.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& WithNextContinuationToken(const Aws::String& value) { SetNextContinuationToken(value); return *this;}
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which indicates that there are more analytics configurations to list. The
+ * next request must include this <code>NextContinuationToken</code>. The token is
+ * obfuscated and is not a usable value.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& WithNextContinuationToken(Aws::String&& value) { SetNextContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which indicates that there are more analytics configurations to list. The
+ * next request must include this <code>NextContinuationToken</code>. The token is
+ * obfuscated and is not a usable value.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& WithNextContinuationToken(const char* value) { SetNextContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The list of analytics configurations for a bucket.</p>
+ */
+ inline const Aws::Vector<AnalyticsConfiguration>& GetAnalyticsConfigurationList() const{ return m_analyticsConfigurationList; }
+
+ /**
+ * <p>The list of analytics configurations for a bucket.</p>
+ */
+ inline void SetAnalyticsConfigurationList(const Aws::Vector<AnalyticsConfiguration>& value) { m_analyticsConfigurationList = value; }
+
+ /**
+ * <p>The list of analytics configurations for a bucket.</p>
+ */
+ inline void SetAnalyticsConfigurationList(Aws::Vector<AnalyticsConfiguration>&& value) { m_analyticsConfigurationList = std::move(value); }
+
+ /**
+ * <p>The list of analytics configurations for a bucket.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& WithAnalyticsConfigurationList(const Aws::Vector<AnalyticsConfiguration>& value) { SetAnalyticsConfigurationList(value); return *this;}
+
+ /**
+ * <p>The list of analytics configurations for a bucket.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& WithAnalyticsConfigurationList(Aws::Vector<AnalyticsConfiguration>&& value) { SetAnalyticsConfigurationList(std::move(value)); return *this;}
+
+ /**
+ * <p>The list of analytics configurations for a bucket.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& AddAnalyticsConfigurationList(const AnalyticsConfiguration& value) { m_analyticsConfigurationList.push_back(value); return *this; }
+
+ /**
+ * <p>The list of analytics configurations for a bucket.</p>
+ */
+ inline ListBucketAnalyticsConfigurationsResult& AddAnalyticsConfigurationList(AnalyticsConfiguration&& value) { m_analyticsConfigurationList.push_back(std::move(value)); return *this; }
+
+ private:
+
+ bool m_isTruncated;
+
+ Aws::String m_continuationToken;
+
+ Aws::String m_nextContinuationToken;
+
+ Aws::Vector<AnalyticsConfiguration> m_analyticsConfigurationList;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketIntelligentTieringConfigurationsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketIntelligentTieringConfigurationsRequest.h
new file mode 100644
index 00000000000..5a20d97c154
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketIntelligentTieringConfigurationsRequest.h
@@ -0,0 +1,193 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API ListBucketIntelligentTieringConfigurationsRequest : public S3Request
+ {
+ public:
+ ListBucketIntelligentTieringConfigurationsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "ListBucketIntelligentTieringConfigurations"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline bool ContinuationTokenHasBeenSet() const { return m_continuationTokenHasBeenSet; }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = value; }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = std::move(value); }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationTokenHasBeenSet = true; m_continuationToken.assign(value); }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsRequest& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsRequest& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsRequest& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline ListBucketIntelligentTieringConfigurationsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline ListBucketIntelligentTieringConfigurationsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline ListBucketIntelligentTieringConfigurationsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline ListBucketIntelligentTieringConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListBucketIntelligentTieringConfigurationsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListBucketIntelligentTieringConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline ListBucketIntelligentTieringConfigurationsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListBucketIntelligentTieringConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListBucketIntelligentTieringConfigurationsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_continuationToken;
+ bool m_continuationTokenHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketIntelligentTieringConfigurationsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketIntelligentTieringConfigurationsResult.h
new file mode 100644
index 00000000000..0203f9ac437
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketIntelligentTieringConfigurationsResult.h
@@ -0,0 +1,207 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/IntelligentTieringConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListBucketIntelligentTieringConfigurationsResult
+ {
+ public:
+ ListBucketIntelligentTieringConfigurationsResult();
+ ListBucketIntelligentTieringConfigurationsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListBucketIntelligentTieringConfigurationsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Indicates whether the returned list of analytics configurations is complete.
+ * A value of true indicates that the list is not complete and the
+ * NextContinuationToken will be provided for a subsequent request.</p>
+ */
+ inline bool GetIsTruncated() const{ return m_isTruncated; }
+
+ /**
+ * <p>Indicates whether the returned list of analytics configurations is complete.
+ * A value of true indicates that the list is not complete and the
+ * NextContinuationToken will be provided for a subsequent request.</p>
+ */
+ inline void SetIsTruncated(bool value) { m_isTruncated = value; }
+
+ /**
+ * <p>Indicates whether the returned list of analytics configurations is complete.
+ * A value of true indicates that the list is not complete and the
+ * NextContinuationToken will be provided for a subsequent request.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& WithIsTruncated(bool value) { SetIsTruncated(value); return *this;}
+
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationToken = value; }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationToken = std::move(value); }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationToken.assign(value); }
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The ContinuationToken that represents a placeholder from where this request
+ * should begin.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline const Aws::String& GetNextContinuationToken() const{ return m_nextContinuationToken; }
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline void SetNextContinuationToken(const Aws::String& value) { m_nextContinuationToken = value; }
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline void SetNextContinuationToken(Aws::String&& value) { m_nextContinuationToken = std::move(value); }
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline void SetNextContinuationToken(const char* value) { m_nextContinuationToken.assign(value); }
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& WithNextContinuationToken(const Aws::String& value) { SetNextContinuationToken(value); return *this;}
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& WithNextContinuationToken(Aws::String&& value) { SetNextContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& WithNextContinuationToken(const char* value) { SetNextContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The list of S3 Intelligent-Tiering configurations for a bucket.</p>
+ */
+ inline const Aws::Vector<IntelligentTieringConfiguration>& GetIntelligentTieringConfigurationList() const{ return m_intelligentTieringConfigurationList; }
+
+ /**
+ * <p>The list of S3 Intelligent-Tiering configurations for a bucket.</p>
+ */
+ inline void SetIntelligentTieringConfigurationList(const Aws::Vector<IntelligentTieringConfiguration>& value) { m_intelligentTieringConfigurationList = value; }
+
+ /**
+ * <p>The list of S3 Intelligent-Tiering configurations for a bucket.</p>
+ */
+ inline void SetIntelligentTieringConfigurationList(Aws::Vector<IntelligentTieringConfiguration>&& value) { m_intelligentTieringConfigurationList = std::move(value); }
+
+ /**
+ * <p>The list of S3 Intelligent-Tiering configurations for a bucket.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& WithIntelligentTieringConfigurationList(const Aws::Vector<IntelligentTieringConfiguration>& value) { SetIntelligentTieringConfigurationList(value); return *this;}
+
+ /**
+ * <p>The list of S3 Intelligent-Tiering configurations for a bucket.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& WithIntelligentTieringConfigurationList(Aws::Vector<IntelligentTieringConfiguration>&& value) { SetIntelligentTieringConfigurationList(std::move(value)); return *this;}
+
+ /**
+ * <p>The list of S3 Intelligent-Tiering configurations for a bucket.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& AddIntelligentTieringConfigurationList(const IntelligentTieringConfiguration& value) { m_intelligentTieringConfigurationList.push_back(value); return *this; }
+
+ /**
+ * <p>The list of S3 Intelligent-Tiering configurations for a bucket.</p>
+ */
+ inline ListBucketIntelligentTieringConfigurationsResult& AddIntelligentTieringConfigurationList(IntelligentTieringConfiguration&& value) { m_intelligentTieringConfigurationList.push_back(std::move(value)); return *this; }
+
+ private:
+
+ bool m_isTruncated;
+
+ Aws::String m_continuationToken;
+
+ Aws::String m_nextContinuationToken;
+
+ Aws::Vector<IntelligentTieringConfiguration> m_intelligentTieringConfigurationList;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketInventoryConfigurationsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketInventoryConfigurationsRequest.h
new file mode 100644
index 00000000000..d1b424439d1
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketInventoryConfigurationsRequest.h
@@ -0,0 +1,271 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API ListBucketInventoryConfigurationsRequest : public S3Request
+ {
+ public:
+ ListBucketInventoryConfigurationsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "ListBucketInventoryConfigurations"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the inventory configurations to
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the inventory configurations to
+ * retrieve.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the inventory configurations to
+ * retrieve.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the inventory configurations to
+ * retrieve.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the inventory configurations to
+ * retrieve.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the inventory configurations to
+ * retrieve.</p>
+ */
+ inline ListBucketInventoryConfigurationsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the inventory configurations to
+ * retrieve.</p>
+ */
+ inline ListBucketInventoryConfigurationsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the inventory configurations to
+ * retrieve.</p>
+ */
+ inline ListBucketInventoryConfigurationsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The marker used to continue an inventory configuration listing that has been
+ * truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p>The marker used to continue an inventory configuration listing that has been
+ * truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline bool ContinuationTokenHasBeenSet() const { return m_continuationTokenHasBeenSet; }
+
+ /**
+ * <p>The marker used to continue an inventory configuration listing that has been
+ * truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = value; }
+
+ /**
+ * <p>The marker used to continue an inventory configuration listing that has been
+ * truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = std::move(value); }
+
+ /**
+ * <p>The marker used to continue an inventory configuration listing that has been
+ * truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationTokenHasBeenSet = true; m_continuationToken.assign(value); }
+
+ /**
+ * <p>The marker used to continue an inventory configuration listing that has been
+ * truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline ListBucketInventoryConfigurationsRequest& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p>The marker used to continue an inventory configuration listing that has been
+ * truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline ListBucketInventoryConfigurationsRequest& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The marker used to continue an inventory configuration listing that has been
+ * truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline ListBucketInventoryConfigurationsRequest& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListBucketInventoryConfigurationsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListBucketInventoryConfigurationsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListBucketInventoryConfigurationsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline ListBucketInventoryConfigurationsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline ListBucketInventoryConfigurationsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline ListBucketInventoryConfigurationsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline ListBucketInventoryConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListBucketInventoryConfigurationsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListBucketInventoryConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline ListBucketInventoryConfigurationsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListBucketInventoryConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListBucketInventoryConfigurationsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_continuationToken;
+ bool m_continuationTokenHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketInventoryConfigurationsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketInventoryConfigurationsResult.h
new file mode 100644
index 00000000000..e28a0661e32
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketInventoryConfigurationsResult.h
@@ -0,0 +1,207 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/InventoryConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListBucketInventoryConfigurationsResult
+ {
+ public:
+ ListBucketInventoryConfigurationsResult();
+ ListBucketInventoryConfigurationsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListBucketInventoryConfigurationsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>If sent in the request, the marker that is used as a starting point for this
+ * inventory configuration list response.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p>If sent in the request, the marker that is used as a starting point for this
+ * inventory configuration list response.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationToken = value; }
+
+ /**
+ * <p>If sent in the request, the marker that is used as a starting point for this
+ * inventory configuration list response.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationToken = std::move(value); }
+
+ /**
+ * <p>If sent in the request, the marker that is used as a starting point for this
+ * inventory configuration list response.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationToken.assign(value); }
+
+ /**
+ * <p>If sent in the request, the marker that is used as a starting point for this
+ * inventory configuration list response.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p>If sent in the request, the marker that is used as a starting point for this
+ * inventory configuration list response.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>If sent in the request, the marker that is used as a starting point for this
+ * inventory configuration list response.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The list of inventory configurations for a bucket.</p>
+ */
+ inline const Aws::Vector<InventoryConfiguration>& GetInventoryConfigurationList() const{ return m_inventoryConfigurationList; }
+
+ /**
+ * <p>The list of inventory configurations for a bucket.</p>
+ */
+ inline void SetInventoryConfigurationList(const Aws::Vector<InventoryConfiguration>& value) { m_inventoryConfigurationList = value; }
+
+ /**
+ * <p>The list of inventory configurations for a bucket.</p>
+ */
+ inline void SetInventoryConfigurationList(Aws::Vector<InventoryConfiguration>&& value) { m_inventoryConfigurationList = std::move(value); }
+
+ /**
+ * <p>The list of inventory configurations for a bucket.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& WithInventoryConfigurationList(const Aws::Vector<InventoryConfiguration>& value) { SetInventoryConfigurationList(value); return *this;}
+
+ /**
+ * <p>The list of inventory configurations for a bucket.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& WithInventoryConfigurationList(Aws::Vector<InventoryConfiguration>&& value) { SetInventoryConfigurationList(std::move(value)); return *this;}
+
+ /**
+ * <p>The list of inventory configurations for a bucket.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& AddInventoryConfigurationList(const InventoryConfiguration& value) { m_inventoryConfigurationList.push_back(value); return *this; }
+
+ /**
+ * <p>The list of inventory configurations for a bucket.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& AddInventoryConfigurationList(InventoryConfiguration&& value) { m_inventoryConfigurationList.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Tells whether the returned list of inventory configurations is complete. A
+ * value of true indicates that the list is not complete and the
+ * NextContinuationToken is provided for a subsequent request.</p>
+ */
+ inline bool GetIsTruncated() const{ return m_isTruncated; }
+
+ /**
+ * <p>Tells whether the returned list of inventory configurations is complete. A
+ * value of true indicates that the list is not complete and the
+ * NextContinuationToken is provided for a subsequent request.</p>
+ */
+ inline void SetIsTruncated(bool value) { m_isTruncated = value; }
+
+ /**
+ * <p>Tells whether the returned list of inventory configurations is complete. A
+ * value of true indicates that the list is not complete and the
+ * NextContinuationToken is provided for a subsequent request.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& WithIsTruncated(bool value) { SetIsTruncated(value); return *this;}
+
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline const Aws::String& GetNextContinuationToken() const{ return m_nextContinuationToken; }
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline void SetNextContinuationToken(const Aws::String& value) { m_nextContinuationToken = value; }
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline void SetNextContinuationToken(Aws::String&& value) { m_nextContinuationToken = std::move(value); }
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline void SetNextContinuationToken(const char* value) { m_nextContinuationToken.assign(value); }
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& WithNextContinuationToken(const Aws::String& value) { SetNextContinuationToken(value); return *this;}
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& WithNextContinuationToken(Aws::String&& value) { SetNextContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The marker used to continue this inventory configuration listing. Use the
+ * <code>NextContinuationToken</code> from this response to continue the listing in
+ * a subsequent request. The continuation token is an opaque value that Amazon S3
+ * understands.</p>
+ */
+ inline ListBucketInventoryConfigurationsResult& WithNextContinuationToken(const char* value) { SetNextContinuationToken(value); return *this;}
+
+ private:
+
+ Aws::String m_continuationToken;
+
+ Aws::Vector<InventoryConfiguration> m_inventoryConfigurationList;
+
+ bool m_isTruncated;
+
+ Aws::String m_nextContinuationToken;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketMetricsConfigurationsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketMetricsConfigurationsRequest.h
new file mode 100644
index 00000000000..ce84ae1a59c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketMetricsConfigurationsRequest.h
@@ -0,0 +1,263 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API ListBucketMetricsConfigurationsRequest : public S3Request
+ {
+ public:
+ ListBucketMetricsConfigurationsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "ListBucketMetricsConfigurations"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the metrics configurations to retrieve.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the metrics configurations to retrieve.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the metrics configurations to retrieve.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the metrics configurations to retrieve.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the metrics configurations to retrieve.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the metrics configurations to retrieve.</p>
+ */
+ inline ListBucketMetricsConfigurationsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the metrics configurations to retrieve.</p>
+ */
+ inline ListBucketMetricsConfigurationsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the metrics configurations to retrieve.</p>
+ */
+ inline ListBucketMetricsConfigurationsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The marker that is used to continue a metrics configuration listing that has
+ * been truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p>The marker that is used to continue a metrics configuration listing that has
+ * been truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline bool ContinuationTokenHasBeenSet() const { return m_continuationTokenHasBeenSet; }
+
+ /**
+ * <p>The marker that is used to continue a metrics configuration listing that has
+ * been truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = value; }
+
+ /**
+ * <p>The marker that is used to continue a metrics configuration listing that has
+ * been truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = std::move(value); }
+
+ /**
+ * <p>The marker that is used to continue a metrics configuration listing that has
+ * been truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationTokenHasBeenSet = true; m_continuationToken.assign(value); }
+
+ /**
+ * <p>The marker that is used to continue a metrics configuration listing that has
+ * been truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline ListBucketMetricsConfigurationsRequest& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p>The marker that is used to continue a metrics configuration listing that has
+ * been truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline ListBucketMetricsConfigurationsRequest& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The marker that is used to continue a metrics configuration listing that has
+ * been truncated. Use the NextContinuationToken from a previously truncated list
+ * response to continue the listing. The continuation token is an opaque value that
+ * Amazon S3 understands.</p>
+ */
+ inline ListBucketMetricsConfigurationsRequest& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListBucketMetricsConfigurationsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListBucketMetricsConfigurationsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListBucketMetricsConfigurationsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline ListBucketMetricsConfigurationsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline ListBucketMetricsConfigurationsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline ListBucketMetricsConfigurationsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline ListBucketMetricsConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListBucketMetricsConfigurationsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListBucketMetricsConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline ListBucketMetricsConfigurationsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListBucketMetricsConfigurationsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListBucketMetricsConfigurationsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_continuationToken;
+ bool m_continuationTokenHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketMetricsConfigurationsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketMetricsConfigurationsResult.h
new file mode 100644
index 00000000000..4c070322b2d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketMetricsConfigurationsResult.h
@@ -0,0 +1,207 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/MetricsConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListBucketMetricsConfigurationsResult
+ {
+ public:
+ ListBucketMetricsConfigurationsResult();
+ ListBucketMetricsConfigurationsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListBucketMetricsConfigurationsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Indicates whether the returned list of metrics configurations is complete. A
+ * value of true indicates that the list is not complete and the
+ * NextContinuationToken will be provided for a subsequent request.</p>
+ */
+ inline bool GetIsTruncated() const{ return m_isTruncated; }
+
+ /**
+ * <p>Indicates whether the returned list of metrics configurations is complete. A
+ * value of true indicates that the list is not complete and the
+ * NextContinuationToken will be provided for a subsequent request.</p>
+ */
+ inline void SetIsTruncated(bool value) { m_isTruncated = value; }
+
+ /**
+ * <p>Indicates whether the returned list of metrics configurations is complete. A
+ * value of true indicates that the list is not complete and the
+ * NextContinuationToken will be provided for a subsequent request.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& WithIsTruncated(bool value) { SetIsTruncated(value); return *this;}
+
+
+ /**
+ * <p>The marker that is used as a starting point for this metrics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p>The marker that is used as a starting point for this metrics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationToken = value; }
+
+ /**
+ * <p>The marker that is used as a starting point for this metrics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationToken = std::move(value); }
+
+ /**
+ * <p>The marker that is used as a starting point for this metrics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationToken.assign(value); }
+
+ /**
+ * <p>The marker that is used as a starting point for this metrics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p>The marker that is used as a starting point for this metrics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The marker that is used as a starting point for this metrics configuration
+ * list response. This value is present if it was sent in the request.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The marker used to continue a metrics configuration listing that has been
+ * truncated. Use the <code>NextContinuationToken</code> from a previously
+ * truncated list response to continue the listing. The continuation token is an
+ * opaque value that Amazon S3 understands.</p>
+ */
+ inline const Aws::String& GetNextContinuationToken() const{ return m_nextContinuationToken; }
+
+ /**
+ * <p>The marker used to continue a metrics configuration listing that has been
+ * truncated. Use the <code>NextContinuationToken</code> from a previously
+ * truncated list response to continue the listing. The continuation token is an
+ * opaque value that Amazon S3 understands.</p>
+ */
+ inline void SetNextContinuationToken(const Aws::String& value) { m_nextContinuationToken = value; }
+
+ /**
+ * <p>The marker used to continue a metrics configuration listing that has been
+ * truncated. Use the <code>NextContinuationToken</code> from a previously
+ * truncated list response to continue the listing. The continuation token is an
+ * opaque value that Amazon S3 understands.</p>
+ */
+ inline void SetNextContinuationToken(Aws::String&& value) { m_nextContinuationToken = std::move(value); }
+
+ /**
+ * <p>The marker used to continue a metrics configuration listing that has been
+ * truncated. Use the <code>NextContinuationToken</code> from a previously
+ * truncated list response to continue the listing. The continuation token is an
+ * opaque value that Amazon S3 understands.</p>
+ */
+ inline void SetNextContinuationToken(const char* value) { m_nextContinuationToken.assign(value); }
+
+ /**
+ * <p>The marker used to continue a metrics configuration listing that has been
+ * truncated. Use the <code>NextContinuationToken</code> from a previously
+ * truncated list response to continue the listing. The continuation token is an
+ * opaque value that Amazon S3 understands.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& WithNextContinuationToken(const Aws::String& value) { SetNextContinuationToken(value); return *this;}
+
+ /**
+ * <p>The marker used to continue a metrics configuration listing that has been
+ * truncated. Use the <code>NextContinuationToken</code> from a previously
+ * truncated list response to continue the listing. The continuation token is an
+ * opaque value that Amazon S3 understands.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& WithNextContinuationToken(Aws::String&& value) { SetNextContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>The marker used to continue a metrics configuration listing that has been
+ * truncated. Use the <code>NextContinuationToken</code> from a previously
+ * truncated list response to continue the listing. The continuation token is an
+ * opaque value that Amazon S3 understands.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& WithNextContinuationToken(const char* value) { SetNextContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The list of metrics configurations for a bucket.</p>
+ */
+ inline const Aws::Vector<MetricsConfiguration>& GetMetricsConfigurationList() const{ return m_metricsConfigurationList; }
+
+ /**
+ * <p>The list of metrics configurations for a bucket.</p>
+ */
+ inline void SetMetricsConfigurationList(const Aws::Vector<MetricsConfiguration>& value) { m_metricsConfigurationList = value; }
+
+ /**
+ * <p>The list of metrics configurations for a bucket.</p>
+ */
+ inline void SetMetricsConfigurationList(Aws::Vector<MetricsConfiguration>&& value) { m_metricsConfigurationList = std::move(value); }
+
+ /**
+ * <p>The list of metrics configurations for a bucket.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& WithMetricsConfigurationList(const Aws::Vector<MetricsConfiguration>& value) { SetMetricsConfigurationList(value); return *this;}
+
+ /**
+ * <p>The list of metrics configurations for a bucket.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& WithMetricsConfigurationList(Aws::Vector<MetricsConfiguration>&& value) { SetMetricsConfigurationList(std::move(value)); return *this;}
+
+ /**
+ * <p>The list of metrics configurations for a bucket.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& AddMetricsConfigurationList(const MetricsConfiguration& value) { m_metricsConfigurationList.push_back(value); return *this; }
+
+ /**
+ * <p>The list of metrics configurations for a bucket.</p>
+ */
+ inline ListBucketMetricsConfigurationsResult& AddMetricsConfigurationList(MetricsConfiguration&& value) { m_metricsConfigurationList.push_back(std::move(value)); return *this; }
+
+ private:
+
+ bool m_isTruncated;
+
+ Aws::String m_continuationToken;
+
+ Aws::String m_nextContinuationToken;
+
+ Aws::Vector<MetricsConfiguration> m_metricsConfigurationList;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketsResult.h
new file mode 100644
index 00000000000..a580ac0aadb
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketsResult.h
@@ -0,0 +1,107 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Owner.h>
+#include <aws/s3/model/Bucket.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListBucketsResult
+ {
+ public:
+ ListBucketsResult();
+ ListBucketsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListBucketsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The list of buckets owned by the requestor.</p>
+ */
+ inline const Aws::Vector<Bucket>& GetBuckets() const{ return m_buckets; }
+
+ /**
+ * <p>The list of buckets owned by the requestor.</p>
+ */
+ inline void SetBuckets(const Aws::Vector<Bucket>& value) { m_buckets = value; }
+
+ /**
+ * <p>The list of buckets owned by the requestor.</p>
+ */
+ inline void SetBuckets(Aws::Vector<Bucket>&& value) { m_buckets = std::move(value); }
+
+ /**
+ * <p>The list of buckets owned by the requestor.</p>
+ */
+ inline ListBucketsResult& WithBuckets(const Aws::Vector<Bucket>& value) { SetBuckets(value); return *this;}
+
+ /**
+ * <p>The list of buckets owned by the requestor.</p>
+ */
+ inline ListBucketsResult& WithBuckets(Aws::Vector<Bucket>&& value) { SetBuckets(std::move(value)); return *this;}
+
+ /**
+ * <p>The list of buckets owned by the requestor.</p>
+ */
+ inline ListBucketsResult& AddBuckets(const Bucket& value) { m_buckets.push_back(value); return *this; }
+
+ /**
+ * <p>The list of buckets owned by the requestor.</p>
+ */
+ inline ListBucketsResult& AddBuckets(Bucket&& value) { m_buckets.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>The owner of the buckets listed.</p>
+ */
+ inline const Owner& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p>The owner of the buckets listed.</p>
+ */
+ inline void SetOwner(const Owner& value) { m_owner = value; }
+
+ /**
+ * <p>The owner of the buckets listed.</p>
+ */
+ inline void SetOwner(Owner&& value) { m_owner = std::move(value); }
+
+ /**
+ * <p>The owner of the buckets listed.</p>
+ */
+ inline ListBucketsResult& WithOwner(const Owner& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p>The owner of the buckets listed.</p>
+ */
+ inline ListBucketsResult& WithOwner(Owner&& value) { SetOwner(std::move(value)); return *this;}
+
+ private:
+
+ Aws::Vector<Bucket> m_buckets;
+
+ Owner m_owner;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListMultipartUploadsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListMultipartUploadsRequest.h
new file mode 100644
index 00000000000..e40941b26ab
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListMultipartUploadsRequest.h
@@ -0,0 +1,730 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/EncodingType.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API ListMultipartUploadsRequest : public S3Request
+ {
+ public:
+ ListMultipartUploadsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "ListMultipartUploads"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListMultipartUploadsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListMultipartUploadsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated. </p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListMultipartUploadsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Character you use to group keys.</p> <p>All keys that contain the same string
+ * between the prefix, if specified, and the first occurrence of the delimiter
+ * after the prefix are grouped under a single result element,
+ * <code>CommonPrefixes</code>. If you don't specify the prefix parameter, then the
+ * substring starts at the beginning of the key. The keys that are grouped under
+ * <code>CommonPrefixes</code> result element are not returned elsewhere in the
+ * response.</p>
+ */
+ inline const Aws::String& GetDelimiter() const{ return m_delimiter; }
+
+ /**
+ * <p>Character you use to group keys.</p> <p>All keys that contain the same string
+ * between the prefix, if specified, and the first occurrence of the delimiter
+ * after the prefix are grouped under a single result element,
+ * <code>CommonPrefixes</code>. If you don't specify the prefix parameter, then the
+ * substring starts at the beginning of the key. The keys that are grouped under
+ * <code>CommonPrefixes</code> result element are not returned elsewhere in the
+ * response.</p>
+ */
+ inline bool DelimiterHasBeenSet() const { return m_delimiterHasBeenSet; }
+
+ /**
+ * <p>Character you use to group keys.</p> <p>All keys that contain the same string
+ * between the prefix, if specified, and the first occurrence of the delimiter
+ * after the prefix are grouped under a single result element,
+ * <code>CommonPrefixes</code>. If you don't specify the prefix parameter, then the
+ * substring starts at the beginning of the key. The keys that are grouped under
+ * <code>CommonPrefixes</code> result element are not returned elsewhere in the
+ * response.</p>
+ */
+ inline void SetDelimiter(const Aws::String& value) { m_delimiterHasBeenSet = true; m_delimiter = value; }
+
+ /**
+ * <p>Character you use to group keys.</p> <p>All keys that contain the same string
+ * between the prefix, if specified, and the first occurrence of the delimiter
+ * after the prefix are grouped under a single result element,
+ * <code>CommonPrefixes</code>. If you don't specify the prefix parameter, then the
+ * substring starts at the beginning of the key. The keys that are grouped under
+ * <code>CommonPrefixes</code> result element are not returned elsewhere in the
+ * response.</p>
+ */
+ inline void SetDelimiter(Aws::String&& value) { m_delimiterHasBeenSet = true; m_delimiter = std::move(value); }
+
+ /**
+ * <p>Character you use to group keys.</p> <p>All keys that contain the same string
+ * between the prefix, if specified, and the first occurrence of the delimiter
+ * after the prefix are grouped under a single result element,
+ * <code>CommonPrefixes</code>. If you don't specify the prefix parameter, then the
+ * substring starts at the beginning of the key. The keys that are grouped under
+ * <code>CommonPrefixes</code> result element are not returned elsewhere in the
+ * response.</p>
+ */
+ inline void SetDelimiter(const char* value) { m_delimiterHasBeenSet = true; m_delimiter.assign(value); }
+
+ /**
+ * <p>Character you use to group keys.</p> <p>All keys that contain the same string
+ * between the prefix, if specified, and the first occurrence of the delimiter
+ * after the prefix are grouped under a single result element,
+ * <code>CommonPrefixes</code>. If you don't specify the prefix parameter, then the
+ * substring starts at the beginning of the key. The keys that are grouped under
+ * <code>CommonPrefixes</code> result element are not returned elsewhere in the
+ * response.</p>
+ */
+ inline ListMultipartUploadsRequest& WithDelimiter(const Aws::String& value) { SetDelimiter(value); return *this;}
+
+ /**
+ * <p>Character you use to group keys.</p> <p>All keys that contain the same string
+ * between the prefix, if specified, and the first occurrence of the delimiter
+ * after the prefix are grouped under a single result element,
+ * <code>CommonPrefixes</code>. If you don't specify the prefix parameter, then the
+ * substring starts at the beginning of the key. The keys that are grouped under
+ * <code>CommonPrefixes</code> result element are not returned elsewhere in the
+ * response.</p>
+ */
+ inline ListMultipartUploadsRequest& WithDelimiter(Aws::String&& value) { SetDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>Character you use to group keys.</p> <p>All keys that contain the same string
+ * between the prefix, if specified, and the first occurrence of the delimiter
+ * after the prefix are grouped under a single result element,
+ * <code>CommonPrefixes</code>. If you don't specify the prefix parameter, then the
+ * substring starts at the beginning of the key. The keys that are grouped under
+ * <code>CommonPrefixes</code> result element are not returned elsewhere in the
+ * response.</p>
+ */
+ inline ListMultipartUploadsRequest& WithDelimiter(const char* value) { SetDelimiter(value); return *this;}
+
+
+
+ inline const EncodingType& GetEncodingType() const{ return m_encodingType; }
+
+
+ inline bool EncodingTypeHasBeenSet() const { return m_encodingTypeHasBeenSet; }
+
+
+ inline void SetEncodingType(const EncodingType& value) { m_encodingTypeHasBeenSet = true; m_encodingType = value; }
+
+
+ inline void SetEncodingType(EncodingType&& value) { m_encodingTypeHasBeenSet = true; m_encodingType = std::move(value); }
+
+
+ inline ListMultipartUploadsRequest& WithEncodingType(const EncodingType& value) { SetEncodingType(value); return *this;}
+
+
+ inline ListMultipartUploadsRequest& WithEncodingType(EncodingType&& value) { SetEncodingType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Together with upload-id-marker, this parameter specifies the multipart upload
+ * after which listing should begin.</p> <p>If <code>upload-id-marker</code> is not
+ * specified, only the keys lexicographically greater than the specified
+ * <code>key-marker</code> will be included in the list.</p> <p>If
+ * <code>upload-id-marker</code> is specified, any multipart uploads for a key
+ * equal to the <code>key-marker</code> might also be included, provided those
+ * multipart uploads have upload IDs lexicographically greater than the specified
+ * <code>upload-id-marker</code>.</p>
+ */
+ inline const Aws::String& GetKeyMarker() const{ return m_keyMarker; }
+
+ /**
+ * <p>Together with upload-id-marker, this parameter specifies the multipart upload
+ * after which listing should begin.</p> <p>If <code>upload-id-marker</code> is not
+ * specified, only the keys lexicographically greater than the specified
+ * <code>key-marker</code> will be included in the list.</p> <p>If
+ * <code>upload-id-marker</code> is specified, any multipart uploads for a key
+ * equal to the <code>key-marker</code> might also be included, provided those
+ * multipart uploads have upload IDs lexicographically greater than the specified
+ * <code>upload-id-marker</code>.</p>
+ */
+ inline bool KeyMarkerHasBeenSet() const { return m_keyMarkerHasBeenSet; }
+
+ /**
+ * <p>Together with upload-id-marker, this parameter specifies the multipart upload
+ * after which listing should begin.</p> <p>If <code>upload-id-marker</code> is not
+ * specified, only the keys lexicographically greater than the specified
+ * <code>key-marker</code> will be included in the list.</p> <p>If
+ * <code>upload-id-marker</code> is specified, any multipart uploads for a key
+ * equal to the <code>key-marker</code> might also be included, provided those
+ * multipart uploads have upload IDs lexicographically greater than the specified
+ * <code>upload-id-marker</code>.</p>
+ */
+ inline void SetKeyMarker(const Aws::String& value) { m_keyMarkerHasBeenSet = true; m_keyMarker = value; }
+
+ /**
+ * <p>Together with upload-id-marker, this parameter specifies the multipart upload
+ * after which listing should begin.</p> <p>If <code>upload-id-marker</code> is not
+ * specified, only the keys lexicographically greater than the specified
+ * <code>key-marker</code> will be included in the list.</p> <p>If
+ * <code>upload-id-marker</code> is specified, any multipart uploads for a key
+ * equal to the <code>key-marker</code> might also be included, provided those
+ * multipart uploads have upload IDs lexicographically greater than the specified
+ * <code>upload-id-marker</code>.</p>
+ */
+ inline void SetKeyMarker(Aws::String&& value) { m_keyMarkerHasBeenSet = true; m_keyMarker = std::move(value); }
+
+ /**
+ * <p>Together with upload-id-marker, this parameter specifies the multipart upload
+ * after which listing should begin.</p> <p>If <code>upload-id-marker</code> is not
+ * specified, only the keys lexicographically greater than the specified
+ * <code>key-marker</code> will be included in the list.</p> <p>If
+ * <code>upload-id-marker</code> is specified, any multipart uploads for a key
+ * equal to the <code>key-marker</code> might also be included, provided those
+ * multipart uploads have upload IDs lexicographically greater than the specified
+ * <code>upload-id-marker</code>.</p>
+ */
+ inline void SetKeyMarker(const char* value) { m_keyMarkerHasBeenSet = true; m_keyMarker.assign(value); }
+
+ /**
+ * <p>Together with upload-id-marker, this parameter specifies the multipart upload
+ * after which listing should begin.</p> <p>If <code>upload-id-marker</code> is not
+ * specified, only the keys lexicographically greater than the specified
+ * <code>key-marker</code> will be included in the list.</p> <p>If
+ * <code>upload-id-marker</code> is specified, any multipart uploads for a key
+ * equal to the <code>key-marker</code> might also be included, provided those
+ * multipart uploads have upload IDs lexicographically greater than the specified
+ * <code>upload-id-marker</code>.</p>
+ */
+ inline ListMultipartUploadsRequest& WithKeyMarker(const Aws::String& value) { SetKeyMarker(value); return *this;}
+
+ /**
+ * <p>Together with upload-id-marker, this parameter specifies the multipart upload
+ * after which listing should begin.</p> <p>If <code>upload-id-marker</code> is not
+ * specified, only the keys lexicographically greater than the specified
+ * <code>key-marker</code> will be included in the list.</p> <p>If
+ * <code>upload-id-marker</code> is specified, any multipart uploads for a key
+ * equal to the <code>key-marker</code> might also be included, provided those
+ * multipart uploads have upload IDs lexicographically greater than the specified
+ * <code>upload-id-marker</code>.</p>
+ */
+ inline ListMultipartUploadsRequest& WithKeyMarker(Aws::String&& value) { SetKeyMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>Together with upload-id-marker, this parameter specifies the multipart upload
+ * after which listing should begin.</p> <p>If <code>upload-id-marker</code> is not
+ * specified, only the keys lexicographically greater than the specified
+ * <code>key-marker</code> will be included in the list.</p> <p>If
+ * <code>upload-id-marker</code> is specified, any multipart uploads for a key
+ * equal to the <code>key-marker</code> might also be included, provided those
+ * multipart uploads have upload IDs lexicographically greater than the specified
+ * <code>upload-id-marker</code>.</p>
+ */
+ inline ListMultipartUploadsRequest& WithKeyMarker(const char* value) { SetKeyMarker(value); return *this;}
+
+
+ /**
+ * <p>Sets the maximum number of multipart uploads, from 1 to 1,000, to return in
+ * the response body. 1,000 is the maximum number of uploads that can be returned
+ * in a response.</p>
+ */
+ inline int GetMaxUploads() const{ return m_maxUploads; }
+
+ /**
+ * <p>Sets the maximum number of multipart uploads, from 1 to 1,000, to return in
+ * the response body. 1,000 is the maximum number of uploads that can be returned
+ * in a response.</p>
+ */
+ inline bool MaxUploadsHasBeenSet() const { return m_maxUploadsHasBeenSet; }
+
+ /**
+ * <p>Sets the maximum number of multipart uploads, from 1 to 1,000, to return in
+ * the response body. 1,000 is the maximum number of uploads that can be returned
+ * in a response.</p>
+ */
+ inline void SetMaxUploads(int value) { m_maxUploadsHasBeenSet = true; m_maxUploads = value; }
+
+ /**
+ * <p>Sets the maximum number of multipart uploads, from 1 to 1,000, to return in
+ * the response body. 1,000 is the maximum number of uploads that can be returned
+ * in a response.</p>
+ */
+ inline ListMultipartUploadsRequest& WithMaxUploads(int value) { SetMaxUploads(value); return *this;}
+
+
+ /**
+ * <p>Lists in-progress uploads only for those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different grouping of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.)</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Lists in-progress uploads only for those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different grouping of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.)</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>Lists in-progress uploads only for those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different grouping of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.)</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>Lists in-progress uploads only for those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different grouping of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.)</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>Lists in-progress uploads only for those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different grouping of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.)</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>Lists in-progress uploads only for those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different grouping of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.)</p>
+ */
+ inline ListMultipartUploadsRequest& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Lists in-progress uploads only for those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different grouping of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.)</p>
+ */
+ inline ListMultipartUploadsRequest& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Lists in-progress uploads only for those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different grouping of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.)</p>
+ */
+ inline ListMultipartUploadsRequest& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>Together with key-marker, specifies the multipart upload after which listing
+ * should begin. If key-marker is not specified, the upload-id-marker parameter is
+ * ignored. Otherwise, any multipart uploads for a key equal to the key-marker
+ * might be included in the list only if they have an upload ID lexicographically
+ * greater than the specified <code>upload-id-marker</code>.</p>
+ */
+ inline const Aws::String& GetUploadIdMarker() const{ return m_uploadIdMarker; }
+
+ /**
+ * <p>Together with key-marker, specifies the multipart upload after which listing
+ * should begin. If key-marker is not specified, the upload-id-marker parameter is
+ * ignored. Otherwise, any multipart uploads for a key equal to the key-marker
+ * might be included in the list only if they have an upload ID lexicographically
+ * greater than the specified <code>upload-id-marker</code>.</p>
+ */
+ inline bool UploadIdMarkerHasBeenSet() const { return m_uploadIdMarkerHasBeenSet; }
+
+ /**
+ * <p>Together with key-marker, specifies the multipart upload after which listing
+ * should begin. If key-marker is not specified, the upload-id-marker parameter is
+ * ignored. Otherwise, any multipart uploads for a key equal to the key-marker
+ * might be included in the list only if they have an upload ID lexicographically
+ * greater than the specified <code>upload-id-marker</code>.</p>
+ */
+ inline void SetUploadIdMarker(const Aws::String& value) { m_uploadIdMarkerHasBeenSet = true; m_uploadIdMarker = value; }
+
+ /**
+ * <p>Together with key-marker, specifies the multipart upload after which listing
+ * should begin. If key-marker is not specified, the upload-id-marker parameter is
+ * ignored. Otherwise, any multipart uploads for a key equal to the key-marker
+ * might be included in the list only if they have an upload ID lexicographically
+ * greater than the specified <code>upload-id-marker</code>.</p>
+ */
+ inline void SetUploadIdMarker(Aws::String&& value) { m_uploadIdMarkerHasBeenSet = true; m_uploadIdMarker = std::move(value); }
+
+ /**
+ * <p>Together with key-marker, specifies the multipart upload after which listing
+ * should begin. If key-marker is not specified, the upload-id-marker parameter is
+ * ignored. Otherwise, any multipart uploads for a key equal to the key-marker
+ * might be included in the list only if they have an upload ID lexicographically
+ * greater than the specified <code>upload-id-marker</code>.</p>
+ */
+ inline void SetUploadIdMarker(const char* value) { m_uploadIdMarkerHasBeenSet = true; m_uploadIdMarker.assign(value); }
+
+ /**
+ * <p>Together with key-marker, specifies the multipart upload after which listing
+ * should begin. If key-marker is not specified, the upload-id-marker parameter is
+ * ignored. Otherwise, any multipart uploads for a key equal to the key-marker
+ * might be included in the list only if they have an upload ID lexicographically
+ * greater than the specified <code>upload-id-marker</code>.</p>
+ */
+ inline ListMultipartUploadsRequest& WithUploadIdMarker(const Aws::String& value) { SetUploadIdMarker(value); return *this;}
+
+ /**
+ * <p>Together with key-marker, specifies the multipart upload after which listing
+ * should begin. If key-marker is not specified, the upload-id-marker parameter is
+ * ignored. Otherwise, any multipart uploads for a key equal to the key-marker
+ * might be included in the list only if they have an upload ID lexicographically
+ * greater than the specified <code>upload-id-marker</code>.</p>
+ */
+ inline ListMultipartUploadsRequest& WithUploadIdMarker(Aws::String&& value) { SetUploadIdMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>Together with key-marker, specifies the multipart upload after which listing
+ * should begin. If key-marker is not specified, the upload-id-marker parameter is
+ * ignored. Otherwise, any multipart uploads for a key equal to the key-marker
+ * might be included in the list only if they have an upload ID lexicographically
+ * greater than the specified <code>upload-id-marker</code>.</p>
+ */
+ inline ListMultipartUploadsRequest& WithUploadIdMarker(const char* value) { SetUploadIdMarker(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListMultipartUploadsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListMultipartUploadsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListMultipartUploadsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline ListMultipartUploadsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline ListMultipartUploadsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline ListMultipartUploadsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline ListMultipartUploadsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListMultipartUploadsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListMultipartUploadsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline ListMultipartUploadsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListMultipartUploadsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListMultipartUploadsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_delimiter;
+ bool m_delimiterHasBeenSet;
+
+ EncodingType m_encodingType;
+ bool m_encodingTypeHasBeenSet;
+
+ Aws::String m_keyMarker;
+ bool m_keyMarkerHasBeenSet;
+
+ int m_maxUploads;
+ bool m_maxUploadsHasBeenSet;
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Aws::String m_uploadIdMarker;
+ bool m_uploadIdMarkerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListMultipartUploadsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListMultipartUploadsResult.h
new file mode 100644
index 00000000000..70cf65ba6d4
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListMultipartUploadsResult.h
@@ -0,0 +1,549 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/EncodingType.h>
+#include <aws/s3/model/MultipartUpload.h>
+#include <aws/s3/model/CommonPrefix.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListMultipartUploadsResult
+ {
+ public:
+ ListMultipartUploadsResult();
+ ListMultipartUploadsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListMultipartUploadsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline ListMultipartUploadsResult& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline ListMultipartUploadsResult& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline ListMultipartUploadsResult& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The key at or after which the listing began.</p>
+ */
+ inline const Aws::String& GetKeyMarker() const{ return m_keyMarker; }
+
+ /**
+ * <p>The key at or after which the listing began.</p>
+ */
+ inline void SetKeyMarker(const Aws::String& value) { m_keyMarker = value; }
+
+ /**
+ * <p>The key at or after which the listing began.</p>
+ */
+ inline void SetKeyMarker(Aws::String&& value) { m_keyMarker = std::move(value); }
+
+ /**
+ * <p>The key at or after which the listing began.</p>
+ */
+ inline void SetKeyMarker(const char* value) { m_keyMarker.assign(value); }
+
+ /**
+ * <p>The key at or after which the listing began.</p>
+ */
+ inline ListMultipartUploadsResult& WithKeyMarker(const Aws::String& value) { SetKeyMarker(value); return *this;}
+
+ /**
+ * <p>The key at or after which the listing began.</p>
+ */
+ inline ListMultipartUploadsResult& WithKeyMarker(Aws::String&& value) { SetKeyMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>The key at or after which the listing began.</p>
+ */
+ inline ListMultipartUploadsResult& WithKeyMarker(const char* value) { SetKeyMarker(value); return *this;}
+
+
+ /**
+ * <p>Upload ID after which listing began.</p>
+ */
+ inline const Aws::String& GetUploadIdMarker() const{ return m_uploadIdMarker; }
+
+ /**
+ * <p>Upload ID after which listing began.</p>
+ */
+ inline void SetUploadIdMarker(const Aws::String& value) { m_uploadIdMarker = value; }
+
+ /**
+ * <p>Upload ID after which listing began.</p>
+ */
+ inline void SetUploadIdMarker(Aws::String&& value) { m_uploadIdMarker = std::move(value); }
+
+ /**
+ * <p>Upload ID after which listing began.</p>
+ */
+ inline void SetUploadIdMarker(const char* value) { m_uploadIdMarker.assign(value); }
+
+ /**
+ * <p>Upload ID after which listing began.</p>
+ */
+ inline ListMultipartUploadsResult& WithUploadIdMarker(const Aws::String& value) { SetUploadIdMarker(value); return *this;}
+
+ /**
+ * <p>Upload ID after which listing began.</p>
+ */
+ inline ListMultipartUploadsResult& WithUploadIdMarker(Aws::String&& value) { SetUploadIdMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>Upload ID after which listing began.</p>
+ */
+ inline ListMultipartUploadsResult& WithUploadIdMarker(const char* value) { SetUploadIdMarker(value); return *this;}
+
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the key-marker request parameter in a subsequent request.</p>
+ */
+ inline const Aws::String& GetNextKeyMarker() const{ return m_nextKeyMarker; }
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the key-marker request parameter in a subsequent request.</p>
+ */
+ inline void SetNextKeyMarker(const Aws::String& value) { m_nextKeyMarker = value; }
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the key-marker request parameter in a subsequent request.</p>
+ */
+ inline void SetNextKeyMarker(Aws::String&& value) { m_nextKeyMarker = std::move(value); }
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the key-marker request parameter in a subsequent request.</p>
+ */
+ inline void SetNextKeyMarker(const char* value) { m_nextKeyMarker.assign(value); }
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the key-marker request parameter in a subsequent request.</p>
+ */
+ inline ListMultipartUploadsResult& WithNextKeyMarker(const Aws::String& value) { SetNextKeyMarker(value); return *this;}
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the key-marker request parameter in a subsequent request.</p>
+ */
+ inline ListMultipartUploadsResult& WithNextKeyMarker(Aws::String&& value) { SetNextKeyMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the key-marker request parameter in a subsequent request.</p>
+ */
+ inline ListMultipartUploadsResult& WithNextKeyMarker(const char* value) { SetNextKeyMarker(value); return *this;}
+
+
+ /**
+ * <p>When a prefix is provided in the request, this field contains the specified
+ * prefix. The result contains only keys starting with the specified prefix.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>When a prefix is provided in the request, this field contains the specified
+ * prefix. The result contains only keys starting with the specified prefix.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefix = value; }
+
+ /**
+ * <p>When a prefix is provided in the request, this field contains the specified
+ * prefix. The result contains only keys starting with the specified prefix.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefix = std::move(value); }
+
+ /**
+ * <p>When a prefix is provided in the request, this field contains the specified
+ * prefix. The result contains only keys starting with the specified prefix.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefix.assign(value); }
+
+ /**
+ * <p>When a prefix is provided in the request, this field contains the specified
+ * prefix. The result contains only keys starting with the specified prefix.</p>
+ */
+ inline ListMultipartUploadsResult& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>When a prefix is provided in the request, this field contains the specified
+ * prefix. The result contains only keys starting with the specified prefix.</p>
+ */
+ inline ListMultipartUploadsResult& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>When a prefix is provided in the request, this field contains the specified
+ * prefix. The result contains only keys starting with the specified prefix.</p>
+ */
+ inline ListMultipartUploadsResult& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>Contains the delimiter you specified in the request. If you don't specify a
+ * delimiter in your request, this element is absent from the response.</p>
+ */
+ inline const Aws::String& GetDelimiter() const{ return m_delimiter; }
+
+ /**
+ * <p>Contains the delimiter you specified in the request. If you don't specify a
+ * delimiter in your request, this element is absent from the response.</p>
+ */
+ inline void SetDelimiter(const Aws::String& value) { m_delimiter = value; }
+
+ /**
+ * <p>Contains the delimiter you specified in the request. If you don't specify a
+ * delimiter in your request, this element is absent from the response.</p>
+ */
+ inline void SetDelimiter(Aws::String&& value) { m_delimiter = std::move(value); }
+
+ /**
+ * <p>Contains the delimiter you specified in the request. If you don't specify a
+ * delimiter in your request, this element is absent from the response.</p>
+ */
+ inline void SetDelimiter(const char* value) { m_delimiter.assign(value); }
+
+ /**
+ * <p>Contains the delimiter you specified in the request. If you don't specify a
+ * delimiter in your request, this element is absent from the response.</p>
+ */
+ inline ListMultipartUploadsResult& WithDelimiter(const Aws::String& value) { SetDelimiter(value); return *this;}
+
+ /**
+ * <p>Contains the delimiter you specified in the request. If you don't specify a
+ * delimiter in your request, this element is absent from the response.</p>
+ */
+ inline ListMultipartUploadsResult& WithDelimiter(Aws::String&& value) { SetDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>Contains the delimiter you specified in the request. If you don't specify a
+ * delimiter in your request, this element is absent from the response.</p>
+ */
+ inline ListMultipartUploadsResult& WithDelimiter(const char* value) { SetDelimiter(value); return *this;}
+
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the <code>upload-id-marker</code> request parameter in a subsequent
+ * request.</p>
+ */
+ inline const Aws::String& GetNextUploadIdMarker() const{ return m_nextUploadIdMarker; }
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the <code>upload-id-marker</code> request parameter in a subsequent
+ * request.</p>
+ */
+ inline void SetNextUploadIdMarker(const Aws::String& value) { m_nextUploadIdMarker = value; }
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the <code>upload-id-marker</code> request parameter in a subsequent
+ * request.</p>
+ */
+ inline void SetNextUploadIdMarker(Aws::String&& value) { m_nextUploadIdMarker = std::move(value); }
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the <code>upload-id-marker</code> request parameter in a subsequent
+ * request.</p>
+ */
+ inline void SetNextUploadIdMarker(const char* value) { m_nextUploadIdMarker.assign(value); }
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the <code>upload-id-marker</code> request parameter in a subsequent
+ * request.</p>
+ */
+ inline ListMultipartUploadsResult& WithNextUploadIdMarker(const Aws::String& value) { SetNextUploadIdMarker(value); return *this;}
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the <code>upload-id-marker</code> request parameter in a subsequent
+ * request.</p>
+ */
+ inline ListMultipartUploadsResult& WithNextUploadIdMarker(Aws::String&& value) { SetNextUploadIdMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>When a list is truncated, this element specifies the value that should be
+ * used for the <code>upload-id-marker</code> request parameter in a subsequent
+ * request.</p>
+ */
+ inline ListMultipartUploadsResult& WithNextUploadIdMarker(const char* value) { SetNextUploadIdMarker(value); return *this;}
+
+
+ /**
+ * <p>Maximum number of multipart uploads that could have been included in the
+ * response.</p>
+ */
+ inline int GetMaxUploads() const{ return m_maxUploads; }
+
+ /**
+ * <p>Maximum number of multipart uploads that could have been included in the
+ * response.</p>
+ */
+ inline void SetMaxUploads(int value) { m_maxUploads = value; }
+
+ /**
+ * <p>Maximum number of multipart uploads that could have been included in the
+ * response.</p>
+ */
+ inline ListMultipartUploadsResult& WithMaxUploads(int value) { SetMaxUploads(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether the returned list of multipart uploads is truncated. A
+ * value of true indicates that the list was truncated. The list can be truncated
+ * if the number of multipart uploads exceeds the limit allowed or specified by max
+ * uploads.</p>
+ */
+ inline bool GetIsTruncated() const{ return m_isTruncated; }
+
+ /**
+ * <p>Indicates whether the returned list of multipart uploads is truncated. A
+ * value of true indicates that the list was truncated. The list can be truncated
+ * if the number of multipart uploads exceeds the limit allowed or specified by max
+ * uploads.</p>
+ */
+ inline void SetIsTruncated(bool value) { m_isTruncated = value; }
+
+ /**
+ * <p>Indicates whether the returned list of multipart uploads is truncated. A
+ * value of true indicates that the list was truncated. The list can be truncated
+ * if the number of multipart uploads exceeds the limit allowed or specified by max
+ * uploads.</p>
+ */
+ inline ListMultipartUploadsResult& WithIsTruncated(bool value) { SetIsTruncated(value); return *this;}
+
+
+ /**
+ * <p>Container for elements related to a particular multipart upload. A response
+ * can contain zero or more <code>Upload</code> elements.</p>
+ */
+ inline const Aws::Vector<MultipartUpload>& GetUploads() const{ return m_uploads; }
+
+ /**
+ * <p>Container for elements related to a particular multipart upload. A response
+ * can contain zero or more <code>Upload</code> elements.</p>
+ */
+ inline void SetUploads(const Aws::Vector<MultipartUpload>& value) { m_uploads = value; }
+
+ /**
+ * <p>Container for elements related to a particular multipart upload. A response
+ * can contain zero or more <code>Upload</code> elements.</p>
+ */
+ inline void SetUploads(Aws::Vector<MultipartUpload>&& value) { m_uploads = std::move(value); }
+
+ /**
+ * <p>Container for elements related to a particular multipart upload. A response
+ * can contain zero or more <code>Upload</code> elements.</p>
+ */
+ inline ListMultipartUploadsResult& WithUploads(const Aws::Vector<MultipartUpload>& value) { SetUploads(value); return *this;}
+
+ /**
+ * <p>Container for elements related to a particular multipart upload. A response
+ * can contain zero or more <code>Upload</code> elements.</p>
+ */
+ inline ListMultipartUploadsResult& WithUploads(Aws::Vector<MultipartUpload>&& value) { SetUploads(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for elements related to a particular multipart upload. A response
+ * can contain zero or more <code>Upload</code> elements.</p>
+ */
+ inline ListMultipartUploadsResult& AddUploads(const MultipartUpload& value) { m_uploads.push_back(value); return *this; }
+
+ /**
+ * <p>Container for elements related to a particular multipart upload. A response
+ * can contain zero or more <code>Upload</code> elements.</p>
+ */
+ inline ListMultipartUploadsResult& AddUploads(MultipartUpload&& value) { m_uploads.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>If you specify a delimiter in the request, then the result returns each
+ * distinct key prefix containing the delimiter in a <code>CommonPrefixes</code>
+ * element. The distinct key prefixes are returned in the <code>Prefix</code> child
+ * element.</p>
+ */
+ inline const Aws::Vector<CommonPrefix>& GetCommonPrefixes() const{ return m_commonPrefixes; }
+
+ /**
+ * <p>If you specify a delimiter in the request, then the result returns each
+ * distinct key prefix containing the delimiter in a <code>CommonPrefixes</code>
+ * element. The distinct key prefixes are returned in the <code>Prefix</code> child
+ * element.</p>
+ */
+ inline void SetCommonPrefixes(const Aws::Vector<CommonPrefix>& value) { m_commonPrefixes = value; }
+
+ /**
+ * <p>If you specify a delimiter in the request, then the result returns each
+ * distinct key prefix containing the delimiter in a <code>CommonPrefixes</code>
+ * element. The distinct key prefixes are returned in the <code>Prefix</code> child
+ * element.</p>
+ */
+ inline void SetCommonPrefixes(Aws::Vector<CommonPrefix>&& value) { m_commonPrefixes = std::move(value); }
+
+ /**
+ * <p>If you specify a delimiter in the request, then the result returns each
+ * distinct key prefix containing the delimiter in a <code>CommonPrefixes</code>
+ * element. The distinct key prefixes are returned in the <code>Prefix</code> child
+ * element.</p>
+ */
+ inline ListMultipartUploadsResult& WithCommonPrefixes(const Aws::Vector<CommonPrefix>& value) { SetCommonPrefixes(value); return *this;}
+
+ /**
+ * <p>If you specify a delimiter in the request, then the result returns each
+ * distinct key prefix containing the delimiter in a <code>CommonPrefixes</code>
+ * element. The distinct key prefixes are returned in the <code>Prefix</code> child
+ * element.</p>
+ */
+ inline ListMultipartUploadsResult& WithCommonPrefixes(Aws::Vector<CommonPrefix>&& value) { SetCommonPrefixes(std::move(value)); return *this;}
+
+ /**
+ * <p>If you specify a delimiter in the request, then the result returns each
+ * distinct key prefix containing the delimiter in a <code>CommonPrefixes</code>
+ * element. The distinct key prefixes are returned in the <code>Prefix</code> child
+ * element.</p>
+ */
+ inline ListMultipartUploadsResult& AddCommonPrefixes(const CommonPrefix& value) { m_commonPrefixes.push_back(value); return *this; }
+
+ /**
+ * <p>If you specify a delimiter in the request, then the result returns each
+ * distinct key prefix containing the delimiter in a <code>CommonPrefixes</code>
+ * element. The distinct key prefixes are returned in the <code>Prefix</code> child
+ * element.</p>
+ */
+ inline ListMultipartUploadsResult& AddCommonPrefixes(CommonPrefix&& value) { m_commonPrefixes.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ * <p>If you specify <code>encoding-type</code> request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter</code>,
+ * <code>KeyMarker</code>, <code>Prefix</code>, <code>NextKeyMarker</code>,
+ * <code>Key</code>.</p>
+ */
+ inline const EncodingType& GetEncodingType() const{ return m_encodingType; }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ * <p>If you specify <code>encoding-type</code> request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter</code>,
+ * <code>KeyMarker</code>, <code>Prefix</code>, <code>NextKeyMarker</code>,
+ * <code>Key</code>.</p>
+ */
+ inline void SetEncodingType(const EncodingType& value) { m_encodingType = value; }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ * <p>If you specify <code>encoding-type</code> request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter</code>,
+ * <code>KeyMarker</code>, <code>Prefix</code>, <code>NextKeyMarker</code>,
+ * <code>Key</code>.</p>
+ */
+ inline void SetEncodingType(EncodingType&& value) { m_encodingType = std::move(value); }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ * <p>If you specify <code>encoding-type</code> request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter</code>,
+ * <code>KeyMarker</code>, <code>Prefix</code>, <code>NextKeyMarker</code>,
+ * <code>Key</code>.</p>
+ */
+ inline ListMultipartUploadsResult& WithEncodingType(const EncodingType& value) { SetEncodingType(value); return *this;}
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ * <p>If you specify <code>encoding-type</code> request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter</code>,
+ * <code>KeyMarker</code>, <code>Prefix</code>, <code>NextKeyMarker</code>,
+ * <code>Key</code>.</p>
+ */
+ inline ListMultipartUploadsResult& WithEncodingType(EncodingType&& value) { SetEncodingType(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_bucket;
+
+ Aws::String m_keyMarker;
+
+ Aws::String m_uploadIdMarker;
+
+ Aws::String m_nextKeyMarker;
+
+ Aws::String m_prefix;
+
+ Aws::String m_delimiter;
+
+ Aws::String m_nextUploadIdMarker;
+
+ int m_maxUploads;
+
+ bool m_isTruncated;
+
+ Aws::Vector<MultipartUpload> m_uploads;
+
+ Aws::Vector<CommonPrefix> m_commonPrefixes;
+
+ EncodingType m_encodingType;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectVersionsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectVersionsRequest.h
new file mode 100644
index 00000000000..652fe1c89c6
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectVersionsRequest.h
@@ -0,0 +1,502 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/EncodingType.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API ListObjectVersionsRequest : public S3Request
+ {
+ public:
+ ListObjectVersionsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "ListObjectVersions"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name that contains the objects. </p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name that contains the objects. </p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name that contains the objects. </p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name that contains the objects. </p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name that contains the objects. </p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name that contains the objects. </p>
+ */
+ inline ListObjectVersionsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name that contains the objects. </p>
+ */
+ inline ListObjectVersionsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name that contains the objects. </p>
+ */
+ inline ListObjectVersionsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>A delimiter is a character that you specify to group keys. All keys that
+ * contain the same string between the <code>prefix</code> and the first occurrence
+ * of the delimiter are grouped under a single result element in CommonPrefixes.
+ * These groups are counted as one result against the max-keys limitation. These
+ * keys are not returned elsewhere in the response.</p>
+ */
+ inline const Aws::String& GetDelimiter() const{ return m_delimiter; }
+
+ /**
+ * <p>A delimiter is a character that you specify to group keys. All keys that
+ * contain the same string between the <code>prefix</code> and the first occurrence
+ * of the delimiter are grouped under a single result element in CommonPrefixes.
+ * These groups are counted as one result against the max-keys limitation. These
+ * keys are not returned elsewhere in the response.</p>
+ */
+ inline bool DelimiterHasBeenSet() const { return m_delimiterHasBeenSet; }
+
+ /**
+ * <p>A delimiter is a character that you specify to group keys. All keys that
+ * contain the same string between the <code>prefix</code> and the first occurrence
+ * of the delimiter are grouped under a single result element in CommonPrefixes.
+ * These groups are counted as one result against the max-keys limitation. These
+ * keys are not returned elsewhere in the response.</p>
+ */
+ inline void SetDelimiter(const Aws::String& value) { m_delimiterHasBeenSet = true; m_delimiter = value; }
+
+ /**
+ * <p>A delimiter is a character that you specify to group keys. All keys that
+ * contain the same string between the <code>prefix</code> and the first occurrence
+ * of the delimiter are grouped under a single result element in CommonPrefixes.
+ * These groups are counted as one result against the max-keys limitation. These
+ * keys are not returned elsewhere in the response.</p>
+ */
+ inline void SetDelimiter(Aws::String&& value) { m_delimiterHasBeenSet = true; m_delimiter = std::move(value); }
+
+ /**
+ * <p>A delimiter is a character that you specify to group keys. All keys that
+ * contain the same string between the <code>prefix</code> and the first occurrence
+ * of the delimiter are grouped under a single result element in CommonPrefixes.
+ * These groups are counted as one result against the max-keys limitation. These
+ * keys are not returned elsewhere in the response.</p>
+ */
+ inline void SetDelimiter(const char* value) { m_delimiterHasBeenSet = true; m_delimiter.assign(value); }
+
+ /**
+ * <p>A delimiter is a character that you specify to group keys. All keys that
+ * contain the same string between the <code>prefix</code> and the first occurrence
+ * of the delimiter are grouped under a single result element in CommonPrefixes.
+ * These groups are counted as one result against the max-keys limitation. These
+ * keys are not returned elsewhere in the response.</p>
+ */
+ inline ListObjectVersionsRequest& WithDelimiter(const Aws::String& value) { SetDelimiter(value); return *this;}
+
+ /**
+ * <p>A delimiter is a character that you specify to group keys. All keys that
+ * contain the same string between the <code>prefix</code> and the first occurrence
+ * of the delimiter are grouped under a single result element in CommonPrefixes.
+ * These groups are counted as one result against the max-keys limitation. These
+ * keys are not returned elsewhere in the response.</p>
+ */
+ inline ListObjectVersionsRequest& WithDelimiter(Aws::String&& value) { SetDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>A delimiter is a character that you specify to group keys. All keys that
+ * contain the same string between the <code>prefix</code> and the first occurrence
+ * of the delimiter are grouped under a single result element in CommonPrefixes.
+ * These groups are counted as one result against the max-keys limitation. These
+ * keys are not returned elsewhere in the response.</p>
+ */
+ inline ListObjectVersionsRequest& WithDelimiter(const char* value) { SetDelimiter(value); return *this;}
+
+
+
+ inline const EncodingType& GetEncodingType() const{ return m_encodingType; }
+
+
+ inline bool EncodingTypeHasBeenSet() const { return m_encodingTypeHasBeenSet; }
+
+
+ inline void SetEncodingType(const EncodingType& value) { m_encodingTypeHasBeenSet = true; m_encodingType = value; }
+
+
+ inline void SetEncodingType(EncodingType&& value) { m_encodingTypeHasBeenSet = true; m_encodingType = std::move(value); }
+
+
+ inline ListObjectVersionsRequest& WithEncodingType(const EncodingType& value) { SetEncodingType(value); return *this;}
+
+
+ inline ListObjectVersionsRequest& WithEncodingType(EncodingType&& value) { SetEncodingType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline const Aws::String& GetKeyMarker() const{ return m_keyMarker; }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline bool KeyMarkerHasBeenSet() const { return m_keyMarkerHasBeenSet; }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline void SetKeyMarker(const Aws::String& value) { m_keyMarkerHasBeenSet = true; m_keyMarker = value; }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline void SetKeyMarker(Aws::String&& value) { m_keyMarkerHasBeenSet = true; m_keyMarker = std::move(value); }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline void SetKeyMarker(const char* value) { m_keyMarkerHasBeenSet = true; m_keyMarker.assign(value); }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline ListObjectVersionsRequest& WithKeyMarker(const Aws::String& value) { SetKeyMarker(value); return *this;}
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline ListObjectVersionsRequest& WithKeyMarker(Aws::String&& value) { SetKeyMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline ListObjectVersionsRequest& WithKeyMarker(const char* value) { SetKeyMarker(value); return *this;}
+
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more. If additional keys satisfy the search criteria, but were not
+ * returned because max-keys was exceeded, the response contains
+ * &lt;isTruncated&gt;true&lt;/isTruncated&gt;. To return the additional keys, see
+ * key-marker and version-id-marker.</p>
+ */
+ inline int GetMaxKeys() const{ return m_maxKeys; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more. If additional keys satisfy the search criteria, but were not
+ * returned because max-keys was exceeded, the response contains
+ * &lt;isTruncated&gt;true&lt;/isTruncated&gt;. To return the additional keys, see
+ * key-marker and version-id-marker.</p>
+ */
+ inline bool MaxKeysHasBeenSet() const { return m_maxKeysHasBeenSet; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more. If additional keys satisfy the search criteria, but were not
+ * returned because max-keys was exceeded, the response contains
+ * &lt;isTruncated&gt;true&lt;/isTruncated&gt;. To return the additional keys, see
+ * key-marker and version-id-marker.</p>
+ */
+ inline void SetMaxKeys(int value) { m_maxKeysHasBeenSet = true; m_maxKeys = value; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more. If additional keys satisfy the search criteria, but were not
+ * returned because max-keys was exceeded, the response contains
+ * &lt;isTruncated&gt;true&lt;/isTruncated&gt;. To return the additional keys, see
+ * key-marker and version-id-marker.</p>
+ */
+ inline ListObjectVersionsRequest& WithMaxKeys(int value) { SetMaxKeys(value); return *this;}
+
+
+ /**
+ * <p>Use this parameter to select only those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different groupings of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.) You can use prefix with delimiter to roll up numerous
+ * objects into a single result under CommonPrefixes. </p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Use this parameter to select only those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different groupings of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.) You can use prefix with delimiter to roll up numerous
+ * objects into a single result under CommonPrefixes. </p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>Use this parameter to select only those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different groupings of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.) You can use prefix with delimiter to roll up numerous
+ * objects into a single result under CommonPrefixes. </p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>Use this parameter to select only those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different groupings of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.) You can use prefix with delimiter to roll up numerous
+ * objects into a single result under CommonPrefixes. </p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>Use this parameter to select only those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different groupings of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.) You can use prefix with delimiter to roll up numerous
+ * objects into a single result under CommonPrefixes. </p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>Use this parameter to select only those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different groupings of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.) You can use prefix with delimiter to roll up numerous
+ * objects into a single result under CommonPrefixes. </p>
+ */
+ inline ListObjectVersionsRequest& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Use this parameter to select only those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different groupings of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.) You can use prefix with delimiter to roll up numerous
+ * objects into a single result under CommonPrefixes. </p>
+ */
+ inline ListObjectVersionsRequest& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Use this parameter to select only those keys that begin with the specified
+ * prefix. You can use prefixes to separate a bucket into different groupings of
+ * keys. (You can think of using prefix to make groups in the same way you'd use a
+ * folder in a file system.) You can use prefix with delimiter to roll up numerous
+ * objects into a single result under CommonPrefixes. </p>
+ */
+ inline ListObjectVersionsRequest& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>Specifies the object version you want to start listing from.</p>
+ */
+ inline const Aws::String& GetVersionIdMarker() const{ return m_versionIdMarker; }
+
+ /**
+ * <p>Specifies the object version you want to start listing from.</p>
+ */
+ inline bool VersionIdMarkerHasBeenSet() const { return m_versionIdMarkerHasBeenSet; }
+
+ /**
+ * <p>Specifies the object version you want to start listing from.</p>
+ */
+ inline void SetVersionIdMarker(const Aws::String& value) { m_versionIdMarkerHasBeenSet = true; m_versionIdMarker = value; }
+
+ /**
+ * <p>Specifies the object version you want to start listing from.</p>
+ */
+ inline void SetVersionIdMarker(Aws::String&& value) { m_versionIdMarkerHasBeenSet = true; m_versionIdMarker = std::move(value); }
+
+ /**
+ * <p>Specifies the object version you want to start listing from.</p>
+ */
+ inline void SetVersionIdMarker(const char* value) { m_versionIdMarkerHasBeenSet = true; m_versionIdMarker.assign(value); }
+
+ /**
+ * <p>Specifies the object version you want to start listing from.</p>
+ */
+ inline ListObjectVersionsRequest& WithVersionIdMarker(const Aws::String& value) { SetVersionIdMarker(value); return *this;}
+
+ /**
+ * <p>Specifies the object version you want to start listing from.</p>
+ */
+ inline ListObjectVersionsRequest& WithVersionIdMarker(Aws::String&& value) { SetVersionIdMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the object version you want to start listing from.</p>
+ */
+ inline ListObjectVersionsRequest& WithVersionIdMarker(const char* value) { SetVersionIdMarker(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListObjectVersionsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListObjectVersionsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListObjectVersionsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline ListObjectVersionsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline ListObjectVersionsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline ListObjectVersionsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline ListObjectVersionsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListObjectVersionsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListObjectVersionsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline ListObjectVersionsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListObjectVersionsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListObjectVersionsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_delimiter;
+ bool m_delimiterHasBeenSet;
+
+ EncodingType m_encodingType;
+ bool m_encodingTypeHasBeenSet;
+
+ Aws::String m_keyMarker;
+ bool m_keyMarkerHasBeenSet;
+
+ int m_maxKeys;
+ bool m_maxKeysHasBeenSet;
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Aws::String m_versionIdMarker;
+ bool m_versionIdMarkerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectVersionsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectVersionsResult.h
new file mode 100644
index 00000000000..20909af4ad1
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectVersionsResult.h
@@ -0,0 +1,604 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/EncodingType.h>
+#include <aws/s3/model/ObjectVersion.h>
+#include <aws/s3/model/DeleteMarkerEntry.h>
+#include <aws/s3/model/CommonPrefix.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListObjectVersionsResult
+ {
+ public:
+ ListObjectVersionsResult();
+ ListObjectVersionsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListObjectVersionsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>A flag that indicates whether Amazon S3 returned all of the results that
+ * satisfied the search criteria. If your results were truncated, you can make a
+ * follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
+ * response parameters as a starting place in another request to return the rest of
+ * the results.</p>
+ */
+ inline bool GetIsTruncated() const{ return m_isTruncated; }
+
+ /**
+ * <p>A flag that indicates whether Amazon S3 returned all of the results that
+ * satisfied the search criteria. If your results were truncated, you can make a
+ * follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
+ * response parameters as a starting place in another request to return the rest of
+ * the results.</p>
+ */
+ inline void SetIsTruncated(bool value) { m_isTruncated = value; }
+
+ /**
+ * <p>A flag that indicates whether Amazon S3 returned all of the results that
+ * satisfied the search criteria. If your results were truncated, you can make a
+ * follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
+ * response parameters as a starting place in another request to return the rest of
+ * the results.</p>
+ */
+ inline ListObjectVersionsResult& WithIsTruncated(bool value) { SetIsTruncated(value); return *this;}
+
+
+ /**
+ * <p>Marks the last key returned in a truncated response.</p>
+ */
+ inline const Aws::String& GetKeyMarker() const{ return m_keyMarker; }
+
+ /**
+ * <p>Marks the last key returned in a truncated response.</p>
+ */
+ inline void SetKeyMarker(const Aws::String& value) { m_keyMarker = value; }
+
+ /**
+ * <p>Marks the last key returned in a truncated response.</p>
+ */
+ inline void SetKeyMarker(Aws::String&& value) { m_keyMarker = std::move(value); }
+
+ /**
+ * <p>Marks the last key returned in a truncated response.</p>
+ */
+ inline void SetKeyMarker(const char* value) { m_keyMarker.assign(value); }
+
+ /**
+ * <p>Marks the last key returned in a truncated response.</p>
+ */
+ inline ListObjectVersionsResult& WithKeyMarker(const Aws::String& value) { SetKeyMarker(value); return *this;}
+
+ /**
+ * <p>Marks the last key returned in a truncated response.</p>
+ */
+ inline ListObjectVersionsResult& WithKeyMarker(Aws::String&& value) { SetKeyMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>Marks the last key returned in a truncated response.</p>
+ */
+ inline ListObjectVersionsResult& WithKeyMarker(const char* value) { SetKeyMarker(value); return *this;}
+
+
+ /**
+ * <p>Marks the last version of the key returned in a truncated response.</p>
+ */
+ inline const Aws::String& GetVersionIdMarker() const{ return m_versionIdMarker; }
+
+ /**
+ * <p>Marks the last version of the key returned in a truncated response.</p>
+ */
+ inline void SetVersionIdMarker(const Aws::String& value) { m_versionIdMarker = value; }
+
+ /**
+ * <p>Marks the last version of the key returned in a truncated response.</p>
+ */
+ inline void SetVersionIdMarker(Aws::String&& value) { m_versionIdMarker = std::move(value); }
+
+ /**
+ * <p>Marks the last version of the key returned in a truncated response.</p>
+ */
+ inline void SetVersionIdMarker(const char* value) { m_versionIdMarker.assign(value); }
+
+ /**
+ * <p>Marks the last version of the key returned in a truncated response.</p>
+ */
+ inline ListObjectVersionsResult& WithVersionIdMarker(const Aws::String& value) { SetVersionIdMarker(value); return *this;}
+
+ /**
+ * <p>Marks the last version of the key returned in a truncated response.</p>
+ */
+ inline ListObjectVersionsResult& WithVersionIdMarker(Aws::String&& value) { SetVersionIdMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>Marks the last version of the key returned in a truncated response.</p>
+ */
+ inline ListObjectVersionsResult& WithVersionIdMarker(const char* value) { SetVersionIdMarker(value); return *this;}
+
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextKeyMarker</code> specifies the first key not returned that satisfies
+ * the search criteria. Use this value for the key-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline const Aws::String& GetNextKeyMarker() const{ return m_nextKeyMarker; }
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextKeyMarker</code> specifies the first key not returned that satisfies
+ * the search criteria. Use this value for the key-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline void SetNextKeyMarker(const Aws::String& value) { m_nextKeyMarker = value; }
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextKeyMarker</code> specifies the first key not returned that satisfies
+ * the search criteria. Use this value for the key-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline void SetNextKeyMarker(Aws::String&& value) { m_nextKeyMarker = std::move(value); }
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextKeyMarker</code> specifies the first key not returned that satisfies
+ * the search criteria. Use this value for the key-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline void SetNextKeyMarker(const char* value) { m_nextKeyMarker.assign(value); }
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextKeyMarker</code> specifies the first key not returned that satisfies
+ * the search criteria. Use this value for the key-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline ListObjectVersionsResult& WithNextKeyMarker(const Aws::String& value) { SetNextKeyMarker(value); return *this;}
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextKeyMarker</code> specifies the first key not returned that satisfies
+ * the search criteria. Use this value for the key-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline ListObjectVersionsResult& WithNextKeyMarker(Aws::String&& value) { SetNextKeyMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextKeyMarker</code> specifies the first key not returned that satisfies
+ * the search criteria. Use this value for the key-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline ListObjectVersionsResult& WithNextKeyMarker(const char* value) { SetNextKeyMarker(value); return *this;}
+
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextVersionIdMarker</code> specifies the first object version not returned
+ * that satisfies the search criteria. Use this value for the version-id-marker
+ * request parameter in a subsequent request.</p>
+ */
+ inline const Aws::String& GetNextVersionIdMarker() const{ return m_nextVersionIdMarker; }
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextVersionIdMarker</code> specifies the first object version not returned
+ * that satisfies the search criteria. Use this value for the version-id-marker
+ * request parameter in a subsequent request.</p>
+ */
+ inline void SetNextVersionIdMarker(const Aws::String& value) { m_nextVersionIdMarker = value; }
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextVersionIdMarker</code> specifies the first object version not returned
+ * that satisfies the search criteria. Use this value for the version-id-marker
+ * request parameter in a subsequent request.</p>
+ */
+ inline void SetNextVersionIdMarker(Aws::String&& value) { m_nextVersionIdMarker = std::move(value); }
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextVersionIdMarker</code> specifies the first object version not returned
+ * that satisfies the search criteria. Use this value for the version-id-marker
+ * request parameter in a subsequent request.</p>
+ */
+ inline void SetNextVersionIdMarker(const char* value) { m_nextVersionIdMarker.assign(value); }
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextVersionIdMarker</code> specifies the first object version not returned
+ * that satisfies the search criteria. Use this value for the version-id-marker
+ * request parameter in a subsequent request.</p>
+ */
+ inline ListObjectVersionsResult& WithNextVersionIdMarker(const Aws::String& value) { SetNextVersionIdMarker(value); return *this;}
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextVersionIdMarker</code> specifies the first object version not returned
+ * that satisfies the search criteria. Use this value for the version-id-marker
+ * request parameter in a subsequent request.</p>
+ */
+ inline ListObjectVersionsResult& WithNextVersionIdMarker(Aws::String&& value) { SetNextVersionIdMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>When the number of responses exceeds the value of <code>MaxKeys</code>,
+ * <code>NextVersionIdMarker</code> specifies the first object version not returned
+ * that satisfies the search criteria. Use this value for the version-id-marker
+ * request parameter in a subsequent request.</p>
+ */
+ inline ListObjectVersionsResult& WithNextVersionIdMarker(const char* value) { SetNextVersionIdMarker(value); return *this;}
+
+
+ /**
+ * <p>Container for version information.</p>
+ */
+ inline const Aws::Vector<ObjectVersion>& GetVersions() const{ return m_versions; }
+
+ /**
+ * <p>Container for version information.</p>
+ */
+ inline void SetVersions(const Aws::Vector<ObjectVersion>& value) { m_versions = value; }
+
+ /**
+ * <p>Container for version information.</p>
+ */
+ inline void SetVersions(Aws::Vector<ObjectVersion>&& value) { m_versions = std::move(value); }
+
+ /**
+ * <p>Container for version information.</p>
+ */
+ inline ListObjectVersionsResult& WithVersions(const Aws::Vector<ObjectVersion>& value) { SetVersions(value); return *this;}
+
+ /**
+ * <p>Container for version information.</p>
+ */
+ inline ListObjectVersionsResult& WithVersions(Aws::Vector<ObjectVersion>&& value) { SetVersions(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for version information.</p>
+ */
+ inline ListObjectVersionsResult& AddVersions(const ObjectVersion& value) { m_versions.push_back(value); return *this; }
+
+ /**
+ * <p>Container for version information.</p>
+ */
+ inline ListObjectVersionsResult& AddVersions(ObjectVersion&& value) { m_versions.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Container for an object that is a delete marker.</p>
+ */
+ inline const Aws::Vector<DeleteMarkerEntry>& GetDeleteMarkers() const{ return m_deleteMarkers; }
+
+ /**
+ * <p>Container for an object that is a delete marker.</p>
+ */
+ inline void SetDeleteMarkers(const Aws::Vector<DeleteMarkerEntry>& value) { m_deleteMarkers = value; }
+
+ /**
+ * <p>Container for an object that is a delete marker.</p>
+ */
+ inline void SetDeleteMarkers(Aws::Vector<DeleteMarkerEntry>&& value) { m_deleteMarkers = std::move(value); }
+
+ /**
+ * <p>Container for an object that is a delete marker.</p>
+ */
+ inline ListObjectVersionsResult& WithDeleteMarkers(const Aws::Vector<DeleteMarkerEntry>& value) { SetDeleteMarkers(value); return *this;}
+
+ /**
+ * <p>Container for an object that is a delete marker.</p>
+ */
+ inline ListObjectVersionsResult& WithDeleteMarkers(Aws::Vector<DeleteMarkerEntry>&& value) { SetDeleteMarkers(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for an object that is a delete marker.</p>
+ */
+ inline ListObjectVersionsResult& AddDeleteMarkers(const DeleteMarkerEntry& value) { m_deleteMarkers.push_back(value); return *this; }
+
+ /**
+ * <p>Container for an object that is a delete marker.</p>
+ */
+ inline ListObjectVersionsResult& AddDeleteMarkers(DeleteMarkerEntry&& value) { m_deleteMarkers.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline const Aws::String& GetName() const{ return m_name; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetName(const Aws::String& value) { m_name = value; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetName(Aws::String&& value) { m_name = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetName(const char* value) { m_name.assign(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline ListObjectVersionsResult& WithName(const Aws::String& value) { SetName(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline ListObjectVersionsResult& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline ListObjectVersionsResult& WithName(const char* value) { SetName(value); return *this;}
+
+
+ /**
+ * <p>Selects objects that start with the value supplied by this parameter.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Selects objects that start with the value supplied by this parameter.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefix = value; }
+
+ /**
+ * <p>Selects objects that start with the value supplied by this parameter.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefix = std::move(value); }
+
+ /**
+ * <p>Selects objects that start with the value supplied by this parameter.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefix.assign(value); }
+
+ /**
+ * <p>Selects objects that start with the value supplied by this parameter.</p>
+ */
+ inline ListObjectVersionsResult& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Selects objects that start with the value supplied by this parameter.</p>
+ */
+ inline ListObjectVersionsResult& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Selects objects that start with the value supplied by this parameter.</p>
+ */
+ inline ListObjectVersionsResult& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>The delimiter grouping the included keys. A delimiter is a character that you
+ * specify to group keys. All keys that contain the same string between the prefix
+ * and the first occurrence of the delimiter are grouped under a single result
+ * element in <code>CommonPrefixes</code>. These groups are counted as one result
+ * against the max-keys limitation. These keys are not returned elsewhere in the
+ * response.</p>
+ */
+ inline const Aws::String& GetDelimiter() const{ return m_delimiter; }
+
+ /**
+ * <p>The delimiter grouping the included keys. A delimiter is a character that you
+ * specify to group keys. All keys that contain the same string between the prefix
+ * and the first occurrence of the delimiter are grouped under a single result
+ * element in <code>CommonPrefixes</code>. These groups are counted as one result
+ * against the max-keys limitation. These keys are not returned elsewhere in the
+ * response.</p>
+ */
+ inline void SetDelimiter(const Aws::String& value) { m_delimiter = value; }
+
+ /**
+ * <p>The delimiter grouping the included keys. A delimiter is a character that you
+ * specify to group keys. All keys that contain the same string between the prefix
+ * and the first occurrence of the delimiter are grouped under a single result
+ * element in <code>CommonPrefixes</code>. These groups are counted as one result
+ * against the max-keys limitation. These keys are not returned elsewhere in the
+ * response.</p>
+ */
+ inline void SetDelimiter(Aws::String&& value) { m_delimiter = std::move(value); }
+
+ /**
+ * <p>The delimiter grouping the included keys. A delimiter is a character that you
+ * specify to group keys. All keys that contain the same string between the prefix
+ * and the first occurrence of the delimiter are grouped under a single result
+ * element in <code>CommonPrefixes</code>. These groups are counted as one result
+ * against the max-keys limitation. These keys are not returned elsewhere in the
+ * response.</p>
+ */
+ inline void SetDelimiter(const char* value) { m_delimiter.assign(value); }
+
+ /**
+ * <p>The delimiter grouping the included keys. A delimiter is a character that you
+ * specify to group keys. All keys that contain the same string between the prefix
+ * and the first occurrence of the delimiter are grouped under a single result
+ * element in <code>CommonPrefixes</code>. These groups are counted as one result
+ * against the max-keys limitation. These keys are not returned elsewhere in the
+ * response.</p>
+ */
+ inline ListObjectVersionsResult& WithDelimiter(const Aws::String& value) { SetDelimiter(value); return *this;}
+
+ /**
+ * <p>The delimiter grouping the included keys. A delimiter is a character that you
+ * specify to group keys. All keys that contain the same string between the prefix
+ * and the first occurrence of the delimiter are grouped under a single result
+ * element in <code>CommonPrefixes</code>. These groups are counted as one result
+ * against the max-keys limitation. These keys are not returned elsewhere in the
+ * response.</p>
+ */
+ inline ListObjectVersionsResult& WithDelimiter(Aws::String&& value) { SetDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>The delimiter grouping the included keys. A delimiter is a character that you
+ * specify to group keys. All keys that contain the same string between the prefix
+ * and the first occurrence of the delimiter are grouped under a single result
+ * element in <code>CommonPrefixes</code>. These groups are counted as one result
+ * against the max-keys limitation. These keys are not returned elsewhere in the
+ * response.</p>
+ */
+ inline ListObjectVersionsResult& WithDelimiter(const char* value) { SetDelimiter(value); return *this;}
+
+
+ /**
+ * <p>Specifies the maximum number of objects to return.</p>
+ */
+ inline int GetMaxKeys() const{ return m_maxKeys; }
+
+ /**
+ * <p>Specifies the maximum number of objects to return.</p>
+ */
+ inline void SetMaxKeys(int value) { m_maxKeys = value; }
+
+ /**
+ * <p>Specifies the maximum number of objects to return.</p>
+ */
+ inline ListObjectVersionsResult& WithMaxKeys(int value) { SetMaxKeys(value); return *this;}
+
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p>
+ */
+ inline const Aws::Vector<CommonPrefix>& GetCommonPrefixes() const{ return m_commonPrefixes; }
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p>
+ */
+ inline void SetCommonPrefixes(const Aws::Vector<CommonPrefix>& value) { m_commonPrefixes = value; }
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p>
+ */
+ inline void SetCommonPrefixes(Aws::Vector<CommonPrefix>&& value) { m_commonPrefixes = std::move(value); }
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p>
+ */
+ inline ListObjectVersionsResult& WithCommonPrefixes(const Aws::Vector<CommonPrefix>& value) { SetCommonPrefixes(value); return *this;}
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p>
+ */
+ inline ListObjectVersionsResult& WithCommonPrefixes(Aws::Vector<CommonPrefix>&& value) { SetCommonPrefixes(std::move(value)); return *this;}
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p>
+ */
+ inline ListObjectVersionsResult& AddCommonPrefixes(const CommonPrefix& value) { m_commonPrefixes.push_back(value); return *this; }
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p>
+ */
+ inline ListObjectVersionsResult& AddCommonPrefixes(CommonPrefix&& value) { m_commonPrefixes.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p> Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>KeyMarker, NextKeyMarker, Prefix,
+ * Key</code>, and <code>Delimiter</code>.</p>
+ */
+ inline const EncodingType& GetEncodingType() const{ return m_encodingType; }
+
+ /**
+ * <p> Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>KeyMarker, NextKeyMarker, Prefix,
+ * Key</code>, and <code>Delimiter</code>.</p>
+ */
+ inline void SetEncodingType(const EncodingType& value) { m_encodingType = value; }
+
+ /**
+ * <p> Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>KeyMarker, NextKeyMarker, Prefix,
+ * Key</code>, and <code>Delimiter</code>.</p>
+ */
+ inline void SetEncodingType(EncodingType&& value) { m_encodingType = std::move(value); }
+
+ /**
+ * <p> Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>KeyMarker, NextKeyMarker, Prefix,
+ * Key</code>, and <code>Delimiter</code>.</p>
+ */
+ inline ListObjectVersionsResult& WithEncodingType(const EncodingType& value) { SetEncodingType(value); return *this;}
+
+ /**
+ * <p> Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>KeyMarker, NextKeyMarker, Prefix,
+ * Key</code>, and <code>Delimiter</code>.</p>
+ */
+ inline ListObjectVersionsResult& WithEncodingType(EncodingType&& value) { SetEncodingType(std::move(value)); return *this;}
+
+ private:
+
+ bool m_isTruncated;
+
+ Aws::String m_keyMarker;
+
+ Aws::String m_versionIdMarker;
+
+ Aws::String m_nextKeyMarker;
+
+ Aws::String m_nextVersionIdMarker;
+
+ Aws::Vector<ObjectVersion> m_versions;
+
+ Aws::Vector<DeleteMarkerEntry> m_deleteMarkers;
+
+ Aws::String m_name;
+
+ Aws::String m_prefix;
+
+ Aws::String m_delimiter;
+
+ int m_maxKeys;
+
+ Aws::Vector<CommonPrefix> m_commonPrefixes;
+
+ EncodingType m_encodingType;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsRequest.h
new file mode 100644
index 00000000000..08a2bdccd36
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsRequest.h
@@ -0,0 +1,573 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/EncodingType.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API ListObjectsRequest : public S3Request
+ {
+ public:
+ ListObjectsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "ListObjects"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket containing the objects.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket containing the objects.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket containing the objects.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket containing the objects.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket containing the objects.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket containing the objects.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListObjectsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the objects.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListObjectsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket containing the objects.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListObjectsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline const Aws::String& GetDelimiter() const{ return m_delimiter; }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline bool DelimiterHasBeenSet() const { return m_delimiterHasBeenSet; }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline void SetDelimiter(const Aws::String& value) { m_delimiterHasBeenSet = true; m_delimiter = value; }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline void SetDelimiter(Aws::String&& value) { m_delimiterHasBeenSet = true; m_delimiter = std::move(value); }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline void SetDelimiter(const char* value) { m_delimiterHasBeenSet = true; m_delimiter.assign(value); }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline ListObjectsRequest& WithDelimiter(const Aws::String& value) { SetDelimiter(value); return *this;}
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline ListObjectsRequest& WithDelimiter(Aws::String&& value) { SetDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline ListObjectsRequest& WithDelimiter(const char* value) { SetDelimiter(value); return *this;}
+
+
+
+ inline const EncodingType& GetEncodingType() const{ return m_encodingType; }
+
+
+ inline bool EncodingTypeHasBeenSet() const { return m_encodingTypeHasBeenSet; }
+
+
+ inline void SetEncodingType(const EncodingType& value) { m_encodingTypeHasBeenSet = true; m_encodingType = value; }
+
+
+ inline void SetEncodingType(EncodingType&& value) { m_encodingTypeHasBeenSet = true; m_encodingType = std::move(value); }
+
+
+ inline ListObjectsRequest& WithEncodingType(const EncodingType& value) { SetEncodingType(value); return *this;}
+
+
+ inline ListObjectsRequest& WithEncodingType(EncodingType&& value) { SetEncodingType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline const Aws::String& GetMarker() const{ return m_marker; }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline bool MarkerHasBeenSet() const { return m_markerHasBeenSet; }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline void SetMarker(const Aws::String& value) { m_markerHasBeenSet = true; m_marker = value; }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline void SetMarker(Aws::String&& value) { m_markerHasBeenSet = true; m_marker = std::move(value); }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline void SetMarker(const char* value) { m_markerHasBeenSet = true; m_marker.assign(value); }
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline ListObjectsRequest& WithMarker(const Aws::String& value) { SetMarker(value); return *this;}
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline ListObjectsRequest& WithMarker(Aws::String&& value) { SetMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the key to start with when listing objects in a bucket.</p>
+ */
+ inline ListObjectsRequest& WithMarker(const char* value) { SetMarker(value); return *this;}
+
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more. </p>
+ */
+ inline int GetMaxKeys() const{ return m_maxKeys; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more. </p>
+ */
+ inline bool MaxKeysHasBeenSet() const { return m_maxKeysHasBeenSet; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more. </p>
+ */
+ inline void SetMaxKeys(int value) { m_maxKeysHasBeenSet = true; m_maxKeys = value; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more. </p>
+ */
+ inline ListObjectsRequest& WithMaxKeys(int value) { SetMaxKeys(value); return *this;}
+
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline ListObjectsRequest& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline ListObjectsRequest& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline ListObjectsRequest& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request. Bucket owners need not specify this parameter in their
+ * requests.</p>
+ */
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request. Bucket owners need not specify this parameter in their
+ * requests.</p>
+ */
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request. Bucket owners need not specify this parameter in their
+ * requests.</p>
+ */
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request. Bucket owners need not specify this parameter in their
+ * requests.</p>
+ */
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request. Bucket owners need not specify this parameter in their
+ * requests.</p>
+ */
+ inline ListObjectsRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request. Bucket owners need not specify this parameter in their
+ * requests.</p>
+ */
+ inline ListObjectsRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListObjectsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListObjectsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListObjectsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline ListObjectsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline ListObjectsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline ListObjectsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline ListObjectsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListObjectsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListObjectsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline ListObjectsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListObjectsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListObjectsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_delimiter;
+ bool m_delimiterHasBeenSet;
+
+ EncodingType m_encodingType;
+ bool m_encodingTypeHasBeenSet;
+
+ Aws::String m_marker;
+ bool m_markerHasBeenSet;
+
+ int m_maxKeys;
+ bool m_maxKeysHasBeenSet;
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsResult.h
new file mode 100644
index 00000000000..69f60d384b9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsResult.h
@@ -0,0 +1,509 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/EncodingType.h>
+#include <aws/s3/model/Object.h>
+#include <aws/s3/model/CommonPrefix.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListObjectsResult
+ {
+ public:
+ ListObjectsResult();
+ ListObjectsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListObjectsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>A flag that indicates whether Amazon S3 returned all of the results that
+ * satisfied the search criteria.</p>
+ */
+ inline bool GetIsTruncated() const{ return m_isTruncated; }
+
+ /**
+ * <p>A flag that indicates whether Amazon S3 returned all of the results that
+ * satisfied the search criteria.</p>
+ */
+ inline void SetIsTruncated(bool value) { m_isTruncated = value; }
+
+ /**
+ * <p>A flag that indicates whether Amazon S3 returned all of the results that
+ * satisfied the search criteria.</p>
+ */
+ inline ListObjectsResult& WithIsTruncated(bool value) { SetIsTruncated(value); return *this;}
+
+
+ /**
+ * <p>Indicates where in the bucket listing begins. Marker is included in the
+ * response if it was sent with the request.</p>
+ */
+ inline const Aws::String& GetMarker() const{ return m_marker; }
+
+ /**
+ * <p>Indicates where in the bucket listing begins. Marker is included in the
+ * response if it was sent with the request.</p>
+ */
+ inline void SetMarker(const Aws::String& value) { m_marker = value; }
+
+ /**
+ * <p>Indicates where in the bucket listing begins. Marker is included in the
+ * response if it was sent with the request.</p>
+ */
+ inline void SetMarker(Aws::String&& value) { m_marker = std::move(value); }
+
+ /**
+ * <p>Indicates where in the bucket listing begins. Marker is included in the
+ * response if it was sent with the request.</p>
+ */
+ inline void SetMarker(const char* value) { m_marker.assign(value); }
+
+ /**
+ * <p>Indicates where in the bucket listing begins. Marker is included in the
+ * response if it was sent with the request.</p>
+ */
+ inline ListObjectsResult& WithMarker(const Aws::String& value) { SetMarker(value); return *this;}
+
+ /**
+ * <p>Indicates where in the bucket listing begins. Marker is included in the
+ * response if it was sent with the request.</p>
+ */
+ inline ListObjectsResult& WithMarker(Aws::String&& value) { SetMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>Indicates where in the bucket listing begins. Marker is included in the
+ * response if it was sent with the request.</p>
+ */
+ inline ListObjectsResult& WithMarker(const char* value) { SetMarker(value); return *this;}
+
+
+ /**
+ * <p>When response is truncated (the IsTruncated element value in the response is
+ * true), you can use the key name in this field as marker in the subsequent
+ * request to get next set of objects. Amazon S3 lists objects in alphabetical
+ * order Note: This element is returned only if you have delimiter request
+ * parameter specified. If response does not include the NextMarker and it is
+ * truncated, you can use the value of the last Key in the response as the marker
+ * in the subsequent request to get the next set of object keys.</p>
+ */
+ inline const Aws::String& GetNextMarker() const{ return m_nextMarker; }
+
+ /**
+ * <p>When response is truncated (the IsTruncated element value in the response is
+ * true), you can use the key name in this field as marker in the subsequent
+ * request to get next set of objects. Amazon S3 lists objects in alphabetical
+ * order Note: This element is returned only if you have delimiter request
+ * parameter specified. If response does not include the NextMarker and it is
+ * truncated, you can use the value of the last Key in the response as the marker
+ * in the subsequent request to get the next set of object keys.</p>
+ */
+ inline void SetNextMarker(const Aws::String& value) { m_nextMarker = value; }
+
+ /**
+ * <p>When response is truncated (the IsTruncated element value in the response is
+ * true), you can use the key name in this field as marker in the subsequent
+ * request to get next set of objects. Amazon S3 lists objects in alphabetical
+ * order Note: This element is returned only if you have delimiter request
+ * parameter specified. If response does not include the NextMarker and it is
+ * truncated, you can use the value of the last Key in the response as the marker
+ * in the subsequent request to get the next set of object keys.</p>
+ */
+ inline void SetNextMarker(Aws::String&& value) { m_nextMarker = std::move(value); }
+
+ /**
+ * <p>When response is truncated (the IsTruncated element value in the response is
+ * true), you can use the key name in this field as marker in the subsequent
+ * request to get next set of objects. Amazon S3 lists objects in alphabetical
+ * order Note: This element is returned only if you have delimiter request
+ * parameter specified. If response does not include the NextMarker and it is
+ * truncated, you can use the value of the last Key in the response as the marker
+ * in the subsequent request to get the next set of object keys.</p>
+ */
+ inline void SetNextMarker(const char* value) { m_nextMarker.assign(value); }
+
+ /**
+ * <p>When response is truncated (the IsTruncated element value in the response is
+ * true), you can use the key name in this field as marker in the subsequent
+ * request to get next set of objects. Amazon S3 lists objects in alphabetical
+ * order Note: This element is returned only if you have delimiter request
+ * parameter specified. If response does not include the NextMarker and it is
+ * truncated, you can use the value of the last Key in the response as the marker
+ * in the subsequent request to get the next set of object keys.</p>
+ */
+ inline ListObjectsResult& WithNextMarker(const Aws::String& value) { SetNextMarker(value); return *this;}
+
+ /**
+ * <p>When response is truncated (the IsTruncated element value in the response is
+ * true), you can use the key name in this field as marker in the subsequent
+ * request to get next set of objects. Amazon S3 lists objects in alphabetical
+ * order Note: This element is returned only if you have delimiter request
+ * parameter specified. If response does not include the NextMarker and it is
+ * truncated, you can use the value of the last Key in the response as the marker
+ * in the subsequent request to get the next set of object keys.</p>
+ */
+ inline ListObjectsResult& WithNextMarker(Aws::String&& value) { SetNextMarker(std::move(value)); return *this;}
+
+ /**
+ * <p>When response is truncated (the IsTruncated element value in the response is
+ * true), you can use the key name in this field as marker in the subsequent
+ * request to get next set of objects. Amazon S3 lists objects in alphabetical
+ * order Note: This element is returned only if you have delimiter request
+ * parameter specified. If response does not include the NextMarker and it is
+ * truncated, you can use the value of the last Key in the response as the marker
+ * in the subsequent request to get the next set of object keys.</p>
+ */
+ inline ListObjectsResult& WithNextMarker(const char* value) { SetNextMarker(value); return *this;}
+
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline const Aws::Vector<Object>& GetContents() const{ return m_contents; }
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline void SetContents(const Aws::Vector<Object>& value) { m_contents = value; }
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline void SetContents(Aws::Vector<Object>&& value) { m_contents = std::move(value); }
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline ListObjectsResult& WithContents(const Aws::Vector<Object>& value) { SetContents(value); return *this;}
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline ListObjectsResult& WithContents(Aws::Vector<Object>&& value) { SetContents(std::move(value)); return *this;}
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline ListObjectsResult& AddContents(const Object& value) { m_contents.push_back(value); return *this; }
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline ListObjectsResult& AddContents(Object&& value) { m_contents.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline const Aws::String& GetName() const{ return m_name; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetName(const Aws::String& value) { m_name = value; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetName(Aws::String&& value) { m_name = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetName(const char* value) { m_name.assign(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline ListObjectsResult& WithName(const Aws::String& value) { SetName(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline ListObjectsResult& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline ListObjectsResult& WithName(const char* value) { SetName(value); return *this;}
+
+
+ /**
+ * <p>Keys that begin with the indicated prefix.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Keys that begin with the indicated prefix.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefix = value; }
+
+ /**
+ * <p>Keys that begin with the indicated prefix.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefix = std::move(value); }
+
+ /**
+ * <p>Keys that begin with the indicated prefix.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefix.assign(value); }
+
+ /**
+ * <p>Keys that begin with the indicated prefix.</p>
+ */
+ inline ListObjectsResult& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Keys that begin with the indicated prefix.</p>
+ */
+ inline ListObjectsResult& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Keys that begin with the indicated prefix.</p>
+ */
+ inline ListObjectsResult& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * <code>CommonPrefixes</code> collection. These rolled-up keys are not returned
+ * elsewhere in the response. Each rolled-up result counts as only one return
+ * against the <code>MaxKeys</code> value.</p>
+ */
+ inline const Aws::String& GetDelimiter() const{ return m_delimiter; }
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * <code>CommonPrefixes</code> collection. These rolled-up keys are not returned
+ * elsewhere in the response. Each rolled-up result counts as only one return
+ * against the <code>MaxKeys</code> value.</p>
+ */
+ inline void SetDelimiter(const Aws::String& value) { m_delimiter = value; }
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * <code>CommonPrefixes</code> collection. These rolled-up keys are not returned
+ * elsewhere in the response. Each rolled-up result counts as only one return
+ * against the <code>MaxKeys</code> value.</p>
+ */
+ inline void SetDelimiter(Aws::String&& value) { m_delimiter = std::move(value); }
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * <code>CommonPrefixes</code> collection. These rolled-up keys are not returned
+ * elsewhere in the response. Each rolled-up result counts as only one return
+ * against the <code>MaxKeys</code> value.</p>
+ */
+ inline void SetDelimiter(const char* value) { m_delimiter.assign(value); }
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * <code>CommonPrefixes</code> collection. These rolled-up keys are not returned
+ * elsewhere in the response. Each rolled-up result counts as only one return
+ * against the <code>MaxKeys</code> value.</p>
+ */
+ inline ListObjectsResult& WithDelimiter(const Aws::String& value) { SetDelimiter(value); return *this;}
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * <code>CommonPrefixes</code> collection. These rolled-up keys are not returned
+ * elsewhere in the response. Each rolled-up result counts as only one return
+ * against the <code>MaxKeys</code> value.</p>
+ */
+ inline ListObjectsResult& WithDelimiter(Aws::String&& value) { SetDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * <code>CommonPrefixes</code> collection. These rolled-up keys are not returned
+ * elsewhere in the response. Each rolled-up result counts as only one return
+ * against the <code>MaxKeys</code> value.</p>
+ */
+ inline ListObjectsResult& WithDelimiter(const char* value) { SetDelimiter(value); return *this;}
+
+
+ /**
+ * <p>The maximum number of keys returned in the response body.</p>
+ */
+ inline int GetMaxKeys() const{ return m_maxKeys; }
+
+ /**
+ * <p>The maximum number of keys returned in the response body.</p>
+ */
+ inline void SetMaxKeys(int value) { m_maxKeys = value; }
+
+ /**
+ * <p>The maximum number of keys returned in the response body.</p>
+ */
+ inline ListObjectsResult& WithMaxKeys(int value) { SetMaxKeys(value); return *this;}
+
+
+ /**
+ * <p>All of the keys rolled up in a common prefix count as a single return when
+ * calculating the number of returns. </p> <p>A response can contain CommonPrefixes
+ * only if you specify a delimiter.</p> <p>CommonPrefixes contains all (if there
+ * are any) keys between Prefix and the next occurrence of the string specified by
+ * the delimiter.</p> <p> CommonPrefixes lists keys that act like subdirectories in
+ * the directory specified by Prefix.</p> <p>For example, if the prefix is notes/
+ * and the delimiter is a slash (/) as in notes/summer/july, the common prefix is
+ * notes/summer/. All of the keys that roll up into a common prefix count as a
+ * single return when calculating the number of returns.</p>
+ */
+ inline const Aws::Vector<CommonPrefix>& GetCommonPrefixes() const{ return m_commonPrefixes; }
+
+ /**
+ * <p>All of the keys rolled up in a common prefix count as a single return when
+ * calculating the number of returns. </p> <p>A response can contain CommonPrefixes
+ * only if you specify a delimiter.</p> <p>CommonPrefixes contains all (if there
+ * are any) keys between Prefix and the next occurrence of the string specified by
+ * the delimiter.</p> <p> CommonPrefixes lists keys that act like subdirectories in
+ * the directory specified by Prefix.</p> <p>For example, if the prefix is notes/
+ * and the delimiter is a slash (/) as in notes/summer/july, the common prefix is
+ * notes/summer/. All of the keys that roll up into a common prefix count as a
+ * single return when calculating the number of returns.</p>
+ */
+ inline void SetCommonPrefixes(const Aws::Vector<CommonPrefix>& value) { m_commonPrefixes = value; }
+
+ /**
+ * <p>All of the keys rolled up in a common prefix count as a single return when
+ * calculating the number of returns. </p> <p>A response can contain CommonPrefixes
+ * only if you specify a delimiter.</p> <p>CommonPrefixes contains all (if there
+ * are any) keys between Prefix and the next occurrence of the string specified by
+ * the delimiter.</p> <p> CommonPrefixes lists keys that act like subdirectories in
+ * the directory specified by Prefix.</p> <p>For example, if the prefix is notes/
+ * and the delimiter is a slash (/) as in notes/summer/july, the common prefix is
+ * notes/summer/. All of the keys that roll up into a common prefix count as a
+ * single return when calculating the number of returns.</p>
+ */
+ inline void SetCommonPrefixes(Aws::Vector<CommonPrefix>&& value) { m_commonPrefixes = std::move(value); }
+
+ /**
+ * <p>All of the keys rolled up in a common prefix count as a single return when
+ * calculating the number of returns. </p> <p>A response can contain CommonPrefixes
+ * only if you specify a delimiter.</p> <p>CommonPrefixes contains all (if there
+ * are any) keys between Prefix and the next occurrence of the string specified by
+ * the delimiter.</p> <p> CommonPrefixes lists keys that act like subdirectories in
+ * the directory specified by Prefix.</p> <p>For example, if the prefix is notes/
+ * and the delimiter is a slash (/) as in notes/summer/july, the common prefix is
+ * notes/summer/. All of the keys that roll up into a common prefix count as a
+ * single return when calculating the number of returns.</p>
+ */
+ inline ListObjectsResult& WithCommonPrefixes(const Aws::Vector<CommonPrefix>& value) { SetCommonPrefixes(value); return *this;}
+
+ /**
+ * <p>All of the keys rolled up in a common prefix count as a single return when
+ * calculating the number of returns. </p> <p>A response can contain CommonPrefixes
+ * only if you specify a delimiter.</p> <p>CommonPrefixes contains all (if there
+ * are any) keys between Prefix and the next occurrence of the string specified by
+ * the delimiter.</p> <p> CommonPrefixes lists keys that act like subdirectories in
+ * the directory specified by Prefix.</p> <p>For example, if the prefix is notes/
+ * and the delimiter is a slash (/) as in notes/summer/july, the common prefix is
+ * notes/summer/. All of the keys that roll up into a common prefix count as a
+ * single return when calculating the number of returns.</p>
+ */
+ inline ListObjectsResult& WithCommonPrefixes(Aws::Vector<CommonPrefix>&& value) { SetCommonPrefixes(std::move(value)); return *this;}
+
+ /**
+ * <p>All of the keys rolled up in a common prefix count as a single return when
+ * calculating the number of returns. </p> <p>A response can contain CommonPrefixes
+ * only if you specify a delimiter.</p> <p>CommonPrefixes contains all (if there
+ * are any) keys between Prefix and the next occurrence of the string specified by
+ * the delimiter.</p> <p> CommonPrefixes lists keys that act like subdirectories in
+ * the directory specified by Prefix.</p> <p>For example, if the prefix is notes/
+ * and the delimiter is a slash (/) as in notes/summer/july, the common prefix is
+ * notes/summer/. All of the keys that roll up into a common prefix count as a
+ * single return when calculating the number of returns.</p>
+ */
+ inline ListObjectsResult& AddCommonPrefixes(const CommonPrefix& value) { m_commonPrefixes.push_back(value); return *this; }
+
+ /**
+ * <p>All of the keys rolled up in a common prefix count as a single return when
+ * calculating the number of returns. </p> <p>A response can contain CommonPrefixes
+ * only if you specify a delimiter.</p> <p>CommonPrefixes contains all (if there
+ * are any) keys between Prefix and the next occurrence of the string specified by
+ * the delimiter.</p> <p> CommonPrefixes lists keys that act like subdirectories in
+ * the directory specified by Prefix.</p> <p>For example, if the prefix is notes/
+ * and the delimiter is a slash (/) as in notes/summer/july, the common prefix is
+ * notes/summer/. All of the keys that roll up into a common prefix count as a
+ * single return when calculating the number of returns.</p>
+ */
+ inline ListObjectsResult& AddCommonPrefixes(CommonPrefix&& value) { m_commonPrefixes.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline const EncodingType& GetEncodingType() const{ return m_encodingType; }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline void SetEncodingType(const EncodingType& value) { m_encodingType = value; }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline void SetEncodingType(EncodingType&& value) { m_encodingType = std::move(value); }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline ListObjectsResult& WithEncodingType(const EncodingType& value) { SetEncodingType(value); return *this;}
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline ListObjectsResult& WithEncodingType(EncodingType&& value) { SetEncodingType(std::move(value)); return *this;}
+
+ private:
+
+ bool m_isTruncated;
+
+ Aws::String m_marker;
+
+ Aws::String m_nextMarker;
+
+ Aws::Vector<Object> m_contents;
+
+ Aws::String m_name;
+
+ Aws::String m_prefix;
+
+ Aws::String m_delimiter;
+
+ int m_maxKeys;
+
+ Aws::Vector<CommonPrefix> m_commonPrefixes;
+
+ EncodingType m_encodingType;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsV2Request.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsV2Request.h
new file mode 100644
index 00000000000..c5e875a6741
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsV2Request.h
@@ -0,0 +1,693 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/EncodingType.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API ListObjectsV2Request : public S3Request
+ {
+ public:
+ ListObjectsV2Request();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "ListObjectsV2"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>Bucket name to list. </p> <p>When using this API with an access point, you
+ * must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>Bucket name to list. </p> <p>When using this API with an access point, you
+ * must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>Bucket name to list. </p> <p>When using this API with an access point, you
+ * must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>Bucket name to list. </p> <p>When using this API with an access point, you
+ * must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>Bucket name to list. </p> <p>When using this API with an access point, you
+ * must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>Bucket name to list. </p> <p>When using this API with an access point, you
+ * must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListObjectsV2Request& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>Bucket name to list. </p> <p>When using this API with an access point, you
+ * must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListObjectsV2Request& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>Bucket name to list. </p> <p>When using this API with an access point, you
+ * must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListObjectsV2Request& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline const Aws::String& GetDelimiter() const{ return m_delimiter; }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline bool DelimiterHasBeenSet() const { return m_delimiterHasBeenSet; }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline void SetDelimiter(const Aws::String& value) { m_delimiterHasBeenSet = true; m_delimiter = value; }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline void SetDelimiter(Aws::String&& value) { m_delimiterHasBeenSet = true; m_delimiter = std::move(value); }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline void SetDelimiter(const char* value) { m_delimiterHasBeenSet = true; m_delimiter.assign(value); }
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline ListObjectsV2Request& WithDelimiter(const Aws::String& value) { SetDelimiter(value); return *this;}
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline ListObjectsV2Request& WithDelimiter(Aws::String&& value) { SetDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>A delimiter is a character you use to group keys.</p>
+ */
+ inline ListObjectsV2Request& WithDelimiter(const char* value) { SetDelimiter(value); return *this;}
+
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline const EncodingType& GetEncodingType() const{ return m_encodingType; }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline bool EncodingTypeHasBeenSet() const { return m_encodingTypeHasBeenSet; }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline void SetEncodingType(const EncodingType& value) { m_encodingTypeHasBeenSet = true; m_encodingType = value; }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline void SetEncodingType(EncodingType&& value) { m_encodingTypeHasBeenSet = true; m_encodingType = std::move(value); }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline ListObjectsV2Request& WithEncodingType(const EncodingType& value) { SetEncodingType(value); return *this;}
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object keys in the response.</p>
+ */
+ inline ListObjectsV2Request& WithEncodingType(EncodingType&& value) { SetEncodingType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more.</p>
+ */
+ inline int GetMaxKeys() const{ return m_maxKeys; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more.</p>
+ */
+ inline bool MaxKeysHasBeenSet() const { return m_maxKeysHasBeenSet; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more.</p>
+ */
+ inline void SetMaxKeys(int value) { m_maxKeysHasBeenSet = true; m_maxKeys = value; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more.</p>
+ */
+ inline ListObjectsV2Request& WithMaxKeys(int value) { SetMaxKeys(value); return *this;}
+
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline ListObjectsV2Request& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline ListObjectsV2Request& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Limits the response to keys that begin with the specified prefix.</p>
+ */
+ inline ListObjectsV2Request& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>ContinuationToken indicates Amazon S3 that the list is being continued on
+ * this bucket with a token. ContinuationToken is obfuscated and is not a real
+ * key.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p>ContinuationToken indicates Amazon S3 that the list is being continued on
+ * this bucket with a token. ContinuationToken is obfuscated and is not a real
+ * key.</p>
+ */
+ inline bool ContinuationTokenHasBeenSet() const { return m_continuationTokenHasBeenSet; }
+
+ /**
+ * <p>ContinuationToken indicates Amazon S3 that the list is being continued on
+ * this bucket with a token. ContinuationToken is obfuscated and is not a real
+ * key.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = value; }
+
+ /**
+ * <p>ContinuationToken indicates Amazon S3 that the list is being continued on
+ * this bucket with a token. ContinuationToken is obfuscated and is not a real
+ * key.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationTokenHasBeenSet = true; m_continuationToken = std::move(value); }
+
+ /**
+ * <p>ContinuationToken indicates Amazon S3 that the list is being continued on
+ * this bucket with a token. ContinuationToken is obfuscated and is not a real
+ * key.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationTokenHasBeenSet = true; m_continuationToken.assign(value); }
+
+ /**
+ * <p>ContinuationToken indicates Amazon S3 that the list is being continued on
+ * this bucket with a token. ContinuationToken is obfuscated and is not a real
+ * key.</p>
+ */
+ inline ListObjectsV2Request& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p>ContinuationToken indicates Amazon S3 that the list is being continued on
+ * this bucket with a token. ContinuationToken is obfuscated and is not a real
+ * key.</p>
+ */
+ inline ListObjectsV2Request& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p>ContinuationToken indicates Amazon S3 that the list is being continued on
+ * this bucket with a token. ContinuationToken is obfuscated and is not a real
+ * key.</p>
+ */
+ inline ListObjectsV2Request& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>The owner field is not present in listV2 by default, if you want to return
+ * owner field with each key in the result then set the fetch owner field to
+ * true.</p>
+ */
+ inline bool GetFetchOwner() const{ return m_fetchOwner; }
+
+ /**
+ * <p>The owner field is not present in listV2 by default, if you want to return
+ * owner field with each key in the result then set the fetch owner field to
+ * true.</p>
+ */
+ inline bool FetchOwnerHasBeenSet() const { return m_fetchOwnerHasBeenSet; }
+
+ /**
+ * <p>The owner field is not present in listV2 by default, if you want to return
+ * owner field with each key in the result then set the fetch owner field to
+ * true.</p>
+ */
+ inline void SetFetchOwner(bool value) { m_fetchOwnerHasBeenSet = true; m_fetchOwner = value; }
+
+ /**
+ * <p>The owner field is not present in listV2 by default, if you want to return
+ * owner field with each key in the result then set the fetch owner field to
+ * true.</p>
+ */
+ inline ListObjectsV2Request& WithFetchOwner(bool value) { SetFetchOwner(value); return *this;}
+
+
+ /**
+ * <p>StartAfter is where you want Amazon S3 to start listing from. Amazon S3
+ * starts listing after this specified key. StartAfter can be any key in the
+ * bucket.</p>
+ */
+ inline const Aws::String& GetStartAfter() const{ return m_startAfter; }
+
+ /**
+ * <p>StartAfter is where you want Amazon S3 to start listing from. Amazon S3
+ * starts listing after this specified key. StartAfter can be any key in the
+ * bucket.</p>
+ */
+ inline bool StartAfterHasBeenSet() const { return m_startAfterHasBeenSet; }
+
+ /**
+ * <p>StartAfter is where you want Amazon S3 to start listing from. Amazon S3
+ * starts listing after this specified key. StartAfter can be any key in the
+ * bucket.</p>
+ */
+ inline void SetStartAfter(const Aws::String& value) { m_startAfterHasBeenSet = true; m_startAfter = value; }
+
+ /**
+ * <p>StartAfter is where you want Amazon S3 to start listing from. Amazon S3
+ * starts listing after this specified key. StartAfter can be any key in the
+ * bucket.</p>
+ */
+ inline void SetStartAfter(Aws::String&& value) { m_startAfterHasBeenSet = true; m_startAfter = std::move(value); }
+
+ /**
+ * <p>StartAfter is where you want Amazon S3 to start listing from. Amazon S3
+ * starts listing after this specified key. StartAfter can be any key in the
+ * bucket.</p>
+ */
+ inline void SetStartAfter(const char* value) { m_startAfterHasBeenSet = true; m_startAfter.assign(value); }
+
+ /**
+ * <p>StartAfter is where you want Amazon S3 to start listing from. Amazon S3
+ * starts listing after this specified key. StartAfter can be any key in the
+ * bucket.</p>
+ */
+ inline ListObjectsV2Request& WithStartAfter(const Aws::String& value) { SetStartAfter(value); return *this;}
+
+ /**
+ * <p>StartAfter is where you want Amazon S3 to start listing from. Amazon S3
+ * starts listing after this specified key. StartAfter can be any key in the
+ * bucket.</p>
+ */
+ inline ListObjectsV2Request& WithStartAfter(Aws::String&& value) { SetStartAfter(std::move(value)); return *this;}
+
+ /**
+ * <p>StartAfter is where you want Amazon S3 to start listing from. Amazon S3
+ * starts listing after this specified key. StartAfter can be any key in the
+ * bucket.</p>
+ */
+ inline ListObjectsV2Request& WithStartAfter(const char* value) { SetStartAfter(value); return *this;}
+
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request in V2 style. Bucket owners need not specify this parameter in
+ * their requests.</p>
+ */
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request in V2 style. Bucket owners need not specify this parameter in
+ * their requests.</p>
+ */
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request in V2 style. Bucket owners need not specify this parameter in
+ * their requests.</p>
+ */
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request in V2 style. Bucket owners need not specify this parameter in
+ * their requests.</p>
+ */
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request in V2 style. Bucket owners need not specify this parameter in
+ * their requests.</p>
+ */
+ inline ListObjectsV2Request& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+ /**
+ * <p>Confirms that the requester knows that she or he will be charged for the list
+ * objects request in V2 style. Bucket owners need not specify this parameter in
+ * their requests.</p>
+ */
+ inline ListObjectsV2Request& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListObjectsV2Request& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListObjectsV2Request& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListObjectsV2Request& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline ListObjectsV2Request& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline ListObjectsV2Request& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline ListObjectsV2Request& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline ListObjectsV2Request& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListObjectsV2Request& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListObjectsV2Request& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline ListObjectsV2Request& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListObjectsV2Request& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListObjectsV2Request& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_delimiter;
+ bool m_delimiterHasBeenSet;
+
+ EncodingType m_encodingType;
+ bool m_encodingTypeHasBeenSet;
+
+ int m_maxKeys;
+ bool m_maxKeysHasBeenSet;
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Aws::String m_continuationToken;
+ bool m_continuationTokenHasBeenSet;
+
+ bool m_fetchOwner;
+ bool m_fetchOwnerHasBeenSet;
+
+ Aws::String m_startAfter;
+ bool m_startAfterHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsV2Result.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsV2Result.h
new file mode 100644
index 00000000000..44c2e059a4d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsV2Result.h
@@ -0,0 +1,726 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/EncodingType.h>
+#include <aws/s3/model/Object.h>
+#include <aws/s3/model/CommonPrefix.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListObjectsV2Result
+ {
+ public:
+ ListObjectsV2Result();
+ ListObjectsV2Result(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListObjectsV2Result& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>Set to false if all of the results were returned. Set to true if more keys
+ * are available to return. If the number of results exceeds that specified by
+ * MaxKeys, all of the results might not be returned.</p>
+ */
+ inline bool GetIsTruncated() const{ return m_isTruncated; }
+
+ /**
+ * <p>Set to false if all of the results were returned. Set to true if more keys
+ * are available to return. If the number of results exceeds that specified by
+ * MaxKeys, all of the results might not be returned.</p>
+ */
+ inline void SetIsTruncated(bool value) { m_isTruncated = value; }
+
+ /**
+ * <p>Set to false if all of the results were returned. Set to true if more keys
+ * are available to return. If the number of results exceeds that specified by
+ * MaxKeys, all of the results might not be returned.</p>
+ */
+ inline ListObjectsV2Result& WithIsTruncated(bool value) { SetIsTruncated(value); return *this;}
+
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline const Aws::Vector<Object>& GetContents() const{ return m_contents; }
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline void SetContents(const Aws::Vector<Object>& value) { m_contents = value; }
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline void SetContents(Aws::Vector<Object>&& value) { m_contents = std::move(value); }
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline ListObjectsV2Result& WithContents(const Aws::Vector<Object>& value) { SetContents(value); return *this;}
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline ListObjectsV2Result& WithContents(Aws::Vector<Object>&& value) { SetContents(std::move(value)); return *this;}
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline ListObjectsV2Result& AddContents(const Object& value) { m_contents.push_back(value); return *this; }
+
+ /**
+ * <p>Metadata about each object returned.</p>
+ */
+ inline ListObjectsV2Result& AddContents(Object&& value) { m_contents.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetName() const{ return m_name; }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetName(const Aws::String& value) { m_name = value; }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetName(Aws::String&& value) { m_name = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetName(const char* value) { m_name.assign(value); }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListObjectsV2Result& WithName(const Aws::String& value) { SetName(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListObjectsV2Result& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListObjectsV2Result& WithName(const char* value) { SetName(value); return *this;}
+
+
+ /**
+ * <p> Keys that begin with the indicated prefix.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p> Keys that begin with the indicated prefix.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefix = value; }
+
+ /**
+ * <p> Keys that begin with the indicated prefix.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefix = std::move(value); }
+
+ /**
+ * <p> Keys that begin with the indicated prefix.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefix.assign(value); }
+
+ /**
+ * <p> Keys that begin with the indicated prefix.</p>
+ */
+ inline ListObjectsV2Result& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p> Keys that begin with the indicated prefix.</p>
+ */
+ inline ListObjectsV2Result& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p> Keys that begin with the indicated prefix.</p>
+ */
+ inline ListObjectsV2Result& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * CommonPrefixes collection. These rolled-up keys are not returned elsewhere in
+ * the response. Each rolled-up result counts as only one return against the
+ * <code>MaxKeys</code> value.</p>
+ */
+ inline const Aws::String& GetDelimiter() const{ return m_delimiter; }
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * CommonPrefixes collection. These rolled-up keys are not returned elsewhere in
+ * the response. Each rolled-up result counts as only one return against the
+ * <code>MaxKeys</code> value.</p>
+ */
+ inline void SetDelimiter(const Aws::String& value) { m_delimiter = value; }
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * CommonPrefixes collection. These rolled-up keys are not returned elsewhere in
+ * the response. Each rolled-up result counts as only one return against the
+ * <code>MaxKeys</code> value.</p>
+ */
+ inline void SetDelimiter(Aws::String&& value) { m_delimiter = std::move(value); }
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * CommonPrefixes collection. These rolled-up keys are not returned elsewhere in
+ * the response. Each rolled-up result counts as only one return against the
+ * <code>MaxKeys</code> value.</p>
+ */
+ inline void SetDelimiter(const char* value) { m_delimiter.assign(value); }
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * CommonPrefixes collection. These rolled-up keys are not returned elsewhere in
+ * the response. Each rolled-up result counts as only one return against the
+ * <code>MaxKeys</code> value.</p>
+ */
+ inline ListObjectsV2Result& WithDelimiter(const Aws::String& value) { SetDelimiter(value); return *this;}
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * CommonPrefixes collection. These rolled-up keys are not returned elsewhere in
+ * the response. Each rolled-up result counts as only one return against the
+ * <code>MaxKeys</code> value.</p>
+ */
+ inline ListObjectsV2Result& WithDelimiter(Aws::String&& value) { SetDelimiter(std::move(value)); return *this;}
+
+ /**
+ * <p>Causes keys that contain the same string between the prefix and the first
+ * occurrence of the delimiter to be rolled up into a single result element in the
+ * CommonPrefixes collection. These rolled-up keys are not returned elsewhere in
+ * the response. Each rolled-up result counts as only one return against the
+ * <code>MaxKeys</code> value.</p>
+ */
+ inline ListObjectsV2Result& WithDelimiter(const char* value) { SetDelimiter(value); return *this;}
+
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more.</p>
+ */
+ inline int GetMaxKeys() const{ return m_maxKeys; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more.</p>
+ */
+ inline void SetMaxKeys(int value) { m_maxKeys = value; }
+
+ /**
+ * <p>Sets the maximum number of keys returned in the response. By default the API
+ * returns up to 1,000 key names. The response might contain fewer keys but will
+ * never contain more.</p>
+ */
+ inline ListObjectsV2Result& WithMaxKeys(int value) { SetMaxKeys(value); return *this;}
+
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p> <p>A response can contain
+ * <code>CommonPrefixes</code> only if you specify a delimiter.</p> <p>
+ * <code>CommonPrefixes</code> contains all (if there are any) keys between
+ * <code>Prefix</code> and the next occurrence of the string specified by a
+ * delimiter.</p> <p> <code>CommonPrefixes</code> lists keys that act like
+ * subdirectories in the directory specified by <code>Prefix</code>.</p> <p>For
+ * example, if the prefix is <code>notes/</code> and the delimiter is a slash
+ * (<code>/</code>) as in <code>notes/summer/july</code>, the common prefix is
+ * <code>notes/summer/</code>. All of the keys that roll up into a common prefix
+ * count as a single return when calculating the number of returns. </p>
+ */
+ inline const Aws::Vector<CommonPrefix>& GetCommonPrefixes() const{ return m_commonPrefixes; }
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p> <p>A response can contain
+ * <code>CommonPrefixes</code> only if you specify a delimiter.</p> <p>
+ * <code>CommonPrefixes</code> contains all (if there are any) keys between
+ * <code>Prefix</code> and the next occurrence of the string specified by a
+ * delimiter.</p> <p> <code>CommonPrefixes</code> lists keys that act like
+ * subdirectories in the directory specified by <code>Prefix</code>.</p> <p>For
+ * example, if the prefix is <code>notes/</code> and the delimiter is a slash
+ * (<code>/</code>) as in <code>notes/summer/july</code>, the common prefix is
+ * <code>notes/summer/</code>. All of the keys that roll up into a common prefix
+ * count as a single return when calculating the number of returns. </p>
+ */
+ inline void SetCommonPrefixes(const Aws::Vector<CommonPrefix>& value) { m_commonPrefixes = value; }
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p> <p>A response can contain
+ * <code>CommonPrefixes</code> only if you specify a delimiter.</p> <p>
+ * <code>CommonPrefixes</code> contains all (if there are any) keys between
+ * <code>Prefix</code> and the next occurrence of the string specified by a
+ * delimiter.</p> <p> <code>CommonPrefixes</code> lists keys that act like
+ * subdirectories in the directory specified by <code>Prefix</code>.</p> <p>For
+ * example, if the prefix is <code>notes/</code> and the delimiter is a slash
+ * (<code>/</code>) as in <code>notes/summer/july</code>, the common prefix is
+ * <code>notes/summer/</code>. All of the keys that roll up into a common prefix
+ * count as a single return when calculating the number of returns. </p>
+ */
+ inline void SetCommonPrefixes(Aws::Vector<CommonPrefix>&& value) { m_commonPrefixes = std::move(value); }
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p> <p>A response can contain
+ * <code>CommonPrefixes</code> only if you specify a delimiter.</p> <p>
+ * <code>CommonPrefixes</code> contains all (if there are any) keys between
+ * <code>Prefix</code> and the next occurrence of the string specified by a
+ * delimiter.</p> <p> <code>CommonPrefixes</code> lists keys that act like
+ * subdirectories in the directory specified by <code>Prefix</code>.</p> <p>For
+ * example, if the prefix is <code>notes/</code> and the delimiter is a slash
+ * (<code>/</code>) as in <code>notes/summer/july</code>, the common prefix is
+ * <code>notes/summer/</code>. All of the keys that roll up into a common prefix
+ * count as a single return when calculating the number of returns. </p>
+ */
+ inline ListObjectsV2Result& WithCommonPrefixes(const Aws::Vector<CommonPrefix>& value) { SetCommonPrefixes(value); return *this;}
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p> <p>A response can contain
+ * <code>CommonPrefixes</code> only if you specify a delimiter.</p> <p>
+ * <code>CommonPrefixes</code> contains all (if there are any) keys between
+ * <code>Prefix</code> and the next occurrence of the string specified by a
+ * delimiter.</p> <p> <code>CommonPrefixes</code> lists keys that act like
+ * subdirectories in the directory specified by <code>Prefix</code>.</p> <p>For
+ * example, if the prefix is <code>notes/</code> and the delimiter is a slash
+ * (<code>/</code>) as in <code>notes/summer/july</code>, the common prefix is
+ * <code>notes/summer/</code>. All of the keys that roll up into a common prefix
+ * count as a single return when calculating the number of returns. </p>
+ */
+ inline ListObjectsV2Result& WithCommonPrefixes(Aws::Vector<CommonPrefix>&& value) { SetCommonPrefixes(std::move(value)); return *this;}
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p> <p>A response can contain
+ * <code>CommonPrefixes</code> only if you specify a delimiter.</p> <p>
+ * <code>CommonPrefixes</code> contains all (if there are any) keys between
+ * <code>Prefix</code> and the next occurrence of the string specified by a
+ * delimiter.</p> <p> <code>CommonPrefixes</code> lists keys that act like
+ * subdirectories in the directory specified by <code>Prefix</code>.</p> <p>For
+ * example, if the prefix is <code>notes/</code> and the delimiter is a slash
+ * (<code>/</code>) as in <code>notes/summer/july</code>, the common prefix is
+ * <code>notes/summer/</code>. All of the keys that roll up into a common prefix
+ * count as a single return when calculating the number of returns. </p>
+ */
+ inline ListObjectsV2Result& AddCommonPrefixes(const CommonPrefix& value) { m_commonPrefixes.push_back(value); return *this; }
+
+ /**
+ * <p>All of the keys rolled up into a common prefix count as a single return when
+ * calculating the number of returns.</p> <p>A response can contain
+ * <code>CommonPrefixes</code> only if you specify a delimiter.</p> <p>
+ * <code>CommonPrefixes</code> contains all (if there are any) keys between
+ * <code>Prefix</code> and the next occurrence of the string specified by a
+ * delimiter.</p> <p> <code>CommonPrefixes</code> lists keys that act like
+ * subdirectories in the directory specified by <code>Prefix</code>.</p> <p>For
+ * example, if the prefix is <code>notes/</code> and the delimiter is a slash
+ * (<code>/</code>) as in <code>notes/summer/july</code>, the common prefix is
+ * <code>notes/summer/</code>. All of the keys that roll up into a common prefix
+ * count as a single return when calculating the number of returns. </p>
+ */
+ inline ListObjectsV2Result& AddCommonPrefixes(CommonPrefix&& value) { m_commonPrefixes.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify the encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter, Prefix, Key,</code>
+ * and <code>StartAfter</code>.</p>
+ */
+ inline const EncodingType& GetEncodingType() const{ return m_encodingType; }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify the encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter, Prefix, Key,</code>
+ * and <code>StartAfter</code>.</p>
+ */
+ inline void SetEncodingType(const EncodingType& value) { m_encodingType = value; }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify the encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter, Prefix, Key,</code>
+ * and <code>StartAfter</code>.</p>
+ */
+ inline void SetEncodingType(EncodingType&& value) { m_encodingType = std::move(value); }
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify the encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter, Prefix, Key,</code>
+ * and <code>StartAfter</code>.</p>
+ */
+ inline ListObjectsV2Result& WithEncodingType(const EncodingType& value) { SetEncodingType(value); return *this;}
+
+ /**
+ * <p>Encoding type used by Amazon S3 to encode object key names in the XML
+ * response.</p> <p>If you specify the encoding-type request parameter, Amazon S3
+ * includes this element in the response, and returns encoded key name values in
+ * the following response elements:</p> <p> <code>Delimiter, Prefix, Key,</code>
+ * and <code>StartAfter</code>.</p>
+ */
+ inline ListObjectsV2Result& WithEncodingType(EncodingType&& value) { SetEncodingType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>KeyCount is the number of keys returned with this request. KeyCount will
+ * always be less than equals to MaxKeys field. Say you ask for 50 keys, your
+ * result will include less than equals 50 keys </p>
+ */
+ inline int GetKeyCount() const{ return m_keyCount; }
+
+ /**
+ * <p>KeyCount is the number of keys returned with this request. KeyCount will
+ * always be less than equals to MaxKeys field. Say you ask for 50 keys, your
+ * result will include less than equals 50 keys </p>
+ */
+ inline void SetKeyCount(int value) { m_keyCount = value; }
+
+ /**
+ * <p>KeyCount is the number of keys returned with this request. KeyCount will
+ * always be less than equals to MaxKeys field. Say you ask for 50 keys, your
+ * result will include less than equals 50 keys </p>
+ */
+ inline ListObjectsV2Result& WithKeyCount(int value) { SetKeyCount(value); return *this;}
+
+
+ /**
+ * <p> If ContinuationToken was sent with the request, it is included in the
+ * response.</p>
+ */
+ inline const Aws::String& GetContinuationToken() const{ return m_continuationToken; }
+
+ /**
+ * <p> If ContinuationToken was sent with the request, it is included in the
+ * response.</p>
+ */
+ inline void SetContinuationToken(const Aws::String& value) { m_continuationToken = value; }
+
+ /**
+ * <p> If ContinuationToken was sent with the request, it is included in the
+ * response.</p>
+ */
+ inline void SetContinuationToken(Aws::String&& value) { m_continuationToken = std::move(value); }
+
+ /**
+ * <p> If ContinuationToken was sent with the request, it is included in the
+ * response.</p>
+ */
+ inline void SetContinuationToken(const char* value) { m_continuationToken.assign(value); }
+
+ /**
+ * <p> If ContinuationToken was sent with the request, it is included in the
+ * response.</p>
+ */
+ inline ListObjectsV2Result& WithContinuationToken(const Aws::String& value) { SetContinuationToken(value); return *this;}
+
+ /**
+ * <p> If ContinuationToken was sent with the request, it is included in the
+ * response.</p>
+ */
+ inline ListObjectsV2Result& WithContinuationToken(Aws::String&& value) { SetContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p> If ContinuationToken was sent with the request, it is included in the
+ * response.</p>
+ */
+ inline ListObjectsV2Result& WithContinuationToken(const char* value) { SetContinuationToken(value); return *this;}
+
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which means there are more keys in the bucket that can be listed. The next
+ * list requests to Amazon S3 can be continued with this
+ * <code>NextContinuationToken</code>. <code>NextContinuationToken</code> is
+ * obfuscated and is not a real key</p>
+ */
+ inline const Aws::String& GetNextContinuationToken() const{ return m_nextContinuationToken; }
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which means there are more keys in the bucket that can be listed. The next
+ * list requests to Amazon S3 can be continued with this
+ * <code>NextContinuationToken</code>. <code>NextContinuationToken</code> is
+ * obfuscated and is not a real key</p>
+ */
+ inline void SetNextContinuationToken(const Aws::String& value) { m_nextContinuationToken = value; }
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which means there are more keys in the bucket that can be listed. The next
+ * list requests to Amazon S3 can be continued with this
+ * <code>NextContinuationToken</code>. <code>NextContinuationToken</code> is
+ * obfuscated and is not a real key</p>
+ */
+ inline void SetNextContinuationToken(Aws::String&& value) { m_nextContinuationToken = std::move(value); }
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which means there are more keys in the bucket that can be listed. The next
+ * list requests to Amazon S3 can be continued with this
+ * <code>NextContinuationToken</code>. <code>NextContinuationToken</code> is
+ * obfuscated and is not a real key</p>
+ */
+ inline void SetNextContinuationToken(const char* value) { m_nextContinuationToken.assign(value); }
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which means there are more keys in the bucket that can be listed. The next
+ * list requests to Amazon S3 can be continued with this
+ * <code>NextContinuationToken</code>. <code>NextContinuationToken</code> is
+ * obfuscated and is not a real key</p>
+ */
+ inline ListObjectsV2Result& WithNextContinuationToken(const Aws::String& value) { SetNextContinuationToken(value); return *this;}
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which means there are more keys in the bucket that can be listed. The next
+ * list requests to Amazon S3 can be continued with this
+ * <code>NextContinuationToken</code>. <code>NextContinuationToken</code> is
+ * obfuscated and is not a real key</p>
+ */
+ inline ListObjectsV2Result& WithNextContinuationToken(Aws::String&& value) { SetNextContinuationToken(std::move(value)); return *this;}
+
+ /**
+ * <p> <code>NextContinuationToken</code> is sent when <code>isTruncated</code> is
+ * true, which means there are more keys in the bucket that can be listed. The next
+ * list requests to Amazon S3 can be continued with this
+ * <code>NextContinuationToken</code>. <code>NextContinuationToken</code> is
+ * obfuscated and is not a real key</p>
+ */
+ inline ListObjectsV2Result& WithNextContinuationToken(const char* value) { SetNextContinuationToken(value); return *this;}
+
+
+ /**
+ * <p>If StartAfter was sent with the request, it is included in the response.</p>
+ */
+ inline const Aws::String& GetStartAfter() const{ return m_startAfter; }
+
+ /**
+ * <p>If StartAfter was sent with the request, it is included in the response.</p>
+ */
+ inline void SetStartAfter(const Aws::String& value) { m_startAfter = value; }
+
+ /**
+ * <p>If StartAfter was sent with the request, it is included in the response.</p>
+ */
+ inline void SetStartAfter(Aws::String&& value) { m_startAfter = std::move(value); }
+
+ /**
+ * <p>If StartAfter was sent with the request, it is included in the response.</p>
+ */
+ inline void SetStartAfter(const char* value) { m_startAfter.assign(value); }
+
+ /**
+ * <p>If StartAfter was sent with the request, it is included in the response.</p>
+ */
+ inline ListObjectsV2Result& WithStartAfter(const Aws::String& value) { SetStartAfter(value); return *this;}
+
+ /**
+ * <p>If StartAfter was sent with the request, it is included in the response.</p>
+ */
+ inline ListObjectsV2Result& WithStartAfter(Aws::String&& value) { SetStartAfter(std::move(value)); return *this;}
+
+ /**
+ * <p>If StartAfter was sent with the request, it is included in the response.</p>
+ */
+ inline ListObjectsV2Result& WithStartAfter(const char* value) { SetStartAfter(value); return *this;}
+
+ private:
+
+ bool m_isTruncated;
+
+ Aws::Vector<Object> m_contents;
+
+ Aws::String m_name;
+
+ Aws::String m_prefix;
+
+ Aws::String m_delimiter;
+
+ int m_maxKeys;
+
+ Aws::Vector<CommonPrefix> m_commonPrefixes;
+
+ EncodingType m_encodingType;
+
+ int m_keyCount;
+
+ Aws::String m_continuationToken;
+
+ Aws::String m_nextContinuationToken;
+
+ Aws::String m_startAfter;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListPartsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListPartsRequest.h
new file mode 100644
index 00000000000..eca155dfe3a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListPartsRequest.h
@@ -0,0 +1,502 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API ListPartsRequest : public S3Request
+ {
+ public:
+ ListPartsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "ListParts"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket to which the parts are being uploaded. </p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket to which the parts are being uploaded. </p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket to which the parts are being uploaded. </p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket to which the parts are being uploaded. </p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket to which the parts are being uploaded. </p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket to which the parts are being uploaded. </p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListPartsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the parts are being uploaded. </p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListPartsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the parts are being uploaded. </p> <p>When
+ * using this API with an access point, you must direct requests to the access
+ * point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ListPartsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline ListPartsRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline ListPartsRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline ListPartsRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Sets the maximum number of parts to return.</p>
+ */
+ inline int GetMaxParts() const{ return m_maxParts; }
+
+ /**
+ * <p>Sets the maximum number of parts to return.</p>
+ */
+ inline bool MaxPartsHasBeenSet() const { return m_maxPartsHasBeenSet; }
+
+ /**
+ * <p>Sets the maximum number of parts to return.</p>
+ */
+ inline void SetMaxParts(int value) { m_maxPartsHasBeenSet = true; m_maxParts = value; }
+
+ /**
+ * <p>Sets the maximum number of parts to return.</p>
+ */
+ inline ListPartsRequest& WithMaxParts(int value) { SetMaxParts(value); return *this;}
+
+
+ /**
+ * <p>Specifies the part after which listing should begin. Only parts with higher
+ * part numbers will be listed.</p>
+ */
+ inline int GetPartNumberMarker() const{ return m_partNumberMarker; }
+
+ /**
+ * <p>Specifies the part after which listing should begin. Only parts with higher
+ * part numbers will be listed.</p>
+ */
+ inline bool PartNumberMarkerHasBeenSet() const { return m_partNumberMarkerHasBeenSet; }
+
+ /**
+ * <p>Specifies the part after which listing should begin. Only parts with higher
+ * part numbers will be listed.</p>
+ */
+ inline void SetPartNumberMarker(int value) { m_partNumberMarkerHasBeenSet = true; m_partNumberMarker = value; }
+
+ /**
+ * <p>Specifies the part after which listing should begin. Only parts with higher
+ * part numbers will be listed.</p>
+ */
+ inline ListPartsRequest& WithPartNumberMarker(int value) { SetPartNumberMarker(value); return *this;}
+
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline const Aws::String& GetUploadId() const{ return m_uploadId; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline bool UploadIdHasBeenSet() const { return m_uploadIdHasBeenSet; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline void SetUploadId(const Aws::String& value) { m_uploadIdHasBeenSet = true; m_uploadId = value; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline void SetUploadId(Aws::String&& value) { m_uploadIdHasBeenSet = true; m_uploadId = std::move(value); }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline void SetUploadId(const char* value) { m_uploadIdHasBeenSet = true; m_uploadId.assign(value); }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline ListPartsRequest& WithUploadId(const Aws::String& value) { SetUploadId(value); return *this;}
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline ListPartsRequest& WithUploadId(Aws::String&& value) { SetUploadId(std::move(value)); return *this;}
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline ListPartsRequest& WithUploadId(const char* value) { SetUploadId(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline ListPartsRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline ListPartsRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListPartsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListPartsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline ListPartsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline ListPartsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline ListPartsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline ListPartsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline ListPartsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListPartsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListPartsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline ListPartsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline ListPartsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline ListPartsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ int m_maxParts;
+ bool m_maxPartsHasBeenSet;
+
+ int m_partNumberMarker;
+ bool m_partNumberMarkerHasBeenSet;
+
+ Aws::String m_uploadId;
+ bool m_uploadIdHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListPartsResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListPartsResult.h
new file mode 100644
index 00000000000..9cf2e6d514d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ListPartsResult.h
@@ -0,0 +1,547 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Initiator.h>
+#include <aws/s3/model/Owner.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <aws/s3/model/Part.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API ListPartsResult
+ {
+ public:
+ ListPartsResult();
+ ListPartsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ ListPartsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, then the response includes this header indicating
+ * when the initiated multipart upload will become eligible for abort operation.
+ * For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">Aborting
+ * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p> <p>The
+ * response will also include the <code>x-amz-abort-rule-id</code> header that will
+ * provide the ID of the lifecycle configuration rule that defines this action.</p>
+ */
+ inline const Aws::Utils::DateTime& GetAbortDate() const{ return m_abortDate; }
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, then the response includes this header indicating
+ * when the initiated multipart upload will become eligible for abort operation.
+ * For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">Aborting
+ * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p> <p>The
+ * response will also include the <code>x-amz-abort-rule-id</code> header that will
+ * provide the ID of the lifecycle configuration rule that defines this action.</p>
+ */
+ inline void SetAbortDate(const Aws::Utils::DateTime& value) { m_abortDate = value; }
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, then the response includes this header indicating
+ * when the initiated multipart upload will become eligible for abort operation.
+ * For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">Aborting
+ * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p> <p>The
+ * response will also include the <code>x-amz-abort-rule-id</code> header that will
+ * provide the ID of the lifecycle configuration rule that defines this action.</p>
+ */
+ inline void SetAbortDate(Aws::Utils::DateTime&& value) { m_abortDate = std::move(value); }
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, then the response includes this header indicating
+ * when the initiated multipart upload will become eligible for abort operation.
+ * For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">Aborting
+ * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p> <p>The
+ * response will also include the <code>x-amz-abort-rule-id</code> header that will
+ * provide the ID of the lifecycle configuration rule that defines this action.</p>
+ */
+ inline ListPartsResult& WithAbortDate(const Aws::Utils::DateTime& value) { SetAbortDate(value); return *this;}
+
+ /**
+ * <p>If the bucket has a lifecycle rule configured with an action to abort
+ * incomplete multipart uploads and the prefix in the lifecycle rule matches the
+ * object name in the request, then the response includes this header indicating
+ * when the initiated multipart upload will become eligible for abort operation.
+ * For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config">Aborting
+ * Incomplete Multipart Uploads Using a Bucket Lifecycle Policy</a>.</p> <p>The
+ * response will also include the <code>x-amz-abort-rule-id</code> header that will
+ * provide the ID of the lifecycle configuration rule that defines this action.</p>
+ */
+ inline ListPartsResult& WithAbortDate(Aws::Utils::DateTime&& value) { SetAbortDate(std::move(value)); return *this;}
+
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies applicable lifecycle configuration rule that defines the action to
+ * abort incomplete multipart uploads.</p>
+ */
+ inline const Aws::String& GetAbortRuleId() const{ return m_abortRuleId; }
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies applicable lifecycle configuration rule that defines the action to
+ * abort incomplete multipart uploads.</p>
+ */
+ inline void SetAbortRuleId(const Aws::String& value) { m_abortRuleId = value; }
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies applicable lifecycle configuration rule that defines the action to
+ * abort incomplete multipart uploads.</p>
+ */
+ inline void SetAbortRuleId(Aws::String&& value) { m_abortRuleId = std::move(value); }
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies applicable lifecycle configuration rule that defines the action to
+ * abort incomplete multipart uploads.</p>
+ */
+ inline void SetAbortRuleId(const char* value) { m_abortRuleId.assign(value); }
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies applicable lifecycle configuration rule that defines the action to
+ * abort incomplete multipart uploads.</p>
+ */
+ inline ListPartsResult& WithAbortRuleId(const Aws::String& value) { SetAbortRuleId(value); return *this;}
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies applicable lifecycle configuration rule that defines the action to
+ * abort incomplete multipart uploads.</p>
+ */
+ inline ListPartsResult& WithAbortRuleId(Aws::String&& value) { SetAbortRuleId(std::move(value)); return *this;}
+
+ /**
+ * <p>This header is returned along with the <code>x-amz-abort-date</code> header.
+ * It identifies applicable lifecycle configuration rule that defines the action to
+ * abort incomplete multipart uploads.</p>
+ */
+ inline ListPartsResult& WithAbortRuleId(const char* value) { SetAbortRuleId(value); return *this;}
+
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline ListPartsResult& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline ListPartsResult& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ */
+ inline ListPartsResult& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_key = value; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_key.assign(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline ListPartsResult& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline ListPartsResult& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline ListPartsResult& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline const Aws::String& GetUploadId() const{ return m_uploadId; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline void SetUploadId(const Aws::String& value) { m_uploadId = value; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline void SetUploadId(Aws::String&& value) { m_uploadId = std::move(value); }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline void SetUploadId(const char* value) { m_uploadId.assign(value); }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline ListPartsResult& WithUploadId(const Aws::String& value) { SetUploadId(value); return *this;}
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline ListPartsResult& WithUploadId(Aws::String&& value) { SetUploadId(std::move(value)); return *this;}
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose parts are being listed.</p>
+ */
+ inline ListPartsResult& WithUploadId(const char* value) { SetUploadId(value); return *this;}
+
+
+ /**
+ * <p>When a list is truncated, this element specifies the last part in the list,
+ * as well as the value to use for the part-number-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline int GetPartNumberMarker() const{ return m_partNumberMarker; }
+
+ /**
+ * <p>When a list is truncated, this element specifies the last part in the list,
+ * as well as the value to use for the part-number-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline void SetPartNumberMarker(int value) { m_partNumberMarker = value; }
+
+ /**
+ * <p>When a list is truncated, this element specifies the last part in the list,
+ * as well as the value to use for the part-number-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline ListPartsResult& WithPartNumberMarker(int value) { SetPartNumberMarker(value); return *this;}
+
+
+ /**
+ * <p>When a list is truncated, this element specifies the last part in the list,
+ * as well as the value to use for the part-number-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline int GetNextPartNumberMarker() const{ return m_nextPartNumberMarker; }
+
+ /**
+ * <p>When a list is truncated, this element specifies the last part in the list,
+ * as well as the value to use for the part-number-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline void SetNextPartNumberMarker(int value) { m_nextPartNumberMarker = value; }
+
+ /**
+ * <p>When a list is truncated, this element specifies the last part in the list,
+ * as well as the value to use for the part-number-marker request parameter in a
+ * subsequent request.</p>
+ */
+ inline ListPartsResult& WithNextPartNumberMarker(int value) { SetNextPartNumberMarker(value); return *this;}
+
+
+ /**
+ * <p>Maximum number of parts that were allowed in the response.</p>
+ */
+ inline int GetMaxParts() const{ return m_maxParts; }
+
+ /**
+ * <p>Maximum number of parts that were allowed in the response.</p>
+ */
+ inline void SetMaxParts(int value) { m_maxParts = value; }
+
+ /**
+ * <p>Maximum number of parts that were allowed in the response.</p>
+ */
+ inline ListPartsResult& WithMaxParts(int value) { SetMaxParts(value); return *this;}
+
+
+ /**
+ * <p> Indicates whether the returned list of parts is truncated. A true value
+ * indicates that the list was truncated. A list can be truncated if the number of
+ * parts exceeds the limit returned in the MaxParts element.</p>
+ */
+ inline bool GetIsTruncated() const{ return m_isTruncated; }
+
+ /**
+ * <p> Indicates whether the returned list of parts is truncated. A true value
+ * indicates that the list was truncated. A list can be truncated if the number of
+ * parts exceeds the limit returned in the MaxParts element.</p>
+ */
+ inline void SetIsTruncated(bool value) { m_isTruncated = value; }
+
+ /**
+ * <p> Indicates whether the returned list of parts is truncated. A true value
+ * indicates that the list was truncated. A list can be truncated if the number of
+ * parts exceeds the limit returned in the MaxParts element.</p>
+ */
+ inline ListPartsResult& WithIsTruncated(bool value) { SetIsTruncated(value); return *this;}
+
+
+ /**
+ * <p> Container for elements related to a particular part. A response can contain
+ * zero or more <code>Part</code> elements.</p>
+ */
+ inline const Aws::Vector<Part>& GetParts() const{ return m_parts; }
+
+ /**
+ * <p> Container for elements related to a particular part. A response can contain
+ * zero or more <code>Part</code> elements.</p>
+ */
+ inline void SetParts(const Aws::Vector<Part>& value) { m_parts = value; }
+
+ /**
+ * <p> Container for elements related to a particular part. A response can contain
+ * zero or more <code>Part</code> elements.</p>
+ */
+ inline void SetParts(Aws::Vector<Part>&& value) { m_parts = std::move(value); }
+
+ /**
+ * <p> Container for elements related to a particular part. A response can contain
+ * zero or more <code>Part</code> elements.</p>
+ */
+ inline ListPartsResult& WithParts(const Aws::Vector<Part>& value) { SetParts(value); return *this;}
+
+ /**
+ * <p> Container for elements related to a particular part. A response can contain
+ * zero or more <code>Part</code> elements.</p>
+ */
+ inline ListPartsResult& WithParts(Aws::Vector<Part>&& value) { SetParts(std::move(value)); return *this;}
+
+ /**
+ * <p> Container for elements related to a particular part. A response can contain
+ * zero or more <code>Part</code> elements.</p>
+ */
+ inline ListPartsResult& AddParts(const Part& value) { m_parts.push_back(value); return *this; }
+
+ /**
+ * <p> Container for elements related to a particular part. A response can contain
+ * zero or more <code>Part</code> elements.</p>
+ */
+ inline ListPartsResult& AddParts(Part&& value) { m_parts.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Container element that identifies who initiated the multipart upload. If the
+ * initiator is an AWS account, this element provides the same information as the
+ * <code>Owner</code> element. If the initiator is an IAM User, this element
+ * provides the user ARN and display name.</p>
+ */
+ inline const Initiator& GetInitiator() const{ return m_initiator; }
+
+ /**
+ * <p>Container element that identifies who initiated the multipart upload. If the
+ * initiator is an AWS account, this element provides the same information as the
+ * <code>Owner</code> element. If the initiator is an IAM User, this element
+ * provides the user ARN and display name.</p>
+ */
+ inline void SetInitiator(const Initiator& value) { m_initiator = value; }
+
+ /**
+ * <p>Container element that identifies who initiated the multipart upload. If the
+ * initiator is an AWS account, this element provides the same information as the
+ * <code>Owner</code> element. If the initiator is an IAM User, this element
+ * provides the user ARN and display name.</p>
+ */
+ inline void SetInitiator(Initiator&& value) { m_initiator = std::move(value); }
+
+ /**
+ * <p>Container element that identifies who initiated the multipart upload. If the
+ * initiator is an AWS account, this element provides the same information as the
+ * <code>Owner</code> element. If the initiator is an IAM User, this element
+ * provides the user ARN and display name.</p>
+ */
+ inline ListPartsResult& WithInitiator(const Initiator& value) { SetInitiator(value); return *this;}
+
+ /**
+ * <p>Container element that identifies who initiated the multipart upload. If the
+ * initiator is an AWS account, this element provides the same information as the
+ * <code>Owner</code> element. If the initiator is an IAM User, this element
+ * provides the user ARN and display name.</p>
+ */
+ inline ListPartsResult& WithInitiator(Initiator&& value) { SetInitiator(std::move(value)); return *this;}
+
+
+ /**
+ * <p> Container element that identifies the object owner, after the object is
+ * created. If multipart upload is initiated by an IAM user, this element provides
+ * the parent account ID and display name.</p>
+ */
+ inline const Owner& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p> Container element that identifies the object owner, after the object is
+ * created. If multipart upload is initiated by an IAM user, this element provides
+ * the parent account ID and display name.</p>
+ */
+ inline void SetOwner(const Owner& value) { m_owner = value; }
+
+ /**
+ * <p> Container element that identifies the object owner, after the object is
+ * created. If multipart upload is initiated by an IAM user, this element provides
+ * the parent account ID and display name.</p>
+ */
+ inline void SetOwner(Owner&& value) { m_owner = std::move(value); }
+
+ /**
+ * <p> Container element that identifies the object owner, after the object is
+ * created. If multipart upload is initiated by an IAM user, this element provides
+ * the parent account ID and display name.</p>
+ */
+ inline ListPartsResult& WithOwner(const Owner& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p> Container element that identifies the object owner, after the object is
+ * created. If multipart upload is initiated by an IAM user, this element provides
+ * the parent account ID and display name.</p>
+ */
+ inline ListPartsResult& WithOwner(Owner&& value) { SetOwner(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
+ * object.</p>
+ */
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
+ * object.</p>
+ */
+ inline void SetStorageClass(const StorageClass& value) { m_storageClass = value; }
+
+ /**
+ * <p>Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
+ * object.</p>
+ */
+ inline void SetStorageClass(StorageClass&& value) { m_storageClass = std::move(value); }
+
+ /**
+ * <p>Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
+ * object.</p>
+ */
+ inline ListPartsResult& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
+ * object.</p>
+ */
+ inline ListPartsResult& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline ListPartsResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline ListPartsResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ Aws::Utils::DateTime m_abortDate;
+
+ Aws::String m_abortRuleId;
+
+ Aws::String m_bucket;
+
+ Aws::String m_key;
+
+ Aws::String m_uploadId;
+
+ int m_partNumberMarker;
+
+ int m_nextPartNumberMarker;
+
+ int m_maxParts;
+
+ bool m_isTruncated;
+
+ Aws::Vector<Part> m_parts;
+
+ Initiator m_initiator;
+
+ Owner m_owner;
+
+ StorageClass m_storageClass;
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LoggingEnabled.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LoggingEnabled.h
new file mode 100644
index 00000000000..444fbf49f05
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/LoggingEnabled.h
@@ -0,0 +1,238 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/TargetGrant.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes where logs are stored and the prefix that Amazon S3 assigns to all
+ * log object keys for a bucket. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html">PUT
+ * Bucket logging</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/LoggingEnabled">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API LoggingEnabled
+ {
+ public:
+ LoggingEnabled();
+ LoggingEnabled(const Aws::Utils::Xml::XmlNode& xmlNode);
+ LoggingEnabled& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the bucket where you want Amazon S3 to store server access logs.
+ * You can have your logs delivered to any bucket that you own, including the same
+ * bucket that is being logged. You can also configure multiple buckets to deliver
+ * their logs to the same target bucket. In this case, you should choose a
+ * different <code>TargetPrefix</code> for each source bucket so that the delivered
+ * log files can be distinguished by key.</p>
+ */
+ inline const Aws::String& GetTargetBucket() const{ return m_targetBucket; }
+
+ /**
+ * <p>Specifies the bucket where you want Amazon S3 to store server access logs.
+ * You can have your logs delivered to any bucket that you own, including the same
+ * bucket that is being logged. You can also configure multiple buckets to deliver
+ * their logs to the same target bucket. In this case, you should choose a
+ * different <code>TargetPrefix</code> for each source bucket so that the delivered
+ * log files can be distinguished by key.</p>
+ */
+ inline bool TargetBucketHasBeenSet() const { return m_targetBucketHasBeenSet; }
+
+ /**
+ * <p>Specifies the bucket where you want Amazon S3 to store server access logs.
+ * You can have your logs delivered to any bucket that you own, including the same
+ * bucket that is being logged. You can also configure multiple buckets to deliver
+ * their logs to the same target bucket. In this case, you should choose a
+ * different <code>TargetPrefix</code> for each source bucket so that the delivered
+ * log files can be distinguished by key.</p>
+ */
+ inline void SetTargetBucket(const Aws::String& value) { m_targetBucketHasBeenSet = true; m_targetBucket = value; }
+
+ /**
+ * <p>Specifies the bucket where you want Amazon S3 to store server access logs.
+ * You can have your logs delivered to any bucket that you own, including the same
+ * bucket that is being logged. You can also configure multiple buckets to deliver
+ * their logs to the same target bucket. In this case, you should choose a
+ * different <code>TargetPrefix</code> for each source bucket so that the delivered
+ * log files can be distinguished by key.</p>
+ */
+ inline void SetTargetBucket(Aws::String&& value) { m_targetBucketHasBeenSet = true; m_targetBucket = std::move(value); }
+
+ /**
+ * <p>Specifies the bucket where you want Amazon S3 to store server access logs.
+ * You can have your logs delivered to any bucket that you own, including the same
+ * bucket that is being logged. You can also configure multiple buckets to deliver
+ * their logs to the same target bucket. In this case, you should choose a
+ * different <code>TargetPrefix</code> for each source bucket so that the delivered
+ * log files can be distinguished by key.</p>
+ */
+ inline void SetTargetBucket(const char* value) { m_targetBucketHasBeenSet = true; m_targetBucket.assign(value); }
+
+ /**
+ * <p>Specifies the bucket where you want Amazon S3 to store server access logs.
+ * You can have your logs delivered to any bucket that you own, including the same
+ * bucket that is being logged. You can also configure multiple buckets to deliver
+ * their logs to the same target bucket. In this case, you should choose a
+ * different <code>TargetPrefix</code> for each source bucket so that the delivered
+ * log files can be distinguished by key.</p>
+ */
+ inline LoggingEnabled& WithTargetBucket(const Aws::String& value) { SetTargetBucket(value); return *this;}
+
+ /**
+ * <p>Specifies the bucket where you want Amazon S3 to store server access logs.
+ * You can have your logs delivered to any bucket that you own, including the same
+ * bucket that is being logged. You can also configure multiple buckets to deliver
+ * their logs to the same target bucket. In this case, you should choose a
+ * different <code>TargetPrefix</code> for each source bucket so that the delivered
+ * log files can be distinguished by key.</p>
+ */
+ inline LoggingEnabled& WithTargetBucket(Aws::String&& value) { SetTargetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the bucket where you want Amazon S3 to store server access logs.
+ * You can have your logs delivered to any bucket that you own, including the same
+ * bucket that is being logged. You can also configure multiple buckets to deliver
+ * their logs to the same target bucket. In this case, you should choose a
+ * different <code>TargetPrefix</code> for each source bucket so that the delivered
+ * log files can be distinguished by key.</p>
+ */
+ inline LoggingEnabled& WithTargetBucket(const char* value) { SetTargetBucket(value); return *this;}
+
+
+ /**
+ * <p>Container for granting information.</p>
+ */
+ inline const Aws::Vector<TargetGrant>& GetTargetGrants() const{ return m_targetGrants; }
+
+ /**
+ * <p>Container for granting information.</p>
+ */
+ inline bool TargetGrantsHasBeenSet() const { return m_targetGrantsHasBeenSet; }
+
+ /**
+ * <p>Container for granting information.</p>
+ */
+ inline void SetTargetGrants(const Aws::Vector<TargetGrant>& value) { m_targetGrantsHasBeenSet = true; m_targetGrants = value; }
+
+ /**
+ * <p>Container for granting information.</p>
+ */
+ inline void SetTargetGrants(Aws::Vector<TargetGrant>&& value) { m_targetGrantsHasBeenSet = true; m_targetGrants = std::move(value); }
+
+ /**
+ * <p>Container for granting information.</p>
+ */
+ inline LoggingEnabled& WithTargetGrants(const Aws::Vector<TargetGrant>& value) { SetTargetGrants(value); return *this;}
+
+ /**
+ * <p>Container for granting information.</p>
+ */
+ inline LoggingEnabled& WithTargetGrants(Aws::Vector<TargetGrant>&& value) { SetTargetGrants(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for granting information.</p>
+ */
+ inline LoggingEnabled& AddTargetGrants(const TargetGrant& value) { m_targetGrantsHasBeenSet = true; m_targetGrants.push_back(value); return *this; }
+
+ /**
+ * <p>Container for granting information.</p>
+ */
+ inline LoggingEnabled& AddTargetGrants(TargetGrant&& value) { m_targetGrantsHasBeenSet = true; m_targetGrants.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>A prefix for all log object keys. If you store log files from multiple Amazon
+ * S3 buckets in a single bucket, you can use a prefix to distinguish which log
+ * files came from which bucket.</p>
+ */
+ inline const Aws::String& GetTargetPrefix() const{ return m_targetPrefix; }
+
+ /**
+ * <p>A prefix for all log object keys. If you store log files from multiple Amazon
+ * S3 buckets in a single bucket, you can use a prefix to distinguish which log
+ * files came from which bucket.</p>
+ */
+ inline bool TargetPrefixHasBeenSet() const { return m_targetPrefixHasBeenSet; }
+
+ /**
+ * <p>A prefix for all log object keys. If you store log files from multiple Amazon
+ * S3 buckets in a single bucket, you can use a prefix to distinguish which log
+ * files came from which bucket.</p>
+ */
+ inline void SetTargetPrefix(const Aws::String& value) { m_targetPrefixHasBeenSet = true; m_targetPrefix = value; }
+
+ /**
+ * <p>A prefix for all log object keys. If you store log files from multiple Amazon
+ * S3 buckets in a single bucket, you can use a prefix to distinguish which log
+ * files came from which bucket.</p>
+ */
+ inline void SetTargetPrefix(Aws::String&& value) { m_targetPrefixHasBeenSet = true; m_targetPrefix = std::move(value); }
+
+ /**
+ * <p>A prefix for all log object keys. If you store log files from multiple Amazon
+ * S3 buckets in a single bucket, you can use a prefix to distinguish which log
+ * files came from which bucket.</p>
+ */
+ inline void SetTargetPrefix(const char* value) { m_targetPrefixHasBeenSet = true; m_targetPrefix.assign(value); }
+
+ /**
+ * <p>A prefix for all log object keys. If you store log files from multiple Amazon
+ * S3 buckets in a single bucket, you can use a prefix to distinguish which log
+ * files came from which bucket.</p>
+ */
+ inline LoggingEnabled& WithTargetPrefix(const Aws::String& value) { SetTargetPrefix(value); return *this;}
+
+ /**
+ * <p>A prefix for all log object keys. If you store log files from multiple Amazon
+ * S3 buckets in a single bucket, you can use a prefix to distinguish which log
+ * files came from which bucket.</p>
+ */
+ inline LoggingEnabled& WithTargetPrefix(Aws::String&& value) { SetTargetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>A prefix for all log object keys. If you store log files from multiple Amazon
+ * S3 buckets in a single bucket, you can use a prefix to distinguish which log
+ * files came from which bucket.</p>
+ */
+ inline LoggingEnabled& WithTargetPrefix(const char* value) { SetTargetPrefix(value); return *this;}
+
+ private:
+
+ Aws::String m_targetBucket;
+ bool m_targetBucketHasBeenSet;
+
+ Aws::Vector<TargetGrant> m_targetGrants;
+ bool m_targetGrantsHasBeenSet;
+
+ Aws::String m_targetPrefix;
+ bool m_targetPrefixHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MFADelete.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MFADelete.h
new file mode 100644
index 00000000000..02a689681e1
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MFADelete.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class MFADelete
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace MFADeleteMapper
+{
+AWS_S3_API MFADelete GetMFADeleteForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForMFADelete(MFADelete value);
+} // namespace MFADeleteMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MFADeleteStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MFADeleteStatus.h
new file mode 100644
index 00000000000..f48fcf21ca3
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MFADeleteStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class MFADeleteStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace MFADeleteStatusMapper
+{
+AWS_S3_API MFADeleteStatus GetMFADeleteStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForMFADeleteStatus(MFADeleteStatus value);
+} // namespace MFADeleteStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetadataDirective.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetadataDirective.h
new file mode 100644
index 00000000000..74e71b2a420
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetadataDirective.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class MetadataDirective
+ {
+ NOT_SET,
+ COPY,
+ REPLACE
+ };
+
+namespace MetadataDirectiveMapper
+{
+AWS_S3_API MetadataDirective GetMetadataDirectiveForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForMetadataDirective(MetadataDirective value);
+} // namespace MetadataDirectiveMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetadataEntry.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetadataEntry.h
new file mode 100644
index 00000000000..b6d876e9181
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetadataEntry.h
@@ -0,0 +1,132 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A metadata key-value pair to store with an object.</p><p><h3>See Also:</h3>
+ * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/MetadataEntry">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API MetadataEntry
+ {
+ public:
+ MetadataEntry();
+ MetadataEntry(const Aws::Utils::Xml::XmlNode& xmlNode);
+ MetadataEntry& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Name of the Object.</p>
+ */
+ inline const Aws::String& GetName() const{ return m_name; }
+
+ /**
+ * <p>Name of the Object.</p>
+ */
+ inline bool NameHasBeenSet() const { return m_nameHasBeenSet; }
+
+ /**
+ * <p>Name of the Object.</p>
+ */
+ inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; }
+
+ /**
+ * <p>Name of the Object.</p>
+ */
+ inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); }
+
+ /**
+ * <p>Name of the Object.</p>
+ */
+ inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); }
+
+ /**
+ * <p>Name of the Object.</p>
+ */
+ inline MetadataEntry& WithName(const Aws::String& value) { SetName(value); return *this;}
+
+ /**
+ * <p>Name of the Object.</p>
+ */
+ inline MetadataEntry& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
+
+ /**
+ * <p>Name of the Object.</p>
+ */
+ inline MetadataEntry& WithName(const char* value) { SetName(value); return *this;}
+
+
+ /**
+ * <p>Value of the Object.</p>
+ */
+ inline const Aws::String& GetValue() const{ return m_value; }
+
+ /**
+ * <p>Value of the Object.</p>
+ */
+ inline bool ValueHasBeenSet() const { return m_valueHasBeenSet; }
+
+ /**
+ * <p>Value of the Object.</p>
+ */
+ inline void SetValue(const Aws::String& value) { m_valueHasBeenSet = true; m_value = value; }
+
+ /**
+ * <p>Value of the Object.</p>
+ */
+ inline void SetValue(Aws::String&& value) { m_valueHasBeenSet = true; m_value = std::move(value); }
+
+ /**
+ * <p>Value of the Object.</p>
+ */
+ inline void SetValue(const char* value) { m_valueHasBeenSet = true; m_value.assign(value); }
+
+ /**
+ * <p>Value of the Object.</p>
+ */
+ inline MetadataEntry& WithValue(const Aws::String& value) { SetValue(value); return *this;}
+
+ /**
+ * <p>Value of the Object.</p>
+ */
+ inline MetadataEntry& WithValue(Aws::String&& value) { SetValue(std::move(value)); return *this;}
+
+ /**
+ * <p>Value of the Object.</p>
+ */
+ inline MetadataEntry& WithValue(const char* value) { SetValue(value); return *this;}
+
+ private:
+
+ Aws::String m_name;
+ bool m_nameHasBeenSet;
+
+ Aws::String m_value;
+ bool m_valueHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Metrics.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Metrics.h
new file mode 100644
index 00000000000..815b2b556cc
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Metrics.h
@@ -0,0 +1,120 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/MetricsStatus.h>
+#include <aws/s3/model/ReplicationTimeValue.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p> A container specifying replication metrics-related settings enabling
+ * replication metrics and events.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Metrics">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Metrics
+ {
+ public:
+ Metrics();
+ Metrics(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Metrics& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p> Specifies whether the replication metrics are enabled. </p>
+ */
+ inline const MetricsStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p> Specifies whether the replication metrics are enabled. </p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p> Specifies whether the replication metrics are enabled. </p>
+ */
+ inline void SetStatus(const MetricsStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p> Specifies whether the replication metrics are enabled. </p>
+ */
+ inline void SetStatus(MetricsStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p> Specifies whether the replication metrics are enabled. </p>
+ */
+ inline Metrics& WithStatus(const MetricsStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p> Specifies whether the replication metrics are enabled. </p>
+ */
+ inline Metrics& WithStatus(MetricsStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p> A container specifying the time threshold for emitting the
+ * <code>s3:Replication:OperationMissedThreshold</code> event. </p>
+ */
+ inline const ReplicationTimeValue& GetEventThreshold() const{ return m_eventThreshold; }
+
+ /**
+ * <p> A container specifying the time threshold for emitting the
+ * <code>s3:Replication:OperationMissedThreshold</code> event. </p>
+ */
+ inline bool EventThresholdHasBeenSet() const { return m_eventThresholdHasBeenSet; }
+
+ /**
+ * <p> A container specifying the time threshold for emitting the
+ * <code>s3:Replication:OperationMissedThreshold</code> event. </p>
+ */
+ inline void SetEventThreshold(const ReplicationTimeValue& value) { m_eventThresholdHasBeenSet = true; m_eventThreshold = value; }
+
+ /**
+ * <p> A container specifying the time threshold for emitting the
+ * <code>s3:Replication:OperationMissedThreshold</code> event. </p>
+ */
+ inline void SetEventThreshold(ReplicationTimeValue&& value) { m_eventThresholdHasBeenSet = true; m_eventThreshold = std::move(value); }
+
+ /**
+ * <p> A container specifying the time threshold for emitting the
+ * <code>s3:Replication:OperationMissedThreshold</code> event. </p>
+ */
+ inline Metrics& WithEventThreshold(const ReplicationTimeValue& value) { SetEventThreshold(value); return *this;}
+
+ /**
+ * <p> A container specifying the time threshold for emitting the
+ * <code>s3:Replication:OperationMissedThreshold</code> event. </p>
+ */
+ inline Metrics& WithEventThreshold(ReplicationTimeValue&& value) { SetEventThreshold(std::move(value)); return *this;}
+
+ private:
+
+ MetricsStatus m_status;
+ bool m_statusHasBeenSet;
+
+ ReplicationTimeValue m_eventThreshold;
+ bool m_eventThresholdHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsAndOperator.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsAndOperator.h
new file mode 100644
index 00000000000..e413af11d93
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsAndOperator.h
@@ -0,0 +1,137 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tag.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/MetricsAndOperator">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API MetricsAndOperator
+ {
+ public:
+ MetricsAndOperator();
+ MetricsAndOperator(const Aws::Utils::Xml::XmlNode& xmlNode);
+ MetricsAndOperator& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The prefix used when evaluating an AND predicate.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>The prefix used when evaluating an AND predicate.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>The prefix used when evaluating an AND predicate.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>The prefix used when evaluating an AND predicate.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>The prefix used when evaluating an AND predicate.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>The prefix used when evaluating an AND predicate.</p>
+ */
+ inline MetricsAndOperator& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>The prefix used when evaluating an AND predicate.</p>
+ */
+ inline MetricsAndOperator& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>The prefix used when evaluating an AND predicate.</p>
+ */
+ inline MetricsAndOperator& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>The list of tags used when evaluating an AND predicate.</p>
+ */
+ inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
+
+ /**
+ * <p>The list of tags used when evaluating an AND predicate.</p>
+ */
+ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
+
+ /**
+ * <p>The list of tags used when evaluating an AND predicate.</p>
+ */
+ inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
+
+ /**
+ * <p>The list of tags used when evaluating an AND predicate.</p>
+ */
+ inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
+
+ /**
+ * <p>The list of tags used when evaluating an AND predicate.</p>
+ */
+ inline MetricsAndOperator& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
+
+ /**
+ * <p>The list of tags used when evaluating an AND predicate.</p>
+ */
+ inline MetricsAndOperator& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
+
+ /**
+ * <p>The list of tags used when evaluating an AND predicate.</p>
+ */
+ inline MetricsAndOperator& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
+
+ /**
+ * <p>The list of tags used when evaluating an AND predicate.</p>
+ */
+ inline MetricsAndOperator& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Aws::Vector<Tag> m_tags;
+ bool m_tagsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsConfiguration.h
new file mode 100644
index 00000000000..57abb1c6534
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsConfiguration.h
@@ -0,0 +1,142 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/MetricsFilter.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies a metrics configuration for the CloudWatch request metrics
+ * (specified by the metrics configuration ID) from an Amazon S3 bucket. If you're
+ * updating an existing metrics configuration, note that this is a full replacement
+ * of the existing metrics configuration. If you don't include the elements you
+ * want to keep, they are erased. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html">
+ * PUT Bucket metrics</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/MetricsConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API MetricsConfiguration
+ {
+ public:
+ MetricsConfiguration();
+ MetricsConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ MetricsConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline MetricsConfiguration& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline MetricsConfiguration& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline MetricsConfiguration& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>Specifies a metrics configuration filter. The metrics configuration will only
+ * include objects that meet the filter's criteria. A filter must be a prefix, a
+ * tag, or a conjunction (MetricsAndOperator).</p>
+ */
+ inline const MetricsFilter& GetFilter() const{ return m_filter; }
+
+ /**
+ * <p>Specifies a metrics configuration filter. The metrics configuration will only
+ * include objects that meet the filter's criteria. A filter must be a prefix, a
+ * tag, or a conjunction (MetricsAndOperator).</p>
+ */
+ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
+
+ /**
+ * <p>Specifies a metrics configuration filter. The metrics configuration will only
+ * include objects that meet the filter's criteria. A filter must be a prefix, a
+ * tag, or a conjunction (MetricsAndOperator).</p>
+ */
+ inline void SetFilter(const MetricsFilter& value) { m_filterHasBeenSet = true; m_filter = value; }
+
+ /**
+ * <p>Specifies a metrics configuration filter. The metrics configuration will only
+ * include objects that meet the filter's criteria. A filter must be a prefix, a
+ * tag, or a conjunction (MetricsAndOperator).</p>
+ */
+ inline void SetFilter(MetricsFilter&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
+
+ /**
+ * <p>Specifies a metrics configuration filter. The metrics configuration will only
+ * include objects that meet the filter's criteria. A filter must be a prefix, a
+ * tag, or a conjunction (MetricsAndOperator).</p>
+ */
+ inline MetricsConfiguration& WithFilter(const MetricsFilter& value) { SetFilter(value); return *this;}
+
+ /**
+ * <p>Specifies a metrics configuration filter. The metrics configuration will only
+ * include objects that meet the filter's criteria. A filter must be a prefix, a
+ * tag, or a conjunction (MetricsAndOperator).</p>
+ */
+ inline MetricsConfiguration& WithFilter(MetricsFilter&& value) { SetFilter(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ MetricsFilter m_filter;
+ bool m_filterHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsFilter.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsFilter.h
new file mode 100644
index 00000000000..1305abdf21f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsFilter.h
@@ -0,0 +1,172 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Tag.h>
+#include <aws/s3/model/MetricsAndOperator.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies a metrics configuration filter. The metrics configuration only
+ * includes objects that meet the filter's criteria. A filter must be a prefix, a
+ * tag, or a conjunction (MetricsAndOperator).</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/MetricsFilter">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API MetricsFilter
+ {
+ public:
+ MetricsFilter();
+ MetricsFilter(const Aws::Utils::Xml::XmlNode& xmlNode);
+ MetricsFilter& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The prefix used when evaluating a metrics filter.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>The prefix used when evaluating a metrics filter.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>The prefix used when evaluating a metrics filter.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>The prefix used when evaluating a metrics filter.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>The prefix used when evaluating a metrics filter.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>The prefix used when evaluating a metrics filter.</p>
+ */
+ inline MetricsFilter& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>The prefix used when evaluating a metrics filter.</p>
+ */
+ inline MetricsFilter& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>The prefix used when evaluating a metrics filter.</p>
+ */
+ inline MetricsFilter& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>The tag used when evaluating a metrics filter.</p>
+ */
+ inline const Tag& GetTag() const{ return m_tag; }
+
+ /**
+ * <p>The tag used when evaluating a metrics filter.</p>
+ */
+ inline bool TagHasBeenSet() const { return m_tagHasBeenSet; }
+
+ /**
+ * <p>The tag used when evaluating a metrics filter.</p>
+ */
+ inline void SetTag(const Tag& value) { m_tagHasBeenSet = true; m_tag = value; }
+
+ /**
+ * <p>The tag used when evaluating a metrics filter.</p>
+ */
+ inline void SetTag(Tag&& value) { m_tagHasBeenSet = true; m_tag = std::move(value); }
+
+ /**
+ * <p>The tag used when evaluating a metrics filter.</p>
+ */
+ inline MetricsFilter& WithTag(const Tag& value) { SetTag(value); return *this;}
+
+ /**
+ * <p>The tag used when evaluating a metrics filter.</p>
+ */
+ inline MetricsFilter& WithTag(Tag&& value) { SetTag(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline const MetricsAndOperator& GetAnd() const{ return m_and; }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline bool AndHasBeenSet() const { return m_andHasBeenSet; }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline void SetAnd(const MetricsAndOperator& value) { m_andHasBeenSet = true; m_and = value; }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline void SetAnd(MetricsAndOperator&& value) { m_andHasBeenSet = true; m_and = std::move(value); }
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline MetricsFilter& WithAnd(const MetricsAndOperator& value) { SetAnd(value); return *this;}
+
+ /**
+ * <p>A conjunction (logical AND) of predicates, which is used in evaluating a
+ * metrics filter. The operator must have at least two predicates, and an object
+ * must match all of the predicates in order for the filter to apply.</p>
+ */
+ inline MetricsFilter& WithAnd(MetricsAndOperator&& value) { SetAnd(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Tag m_tag;
+ bool m_tagHasBeenSet;
+
+ MetricsAndOperator m_and;
+ bool m_andHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsStatus.h
new file mode 100644
index 00000000000..adaa3d7b65b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MetricsStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class MetricsStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace MetricsStatusMapper
+{
+AWS_S3_API MetricsStatus GetMetricsStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForMetricsStatus(MetricsStatus value);
+} // namespace MetricsStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MultipartUpload.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MultipartUpload.h
new file mode 100644
index 00000000000..29eafa4222c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/MultipartUpload.h
@@ -0,0 +1,273 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/Owner.h>
+#include <aws/s3/model/Initiator.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for the <code>MultipartUpload</code> for the Amazon S3
+ * object.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/MultipartUpload">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API MultipartUpload
+ {
+ public:
+ MultipartUpload();
+ MultipartUpload(const Aws::Utils::Xml::XmlNode& xmlNode);
+ MultipartUpload& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline const Aws::String& GetUploadId() const{ return m_uploadId; }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline bool UploadIdHasBeenSet() const { return m_uploadIdHasBeenSet; }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline void SetUploadId(const Aws::String& value) { m_uploadIdHasBeenSet = true; m_uploadId = value; }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline void SetUploadId(Aws::String&& value) { m_uploadIdHasBeenSet = true; m_uploadId = std::move(value); }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline void SetUploadId(const char* value) { m_uploadIdHasBeenSet = true; m_uploadId.assign(value); }
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline MultipartUpload& WithUploadId(const Aws::String& value) { SetUploadId(value); return *this;}
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline MultipartUpload& WithUploadId(Aws::String&& value) { SetUploadId(std::move(value)); return *this;}
+
+ /**
+ * <p>Upload ID that identifies the multipart upload.</p>
+ */
+ inline MultipartUpload& WithUploadId(const char* value) { SetUploadId(value); return *this;}
+
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline MultipartUpload& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline MultipartUpload& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Key of the object for which the multipart upload was initiated.</p>
+ */
+ inline MultipartUpload& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Date and time at which the multipart upload was initiated.</p>
+ */
+ inline const Aws::Utils::DateTime& GetInitiated() const{ return m_initiated; }
+
+ /**
+ * <p>Date and time at which the multipart upload was initiated.</p>
+ */
+ inline bool InitiatedHasBeenSet() const { return m_initiatedHasBeenSet; }
+
+ /**
+ * <p>Date and time at which the multipart upload was initiated.</p>
+ */
+ inline void SetInitiated(const Aws::Utils::DateTime& value) { m_initiatedHasBeenSet = true; m_initiated = value; }
+
+ /**
+ * <p>Date and time at which the multipart upload was initiated.</p>
+ */
+ inline void SetInitiated(Aws::Utils::DateTime&& value) { m_initiatedHasBeenSet = true; m_initiated = std::move(value); }
+
+ /**
+ * <p>Date and time at which the multipart upload was initiated.</p>
+ */
+ inline MultipartUpload& WithInitiated(const Aws::Utils::DateTime& value) { SetInitiated(value); return *this;}
+
+ /**
+ * <p>Date and time at which the multipart upload was initiated.</p>
+ */
+ inline MultipartUpload& WithInitiated(Aws::Utils::DateTime&& value) { SetInitiated(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline void SetStorageClass(const StorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline void SetStorageClass(StorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline MultipartUpload& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline MultipartUpload& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the owner of the object that is part of the multipart upload. </p>
+ */
+ inline const Owner& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p>Specifies the owner of the object that is part of the multipart upload. </p>
+ */
+ inline bool OwnerHasBeenSet() const { return m_ownerHasBeenSet; }
+
+ /**
+ * <p>Specifies the owner of the object that is part of the multipart upload. </p>
+ */
+ inline void SetOwner(const Owner& value) { m_ownerHasBeenSet = true; m_owner = value; }
+
+ /**
+ * <p>Specifies the owner of the object that is part of the multipart upload. </p>
+ */
+ inline void SetOwner(Owner&& value) { m_ownerHasBeenSet = true; m_owner = std::move(value); }
+
+ /**
+ * <p>Specifies the owner of the object that is part of the multipart upload. </p>
+ */
+ inline MultipartUpload& WithOwner(const Owner& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p>Specifies the owner of the object that is part of the multipart upload. </p>
+ */
+ inline MultipartUpload& WithOwner(Owner&& value) { SetOwner(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Identifies who initiated the multipart upload.</p>
+ */
+ inline const Initiator& GetInitiator() const{ return m_initiator; }
+
+ /**
+ * <p>Identifies who initiated the multipart upload.</p>
+ */
+ inline bool InitiatorHasBeenSet() const { return m_initiatorHasBeenSet; }
+
+ /**
+ * <p>Identifies who initiated the multipart upload.</p>
+ */
+ inline void SetInitiator(const Initiator& value) { m_initiatorHasBeenSet = true; m_initiator = value; }
+
+ /**
+ * <p>Identifies who initiated the multipart upload.</p>
+ */
+ inline void SetInitiator(Initiator&& value) { m_initiatorHasBeenSet = true; m_initiator = std::move(value); }
+
+ /**
+ * <p>Identifies who initiated the multipart upload.</p>
+ */
+ inline MultipartUpload& WithInitiator(const Initiator& value) { SetInitiator(value); return *this;}
+
+ /**
+ * <p>Identifies who initiated the multipart upload.</p>
+ */
+ inline MultipartUpload& WithInitiator(Initiator&& value) { SetInitiator(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_uploadId;
+ bool m_uploadIdHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::Utils::DateTime m_initiated;
+ bool m_initiatedHasBeenSet;
+
+ StorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+
+ Owner m_owner;
+ bool m_ownerHasBeenSet;
+
+ Initiator m_initiator;
+ bool m_initiatorHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NoncurrentVersionExpiration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NoncurrentVersionExpiration.h
new file mode 100644
index 00000000000..9e966d77226
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NoncurrentVersionExpiration.h
@@ -0,0 +1,90 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies when noncurrent object versions expire. Upon expiration, Amazon S3
+ * permanently deletes the noncurrent object versions. You set this lifecycle
+ * configuration action on a bucket that has versioning enabled (or suspended) to
+ * request that Amazon S3 delete noncurrent object versions at a specific period in
+ * the object's lifetime.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/NoncurrentVersionExpiration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API NoncurrentVersionExpiration
+ {
+ public:
+ NoncurrentVersionExpiration();
+ NoncurrentVersionExpiration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ NoncurrentVersionExpiration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the number of days an object is noncurrent before Amazon S3 can
+ * perform the associated action. For information about the noncurrent days
+ * calculations, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations">How
+ * Amazon S3 Calculates When an Object Became Noncurrent</a> in the <i>Amazon
+ * Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline int GetNoncurrentDays() const{ return m_noncurrentDays; }
+
+ /**
+ * <p>Specifies the number of days an object is noncurrent before Amazon S3 can
+ * perform the associated action. For information about the noncurrent days
+ * calculations, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations">How
+ * Amazon S3 Calculates When an Object Became Noncurrent</a> in the <i>Amazon
+ * Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline bool NoncurrentDaysHasBeenSet() const { return m_noncurrentDaysHasBeenSet; }
+
+ /**
+ * <p>Specifies the number of days an object is noncurrent before Amazon S3 can
+ * perform the associated action. For information about the noncurrent days
+ * calculations, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations">How
+ * Amazon S3 Calculates When an Object Became Noncurrent</a> in the <i>Amazon
+ * Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetNoncurrentDays(int value) { m_noncurrentDaysHasBeenSet = true; m_noncurrentDays = value; }
+
+ /**
+ * <p>Specifies the number of days an object is noncurrent before Amazon S3 can
+ * perform the associated action. For information about the noncurrent days
+ * calculations, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations">How
+ * Amazon S3 Calculates When an Object Became Noncurrent</a> in the <i>Amazon
+ * Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline NoncurrentVersionExpiration& WithNoncurrentDays(int value) { SetNoncurrentDays(value); return *this;}
+
+ private:
+
+ int m_noncurrentDays;
+ bool m_noncurrentDaysHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NoncurrentVersionTransition.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NoncurrentVersionTransition.h
new file mode 100644
index 00000000000..03c21414a59
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NoncurrentVersionTransition.h
@@ -0,0 +1,130 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/TransitionStorageClass.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for the transition rule that describes when noncurrent objects
+ * transition to the <code>STANDARD_IA</code>, <code>ONEZONE_IA</code>,
+ * <code>INTELLIGENT_TIERING</code>, <code>GLACIER</code>, or
+ * <code>DEEP_ARCHIVE</code> storage class. If your bucket is versioning-enabled
+ * (or versioning is suspended), you can set this action to request that Amazon S3
+ * transition noncurrent object versions to the <code>STANDARD_IA</code>,
+ * <code>ONEZONE_IA</code>, <code>INTELLIGENT_TIERING</code>, <code>GLACIER</code>,
+ * or <code>DEEP_ARCHIVE</code> storage class at a specific period in the object's
+ * lifetime.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/NoncurrentVersionTransition">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API NoncurrentVersionTransition
+ {
+ public:
+ NoncurrentVersionTransition();
+ NoncurrentVersionTransition(const Aws::Utils::Xml::XmlNode& xmlNode);
+ NoncurrentVersionTransition& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the number of days an object is noncurrent before Amazon S3 can
+ * perform the associated action. For information about the noncurrent days
+ * calculations, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations">How
+ * Amazon S3 Calculates How Long an Object Has Been Noncurrent</a> in the <i>Amazon
+ * Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline int GetNoncurrentDays() const{ return m_noncurrentDays; }
+
+ /**
+ * <p>Specifies the number of days an object is noncurrent before Amazon S3 can
+ * perform the associated action. For information about the noncurrent days
+ * calculations, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations">How
+ * Amazon S3 Calculates How Long an Object Has Been Noncurrent</a> in the <i>Amazon
+ * Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline bool NoncurrentDaysHasBeenSet() const { return m_noncurrentDaysHasBeenSet; }
+
+ /**
+ * <p>Specifies the number of days an object is noncurrent before Amazon S3 can
+ * perform the associated action. For information about the noncurrent days
+ * calculations, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations">How
+ * Amazon S3 Calculates How Long an Object Has Been Noncurrent</a> in the <i>Amazon
+ * Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetNoncurrentDays(int value) { m_noncurrentDaysHasBeenSet = true; m_noncurrentDays = value; }
+
+ /**
+ * <p>Specifies the number of days an object is noncurrent before Amazon S3 can
+ * perform the associated action. For information about the noncurrent days
+ * calculations, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations">How
+ * Amazon S3 Calculates How Long an Object Has Been Noncurrent</a> in the <i>Amazon
+ * Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline NoncurrentVersionTransition& WithNoncurrentDays(int value) { SetNoncurrentDays(value); return *this;}
+
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline const TransitionStorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline void SetStorageClass(const TransitionStorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline void SetStorageClass(TransitionStorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline NoncurrentVersionTransition& WithStorageClass(const TransitionStorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline NoncurrentVersionTransition& WithStorageClass(TransitionStorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+ private:
+
+ int m_noncurrentDays;
+ bool m_noncurrentDaysHasBeenSet;
+
+ TransitionStorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfiguration.h
new file mode 100644
index 00000000000..f479b46490e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfiguration.h
@@ -0,0 +1,205 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/TopicConfiguration.h>
+#include <aws/s3/model/QueueConfiguration.h>
+#include <aws/s3/model/LambdaFunctionConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for specifying the notification configuration of the bucket. If
+ * this element is empty, notifications are turned off for the
+ * bucket.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/NotificationConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API NotificationConfiguration
+ {
+ public:
+ NotificationConfiguration();
+ NotificationConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ NotificationConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline const Aws::Vector<TopicConfiguration>& GetTopicConfigurations() const{ return m_topicConfigurations; }
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline bool TopicConfigurationsHasBeenSet() const { return m_topicConfigurationsHasBeenSet; }
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline void SetTopicConfigurations(const Aws::Vector<TopicConfiguration>& value) { m_topicConfigurationsHasBeenSet = true; m_topicConfigurations = value; }
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline void SetTopicConfigurations(Aws::Vector<TopicConfiguration>&& value) { m_topicConfigurationsHasBeenSet = true; m_topicConfigurations = std::move(value); }
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline NotificationConfiguration& WithTopicConfigurations(const Aws::Vector<TopicConfiguration>& value) { SetTopicConfigurations(value); return *this;}
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline NotificationConfiguration& WithTopicConfigurations(Aws::Vector<TopicConfiguration>&& value) { SetTopicConfigurations(std::move(value)); return *this;}
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline NotificationConfiguration& AddTopicConfigurations(const TopicConfiguration& value) { m_topicConfigurationsHasBeenSet = true; m_topicConfigurations.push_back(value); return *this; }
+
+ /**
+ * <p>The topic to which notifications are sent and the events for which
+ * notifications are generated.</p>
+ */
+ inline NotificationConfiguration& AddTopicConfigurations(TopicConfiguration&& value) { m_topicConfigurationsHasBeenSet = true; m_topicConfigurations.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline const Aws::Vector<QueueConfiguration>& GetQueueConfigurations() const{ return m_queueConfigurations; }
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline bool QueueConfigurationsHasBeenSet() const { return m_queueConfigurationsHasBeenSet; }
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline void SetQueueConfigurations(const Aws::Vector<QueueConfiguration>& value) { m_queueConfigurationsHasBeenSet = true; m_queueConfigurations = value; }
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline void SetQueueConfigurations(Aws::Vector<QueueConfiguration>&& value) { m_queueConfigurationsHasBeenSet = true; m_queueConfigurations = std::move(value); }
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline NotificationConfiguration& WithQueueConfigurations(const Aws::Vector<QueueConfiguration>& value) { SetQueueConfigurations(value); return *this;}
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline NotificationConfiguration& WithQueueConfigurations(Aws::Vector<QueueConfiguration>&& value) { SetQueueConfigurations(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline NotificationConfiguration& AddQueueConfigurations(const QueueConfiguration& value) { m_queueConfigurationsHasBeenSet = true; m_queueConfigurations.push_back(value); return *this; }
+
+ /**
+ * <p>The Amazon Simple Queue Service queues to publish messages to and the events
+ * for which to publish messages.</p>
+ */
+ inline NotificationConfiguration& AddQueueConfigurations(QueueConfiguration&& value) { m_queueConfigurationsHasBeenSet = true; m_queueConfigurations.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline const Aws::Vector<LambdaFunctionConfiguration>& GetLambdaFunctionConfigurations() const{ return m_lambdaFunctionConfigurations; }
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline bool LambdaFunctionConfigurationsHasBeenSet() const { return m_lambdaFunctionConfigurationsHasBeenSet; }
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline void SetLambdaFunctionConfigurations(const Aws::Vector<LambdaFunctionConfiguration>& value) { m_lambdaFunctionConfigurationsHasBeenSet = true; m_lambdaFunctionConfigurations = value; }
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline void SetLambdaFunctionConfigurations(Aws::Vector<LambdaFunctionConfiguration>&& value) { m_lambdaFunctionConfigurationsHasBeenSet = true; m_lambdaFunctionConfigurations = std::move(value); }
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline NotificationConfiguration& WithLambdaFunctionConfigurations(const Aws::Vector<LambdaFunctionConfiguration>& value) { SetLambdaFunctionConfigurations(value); return *this;}
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline NotificationConfiguration& WithLambdaFunctionConfigurations(Aws::Vector<LambdaFunctionConfiguration>&& value) { SetLambdaFunctionConfigurations(std::move(value)); return *this;}
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline NotificationConfiguration& AddLambdaFunctionConfigurations(const LambdaFunctionConfiguration& value) { m_lambdaFunctionConfigurationsHasBeenSet = true; m_lambdaFunctionConfigurations.push_back(value); return *this; }
+
+ /**
+ * <p>Describes the AWS Lambda functions to invoke and the events for which to
+ * invoke them.</p>
+ */
+ inline NotificationConfiguration& AddLambdaFunctionConfigurations(LambdaFunctionConfiguration&& value) { m_lambdaFunctionConfigurationsHasBeenSet = true; m_lambdaFunctionConfigurations.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<TopicConfiguration> m_topicConfigurations;
+ bool m_topicConfigurationsHasBeenSet;
+
+ Aws::Vector<QueueConfiguration> m_queueConfigurations;
+ bool m_queueConfigurationsHasBeenSet;
+
+ Aws::Vector<LambdaFunctionConfiguration> m_lambdaFunctionConfigurations;
+ bool m_lambdaFunctionConfigurationsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfigurationDeprecated.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfigurationDeprecated.h
new file mode 100644
index 00000000000..fabb46afcf6
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfigurationDeprecated.h
@@ -0,0 +1,167 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/TopicConfigurationDeprecated.h>
+#include <aws/s3/model/QueueConfigurationDeprecated.h>
+#include <aws/s3/model/CloudFunctionConfiguration.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ class AWS_S3_API NotificationConfigurationDeprecated
+ {
+ public:
+ NotificationConfigurationDeprecated();
+ NotificationConfigurationDeprecated(const Aws::Utils::Xml::XmlNode& xmlNode);
+ NotificationConfigurationDeprecated& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>This data type is deprecated. A container for specifying the configuration
+ * for publication of messages to an Amazon Simple Notification Service (Amazon
+ * SNS) topic when Amazon S3 detects specified events. </p>
+ */
+ inline const TopicConfigurationDeprecated& GetTopicConfiguration() const{ return m_topicConfiguration; }
+
+ /**
+ * <p>This data type is deprecated. A container for specifying the configuration
+ * for publication of messages to an Amazon Simple Notification Service (Amazon
+ * SNS) topic when Amazon S3 detects specified events. </p>
+ */
+ inline bool TopicConfigurationHasBeenSet() const { return m_topicConfigurationHasBeenSet; }
+
+ /**
+ * <p>This data type is deprecated. A container for specifying the configuration
+ * for publication of messages to an Amazon Simple Notification Service (Amazon
+ * SNS) topic when Amazon S3 detects specified events. </p>
+ */
+ inline void SetTopicConfiguration(const TopicConfigurationDeprecated& value) { m_topicConfigurationHasBeenSet = true; m_topicConfiguration = value; }
+
+ /**
+ * <p>This data type is deprecated. A container for specifying the configuration
+ * for publication of messages to an Amazon Simple Notification Service (Amazon
+ * SNS) topic when Amazon S3 detects specified events. </p>
+ */
+ inline void SetTopicConfiguration(TopicConfigurationDeprecated&& value) { m_topicConfigurationHasBeenSet = true; m_topicConfiguration = std::move(value); }
+
+ /**
+ * <p>This data type is deprecated. A container for specifying the configuration
+ * for publication of messages to an Amazon Simple Notification Service (Amazon
+ * SNS) topic when Amazon S3 detects specified events. </p>
+ */
+ inline NotificationConfigurationDeprecated& WithTopicConfiguration(const TopicConfigurationDeprecated& value) { SetTopicConfiguration(value); return *this;}
+
+ /**
+ * <p>This data type is deprecated. A container for specifying the configuration
+ * for publication of messages to an Amazon Simple Notification Service (Amazon
+ * SNS) topic when Amazon S3 detects specified events. </p>
+ */
+ inline NotificationConfigurationDeprecated& WithTopicConfiguration(TopicConfigurationDeprecated&& value) { SetTopicConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>This data type is deprecated. This data type specifies the configuration for
+ * publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue when
+ * Amazon S3 detects specified events. </p>
+ */
+ inline const QueueConfigurationDeprecated& GetQueueConfiguration() const{ return m_queueConfiguration; }
+
+ /**
+ * <p>This data type is deprecated. This data type specifies the configuration for
+ * publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue when
+ * Amazon S3 detects specified events. </p>
+ */
+ inline bool QueueConfigurationHasBeenSet() const { return m_queueConfigurationHasBeenSet; }
+
+ /**
+ * <p>This data type is deprecated. This data type specifies the configuration for
+ * publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue when
+ * Amazon S3 detects specified events. </p>
+ */
+ inline void SetQueueConfiguration(const QueueConfigurationDeprecated& value) { m_queueConfigurationHasBeenSet = true; m_queueConfiguration = value; }
+
+ /**
+ * <p>This data type is deprecated. This data type specifies the configuration for
+ * publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue when
+ * Amazon S3 detects specified events. </p>
+ */
+ inline void SetQueueConfiguration(QueueConfigurationDeprecated&& value) { m_queueConfigurationHasBeenSet = true; m_queueConfiguration = std::move(value); }
+
+ /**
+ * <p>This data type is deprecated. This data type specifies the configuration for
+ * publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue when
+ * Amazon S3 detects specified events. </p>
+ */
+ inline NotificationConfigurationDeprecated& WithQueueConfiguration(const QueueConfigurationDeprecated& value) { SetQueueConfiguration(value); return *this;}
+
+ /**
+ * <p>This data type is deprecated. This data type specifies the configuration for
+ * publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue when
+ * Amazon S3 detects specified events. </p>
+ */
+ inline NotificationConfigurationDeprecated& WithQueueConfiguration(QueueConfigurationDeprecated&& value) { SetQueueConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Container for specifying the AWS Lambda notification configuration.</p>
+ */
+ inline const CloudFunctionConfiguration& GetCloudFunctionConfiguration() const{ return m_cloudFunctionConfiguration; }
+
+ /**
+ * <p>Container for specifying the AWS Lambda notification configuration.</p>
+ */
+ inline bool CloudFunctionConfigurationHasBeenSet() const { return m_cloudFunctionConfigurationHasBeenSet; }
+
+ /**
+ * <p>Container for specifying the AWS Lambda notification configuration.</p>
+ */
+ inline void SetCloudFunctionConfiguration(const CloudFunctionConfiguration& value) { m_cloudFunctionConfigurationHasBeenSet = true; m_cloudFunctionConfiguration = value; }
+
+ /**
+ * <p>Container for specifying the AWS Lambda notification configuration.</p>
+ */
+ inline void SetCloudFunctionConfiguration(CloudFunctionConfiguration&& value) { m_cloudFunctionConfigurationHasBeenSet = true; m_cloudFunctionConfiguration = std::move(value); }
+
+ /**
+ * <p>Container for specifying the AWS Lambda notification configuration.</p>
+ */
+ inline NotificationConfigurationDeprecated& WithCloudFunctionConfiguration(const CloudFunctionConfiguration& value) { SetCloudFunctionConfiguration(value); return *this;}
+
+ /**
+ * <p>Container for specifying the AWS Lambda notification configuration.</p>
+ */
+ inline NotificationConfigurationDeprecated& WithCloudFunctionConfiguration(CloudFunctionConfiguration&& value) { SetCloudFunctionConfiguration(std::move(value)); return *this;}
+
+ private:
+
+ TopicConfigurationDeprecated m_topicConfiguration;
+ bool m_topicConfigurationHasBeenSet;
+
+ QueueConfigurationDeprecated m_queueConfiguration;
+ bool m_queueConfigurationHasBeenSet;
+
+ CloudFunctionConfiguration m_cloudFunctionConfiguration;
+ bool m_cloudFunctionConfigurationHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfigurationFilter.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfigurationFilter.h
new file mode 100644
index 00000000000..36e3ba429f3
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/NotificationConfigurationFilter.h
@@ -0,0 +1,70 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/S3KeyFilter.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies object key name filtering rules. For information about key name
+ * filtering, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Configuring
+ * Event Notifications</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/NotificationConfigurationFilter">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API NotificationConfigurationFilter
+ {
+ public:
+ NotificationConfigurationFilter();
+ NotificationConfigurationFilter(const Aws::Utils::Xml::XmlNode& xmlNode);
+ NotificationConfigurationFilter& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const S3KeyFilter& GetKey() const{ return m_key; }
+
+
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+
+ inline void SetKey(const S3KeyFilter& value) { m_keyHasBeenSet = true; m_key = value; }
+
+
+ inline void SetKey(S3KeyFilter&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+
+ inline NotificationConfigurationFilter& WithKey(const S3KeyFilter& value) { SetKey(value); return *this;}
+
+
+ inline NotificationConfigurationFilter& WithKey(S3KeyFilter&& value) { SetKey(std::move(value)); return *this;}
+
+ private:
+
+ S3KeyFilter m_key;
+ bool m_keyHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Object.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Object.h
new file mode 100644
index 00000000000..a041642ca79
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Object.h
@@ -0,0 +1,358 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/s3/model/ObjectStorageClass.h>
+#include <aws/s3/model/Owner.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>An object consists of data and its descriptive metadata.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Object">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Object
+ {
+ public:
+ Object();
+ Object(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Object& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The name that you assign to an object. You use the object key to retrieve the
+ * object.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The name that you assign to an object. You use the object key to retrieve the
+ * object.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The name that you assign to an object. You use the object key to retrieve the
+ * object.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The name that you assign to an object. You use the object key to retrieve the
+ * object.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The name that you assign to an object. You use the object key to retrieve the
+ * object.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The name that you assign to an object. You use the object key to retrieve the
+ * object.</p>
+ */
+ inline Object& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The name that you assign to an object. You use the object key to retrieve the
+ * object.</p>
+ */
+ inline Object& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The name that you assign to an object. You use the object key to retrieve the
+ * object.</p>
+ */
+ inline Object& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The date the Object was Last Modified</p>
+ */
+ inline const Aws::Utils::DateTime& GetLastModified() const{ return m_lastModified; }
+
+ /**
+ * <p>The date the Object was Last Modified</p>
+ */
+ inline bool LastModifiedHasBeenSet() const { return m_lastModifiedHasBeenSet; }
+
+ /**
+ * <p>The date the Object was Last Modified</p>
+ */
+ inline void SetLastModified(const Aws::Utils::DateTime& value) { m_lastModifiedHasBeenSet = true; m_lastModified = value; }
+
+ /**
+ * <p>The date the Object was Last Modified</p>
+ */
+ inline void SetLastModified(Aws::Utils::DateTime&& value) { m_lastModifiedHasBeenSet = true; m_lastModified = std::move(value); }
+
+ /**
+ * <p>The date the Object was Last Modified</p>
+ */
+ inline Object& WithLastModified(const Aws::Utils::DateTime& value) { SetLastModified(value); return *this;}
+
+ /**
+ * <p>The date the Object was Last Modified</p>
+ */
+ inline Object& WithLastModified(Aws::Utils::DateTime&& value) { SetLastModified(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The entity tag is a hash of the object. The ETag reflects changes only to the
+ * contents of an object, not its metadata. The ETag may or may not be an MD5
+ * digest of the object data. Whether or not it is depends on how the object was
+ * created and how it is encrypted as described below:</p> <ul> <li> <p>Objects
+ * created by the PUT Object, POST Object, or Copy operation, or through the AWS
+ * Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that
+ * are an MD5 digest of their object data.</p> </li> <li> <p>Objects created by the
+ * PUT Object, POST Object, or Copy operation, or through the AWS Management
+ * Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5
+ * digest of their object data.</p> </li> <li> <p>If an object is created by either
+ * the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest,
+ * regardless of the method of encryption.</p> </li> </ul>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>The entity tag is a hash of the object. The ETag reflects changes only to the
+ * contents of an object, not its metadata. The ETag may or may not be an MD5
+ * digest of the object data. Whether or not it is depends on how the object was
+ * created and how it is encrypted as described below:</p> <ul> <li> <p>Objects
+ * created by the PUT Object, POST Object, or Copy operation, or through the AWS
+ * Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that
+ * are an MD5 digest of their object data.</p> </li> <li> <p>Objects created by the
+ * PUT Object, POST Object, or Copy operation, or through the AWS Management
+ * Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5
+ * digest of their object data.</p> </li> <li> <p>If an object is created by either
+ * the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest,
+ * regardless of the method of encryption.</p> </li> </ul>
+ */
+ inline bool ETagHasBeenSet() const { return m_eTagHasBeenSet; }
+
+ /**
+ * <p>The entity tag is a hash of the object. The ETag reflects changes only to the
+ * contents of an object, not its metadata. The ETag may or may not be an MD5
+ * digest of the object data. Whether or not it is depends on how the object was
+ * created and how it is encrypted as described below:</p> <ul> <li> <p>Objects
+ * created by the PUT Object, POST Object, or Copy operation, or through the AWS
+ * Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that
+ * are an MD5 digest of their object data.</p> </li> <li> <p>Objects created by the
+ * PUT Object, POST Object, or Copy operation, or through the AWS Management
+ * Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5
+ * digest of their object data.</p> </li> <li> <p>If an object is created by either
+ * the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest,
+ * regardless of the method of encryption.</p> </li> </ul>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTagHasBeenSet = true; m_eTag = value; }
+
+ /**
+ * <p>The entity tag is a hash of the object. The ETag reflects changes only to the
+ * contents of an object, not its metadata. The ETag may or may not be an MD5
+ * digest of the object data. Whether or not it is depends on how the object was
+ * created and how it is encrypted as described below:</p> <ul> <li> <p>Objects
+ * created by the PUT Object, POST Object, or Copy operation, or through the AWS
+ * Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that
+ * are an MD5 digest of their object data.</p> </li> <li> <p>Objects created by the
+ * PUT Object, POST Object, or Copy operation, or through the AWS Management
+ * Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5
+ * digest of their object data.</p> </li> <li> <p>If an object is created by either
+ * the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest,
+ * regardless of the method of encryption.</p> </li> </ul>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTagHasBeenSet = true; m_eTag = std::move(value); }
+
+ /**
+ * <p>The entity tag is a hash of the object. The ETag reflects changes only to the
+ * contents of an object, not its metadata. The ETag may or may not be an MD5
+ * digest of the object data. Whether or not it is depends on how the object was
+ * created and how it is encrypted as described below:</p> <ul> <li> <p>Objects
+ * created by the PUT Object, POST Object, or Copy operation, or through the AWS
+ * Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that
+ * are an MD5 digest of their object data.</p> </li> <li> <p>Objects created by the
+ * PUT Object, POST Object, or Copy operation, or through the AWS Management
+ * Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5
+ * digest of their object data.</p> </li> <li> <p>If an object is created by either
+ * the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest,
+ * regardless of the method of encryption.</p> </li> </ul>
+ */
+ inline void SetETag(const char* value) { m_eTagHasBeenSet = true; m_eTag.assign(value); }
+
+ /**
+ * <p>The entity tag is a hash of the object. The ETag reflects changes only to the
+ * contents of an object, not its metadata. The ETag may or may not be an MD5
+ * digest of the object data. Whether or not it is depends on how the object was
+ * created and how it is encrypted as described below:</p> <ul> <li> <p>Objects
+ * created by the PUT Object, POST Object, or Copy operation, or through the AWS
+ * Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that
+ * are an MD5 digest of their object data.</p> </li> <li> <p>Objects created by the
+ * PUT Object, POST Object, or Copy operation, or through the AWS Management
+ * Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5
+ * digest of their object data.</p> </li> <li> <p>If an object is created by either
+ * the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest,
+ * regardless of the method of encryption.</p> </li> </ul>
+ */
+ inline Object& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>The entity tag is a hash of the object. The ETag reflects changes only to the
+ * contents of an object, not its metadata. The ETag may or may not be an MD5
+ * digest of the object data. Whether or not it is depends on how the object was
+ * created and how it is encrypted as described below:</p> <ul> <li> <p>Objects
+ * created by the PUT Object, POST Object, or Copy operation, or through the AWS
+ * Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that
+ * are an MD5 digest of their object data.</p> </li> <li> <p>Objects created by the
+ * PUT Object, POST Object, or Copy operation, or through the AWS Management
+ * Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5
+ * digest of their object data.</p> </li> <li> <p>If an object is created by either
+ * the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest,
+ * regardless of the method of encryption.</p> </li> </ul>
+ */
+ inline Object& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>The entity tag is a hash of the object. The ETag reflects changes only to the
+ * contents of an object, not its metadata. The ETag may or may not be an MD5
+ * digest of the object data. Whether or not it is depends on how the object was
+ * created and how it is encrypted as described below:</p> <ul> <li> <p>Objects
+ * created by the PUT Object, POST Object, or Copy operation, or through the AWS
+ * Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that
+ * are an MD5 digest of their object data.</p> </li> <li> <p>Objects created by the
+ * PUT Object, POST Object, or Copy operation, or through the AWS Management
+ * Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5
+ * digest of their object data.</p> </li> <li> <p>If an object is created by either
+ * the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest,
+ * regardless of the method of encryption.</p> </li> </ul>
+ */
+ inline Object& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>Size in bytes of the object</p>
+ */
+ inline long long GetSize() const{ return m_size; }
+
+ /**
+ * <p>Size in bytes of the object</p>
+ */
+ inline bool SizeHasBeenSet() const { return m_sizeHasBeenSet; }
+
+ /**
+ * <p>Size in bytes of the object</p>
+ */
+ inline void SetSize(long long value) { m_sizeHasBeenSet = true; m_size = value; }
+
+ /**
+ * <p>Size in bytes of the object</p>
+ */
+ inline Object& WithSize(long long value) { SetSize(value); return *this;}
+
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline const ObjectStorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline void SetStorageClass(const ObjectStorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline void SetStorageClass(ObjectStorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline Object& WithStorageClass(const ObjectStorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline Object& WithStorageClass(ObjectStorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The owner of the object</p>
+ */
+ inline const Owner& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p>The owner of the object</p>
+ */
+ inline bool OwnerHasBeenSet() const { return m_ownerHasBeenSet; }
+
+ /**
+ * <p>The owner of the object</p>
+ */
+ inline void SetOwner(const Owner& value) { m_ownerHasBeenSet = true; m_owner = value; }
+
+ /**
+ * <p>The owner of the object</p>
+ */
+ inline void SetOwner(Owner&& value) { m_ownerHasBeenSet = true; m_owner = std::move(value); }
+
+ /**
+ * <p>The owner of the object</p>
+ */
+ inline Object& WithOwner(const Owner& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p>The owner of the object</p>
+ */
+ inline Object& WithOwner(Owner&& value) { SetOwner(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::Utils::DateTime m_lastModified;
+ bool m_lastModifiedHasBeenSet;
+
+ Aws::String m_eTag;
+ bool m_eTagHasBeenSet;
+
+ long long m_size;
+ bool m_sizeHasBeenSet;
+
+ ObjectStorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+
+ Owner m_owner;
+ bool m_ownerHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectCannedACL.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectCannedACL.h
new file mode 100644
index 00000000000..7c5c6376c9d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectCannedACL.h
@@ -0,0 +1,36 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ObjectCannedACL
+ {
+ NOT_SET,
+ private_,
+ public_read,
+ public_read_write,
+ authenticated_read,
+ aws_exec_read,
+ bucket_owner_read,
+ bucket_owner_full_control
+ };
+
+namespace ObjectCannedACLMapper
+{
+AWS_S3_API ObjectCannedACL GetObjectCannedACLForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForObjectCannedACL(ObjectCannedACL value);
+} // namespace ObjectCannedACLMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectIdentifier.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectIdentifier.h
new file mode 100644
index 00000000000..ef7bdd50a8f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectIdentifier.h
@@ -0,0 +1,133 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Object Identifier is unique value to identify objects.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ObjectIdentifier">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ObjectIdentifier
+ {
+ public:
+ ObjectIdentifier();
+ ObjectIdentifier(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ObjectIdentifier& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline ObjectIdentifier& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline ObjectIdentifier& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Key name of the object to delete.</p>
+ */
+ inline ObjectIdentifier& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>VersionId for the specific version of the object to delete.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>VersionId for the specific version of the object to delete.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>VersionId for the specific version of the object to delete.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>VersionId for the specific version of the object to delete.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>VersionId for the specific version of the object to delete.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>VersionId for the specific version of the object to delete.</p>
+ */
+ inline ObjectIdentifier& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>VersionId for the specific version of the object to delete.</p>
+ */
+ inline ObjectIdentifier& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>VersionId for the specific version of the object to delete.</p>
+ */
+ inline ObjectIdentifier& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+ private:
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockConfiguration.h
new file mode 100644
index 00000000000..4d83cc9565a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockConfiguration.h
@@ -0,0 +1,114 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ObjectLockEnabled.h>
+#include <aws/s3/model/ObjectLockRule.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The container element for Object Lock configuration parameters.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ObjectLockConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ObjectLockConfiguration
+ {
+ public:
+ ObjectLockConfiguration();
+ ObjectLockConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ObjectLockConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Indicates whether this bucket has an Object Lock configuration enabled.</p>
+ */
+ inline const ObjectLockEnabled& GetObjectLockEnabled() const{ return m_objectLockEnabled; }
+
+ /**
+ * <p>Indicates whether this bucket has an Object Lock configuration enabled.</p>
+ */
+ inline bool ObjectLockEnabledHasBeenSet() const { return m_objectLockEnabledHasBeenSet; }
+
+ /**
+ * <p>Indicates whether this bucket has an Object Lock configuration enabled.</p>
+ */
+ inline void SetObjectLockEnabled(const ObjectLockEnabled& value) { m_objectLockEnabledHasBeenSet = true; m_objectLockEnabled = value; }
+
+ /**
+ * <p>Indicates whether this bucket has an Object Lock configuration enabled.</p>
+ */
+ inline void SetObjectLockEnabled(ObjectLockEnabled&& value) { m_objectLockEnabledHasBeenSet = true; m_objectLockEnabled = std::move(value); }
+
+ /**
+ * <p>Indicates whether this bucket has an Object Lock configuration enabled.</p>
+ */
+ inline ObjectLockConfiguration& WithObjectLockEnabled(const ObjectLockEnabled& value) { SetObjectLockEnabled(value); return *this;}
+
+ /**
+ * <p>Indicates whether this bucket has an Object Lock configuration enabled.</p>
+ */
+ inline ObjectLockConfiguration& WithObjectLockEnabled(ObjectLockEnabled&& value) { SetObjectLockEnabled(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The Object Lock rule in place for the specified object.</p>
+ */
+ inline const ObjectLockRule& GetRule() const{ return m_rule; }
+
+ /**
+ * <p>The Object Lock rule in place for the specified object.</p>
+ */
+ inline bool RuleHasBeenSet() const { return m_ruleHasBeenSet; }
+
+ /**
+ * <p>The Object Lock rule in place for the specified object.</p>
+ */
+ inline void SetRule(const ObjectLockRule& value) { m_ruleHasBeenSet = true; m_rule = value; }
+
+ /**
+ * <p>The Object Lock rule in place for the specified object.</p>
+ */
+ inline void SetRule(ObjectLockRule&& value) { m_ruleHasBeenSet = true; m_rule = std::move(value); }
+
+ /**
+ * <p>The Object Lock rule in place for the specified object.</p>
+ */
+ inline ObjectLockConfiguration& WithRule(const ObjectLockRule& value) { SetRule(value); return *this;}
+
+ /**
+ * <p>The Object Lock rule in place for the specified object.</p>
+ */
+ inline ObjectLockConfiguration& WithRule(ObjectLockRule&& value) { SetRule(std::move(value)); return *this;}
+
+ private:
+
+ ObjectLockEnabled m_objectLockEnabled;
+ bool m_objectLockEnabledHasBeenSet;
+
+ ObjectLockRule m_rule;
+ bool m_ruleHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockEnabled.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockEnabled.h
new file mode 100644
index 00000000000..fb7bf42351f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockEnabled.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ObjectLockEnabled
+ {
+ NOT_SET,
+ Enabled
+ };
+
+namespace ObjectLockEnabledMapper
+{
+AWS_S3_API ObjectLockEnabled GetObjectLockEnabledForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForObjectLockEnabled(ObjectLockEnabled value);
+} // namespace ObjectLockEnabledMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockLegalHold.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockLegalHold.h
new file mode 100644
index 00000000000..fdeba38ddab
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockLegalHold.h
@@ -0,0 +1,78 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ObjectLockLegalHoldStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A Legal Hold configuration for an object.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ObjectLockLegalHold">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ObjectLockLegalHold
+ {
+ public:
+ ObjectLockLegalHold();
+ ObjectLockLegalHold(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ObjectLockLegalHold& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Indicates whether the specified object has a Legal Hold in place.</p>
+ */
+ inline const ObjectLockLegalHoldStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>Indicates whether the specified object has a Legal Hold in place.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>Indicates whether the specified object has a Legal Hold in place.</p>
+ */
+ inline void SetStatus(const ObjectLockLegalHoldStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>Indicates whether the specified object has a Legal Hold in place.</p>
+ */
+ inline void SetStatus(ObjectLockLegalHoldStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>Indicates whether the specified object has a Legal Hold in place.</p>
+ */
+ inline ObjectLockLegalHold& WithStatus(const ObjectLockLegalHoldStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>Indicates whether the specified object has a Legal Hold in place.</p>
+ */
+ inline ObjectLockLegalHold& WithStatus(ObjectLockLegalHoldStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+ private:
+
+ ObjectLockLegalHoldStatus m_status;
+ bool m_statusHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockLegalHoldStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockLegalHoldStatus.h
new file mode 100644
index 00000000000..8c3960640d5
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockLegalHoldStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ObjectLockLegalHoldStatus
+ {
+ NOT_SET,
+ ON,
+ OFF
+ };
+
+namespace ObjectLockLegalHoldStatusMapper
+{
+AWS_S3_API ObjectLockLegalHoldStatus GetObjectLockLegalHoldStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus value);
+} // namespace ObjectLockLegalHoldStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockMode.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockMode.h
new file mode 100644
index 00000000000..06f90156673
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockMode.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ObjectLockMode
+ {
+ NOT_SET,
+ GOVERNANCE,
+ COMPLIANCE
+ };
+
+namespace ObjectLockModeMapper
+{
+AWS_S3_API ObjectLockMode GetObjectLockModeForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForObjectLockMode(ObjectLockMode value);
+} // namespace ObjectLockModeMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRetention.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRetention.h
new file mode 100644
index 00000000000..26c60fdb78e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRetention.h
@@ -0,0 +1,113 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ObjectLockRetentionMode.h>
+#include <aws/core/utils/DateTime.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A Retention configuration for an object.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ObjectLockRetention">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ObjectLockRetention
+ {
+ public:
+ ObjectLockRetention();
+ ObjectLockRetention(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ObjectLockRetention& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Indicates the Retention mode for the specified object.</p>
+ */
+ inline const ObjectLockRetentionMode& GetMode() const{ return m_mode; }
+
+ /**
+ * <p>Indicates the Retention mode for the specified object.</p>
+ */
+ inline bool ModeHasBeenSet() const { return m_modeHasBeenSet; }
+
+ /**
+ * <p>Indicates the Retention mode for the specified object.</p>
+ */
+ inline void SetMode(const ObjectLockRetentionMode& value) { m_modeHasBeenSet = true; m_mode = value; }
+
+ /**
+ * <p>Indicates the Retention mode for the specified object.</p>
+ */
+ inline void SetMode(ObjectLockRetentionMode&& value) { m_modeHasBeenSet = true; m_mode = std::move(value); }
+
+ /**
+ * <p>Indicates the Retention mode for the specified object.</p>
+ */
+ inline ObjectLockRetention& WithMode(const ObjectLockRetentionMode& value) { SetMode(value); return *this;}
+
+ /**
+ * <p>Indicates the Retention mode for the specified object.</p>
+ */
+ inline ObjectLockRetention& WithMode(ObjectLockRetentionMode&& value) { SetMode(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The date on which this Object Lock Retention will expire.</p>
+ */
+ inline const Aws::Utils::DateTime& GetRetainUntilDate() const{ return m_retainUntilDate; }
+
+ /**
+ * <p>The date on which this Object Lock Retention will expire.</p>
+ */
+ inline bool RetainUntilDateHasBeenSet() const { return m_retainUntilDateHasBeenSet; }
+
+ /**
+ * <p>The date on which this Object Lock Retention will expire.</p>
+ */
+ inline void SetRetainUntilDate(const Aws::Utils::DateTime& value) { m_retainUntilDateHasBeenSet = true; m_retainUntilDate = value; }
+
+ /**
+ * <p>The date on which this Object Lock Retention will expire.</p>
+ */
+ inline void SetRetainUntilDate(Aws::Utils::DateTime&& value) { m_retainUntilDateHasBeenSet = true; m_retainUntilDate = std::move(value); }
+
+ /**
+ * <p>The date on which this Object Lock Retention will expire.</p>
+ */
+ inline ObjectLockRetention& WithRetainUntilDate(const Aws::Utils::DateTime& value) { SetRetainUntilDate(value); return *this;}
+
+ /**
+ * <p>The date on which this Object Lock Retention will expire.</p>
+ */
+ inline ObjectLockRetention& WithRetainUntilDate(Aws::Utils::DateTime&& value) { SetRetainUntilDate(std::move(value)); return *this;}
+
+ private:
+
+ ObjectLockRetentionMode m_mode;
+ bool m_modeHasBeenSet;
+
+ Aws::Utils::DateTime m_retainUntilDate;
+ bool m_retainUntilDateHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRetentionMode.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRetentionMode.h
new file mode 100644
index 00000000000..099f787e823
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRetentionMode.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ObjectLockRetentionMode
+ {
+ NOT_SET,
+ GOVERNANCE,
+ COMPLIANCE
+ };
+
+namespace ObjectLockRetentionModeMapper
+{
+AWS_S3_API ObjectLockRetentionMode GetObjectLockRetentionModeForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForObjectLockRetentionMode(ObjectLockRetentionMode value);
+} // namespace ObjectLockRetentionModeMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRule.h
new file mode 100644
index 00000000000..17523929d64
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectLockRule.h
@@ -0,0 +1,84 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/DefaultRetention.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The container element for an Object Lock rule.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ObjectLockRule">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ObjectLockRule
+ {
+ public:
+ ObjectLockRule();
+ ObjectLockRule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ObjectLockRule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The default retention period that you want to apply to new objects placed in
+ * the specified bucket.</p>
+ */
+ inline const DefaultRetention& GetDefaultRetention() const{ return m_defaultRetention; }
+
+ /**
+ * <p>The default retention period that you want to apply to new objects placed in
+ * the specified bucket.</p>
+ */
+ inline bool DefaultRetentionHasBeenSet() const { return m_defaultRetentionHasBeenSet; }
+
+ /**
+ * <p>The default retention period that you want to apply to new objects placed in
+ * the specified bucket.</p>
+ */
+ inline void SetDefaultRetention(const DefaultRetention& value) { m_defaultRetentionHasBeenSet = true; m_defaultRetention = value; }
+
+ /**
+ * <p>The default retention period that you want to apply to new objects placed in
+ * the specified bucket.</p>
+ */
+ inline void SetDefaultRetention(DefaultRetention&& value) { m_defaultRetentionHasBeenSet = true; m_defaultRetention = std::move(value); }
+
+ /**
+ * <p>The default retention period that you want to apply to new objects placed in
+ * the specified bucket.</p>
+ */
+ inline ObjectLockRule& WithDefaultRetention(const DefaultRetention& value) { SetDefaultRetention(value); return *this;}
+
+ /**
+ * <p>The default retention period that you want to apply to new objects placed in
+ * the specified bucket.</p>
+ */
+ inline ObjectLockRule& WithDefaultRetention(DefaultRetention&& value) { SetDefaultRetention(std::move(value)); return *this;}
+
+ private:
+
+ DefaultRetention m_defaultRetention;
+ bool m_defaultRetentionHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectOwnership.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectOwnership.h
new file mode 100644
index 00000000000..06ba5f9daa7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectOwnership.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ObjectOwnership
+ {
+ NOT_SET,
+ BucketOwnerPreferred,
+ ObjectWriter
+ };
+
+namespace ObjectOwnershipMapper
+{
+AWS_S3_API ObjectOwnership GetObjectOwnershipForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForObjectOwnership(ObjectOwnership value);
+} // namespace ObjectOwnershipMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectStorageClass.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectStorageClass.h
new file mode 100644
index 00000000000..814e5de398d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectStorageClass.h
@@ -0,0 +1,37 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ObjectStorageClass
+ {
+ NOT_SET,
+ STANDARD,
+ REDUCED_REDUNDANCY,
+ GLACIER,
+ STANDARD_IA,
+ ONEZONE_IA,
+ INTELLIGENT_TIERING,
+ DEEP_ARCHIVE,
+ OUTPOSTS
+ };
+
+namespace ObjectStorageClassMapper
+{
+AWS_S3_API ObjectStorageClass GetObjectStorageClassForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForObjectStorageClass(ObjectStorageClass value);
+} // namespace ObjectStorageClassMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectVersion.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectVersion.h
new file mode 100644
index 00000000000..d084d24b1e3
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectVersion.h
@@ -0,0 +1,333 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ObjectVersionStorageClass.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/s3/model/Owner.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The version of an object.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ObjectVersion">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ObjectVersion
+ {
+ public:
+ ObjectVersion();
+ ObjectVersion(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ObjectVersion& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The entity tag is an MD5 hash of that version of the object.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>The entity tag is an MD5 hash of that version of the object.</p>
+ */
+ inline bool ETagHasBeenSet() const { return m_eTagHasBeenSet; }
+
+ /**
+ * <p>The entity tag is an MD5 hash of that version of the object.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTagHasBeenSet = true; m_eTag = value; }
+
+ /**
+ * <p>The entity tag is an MD5 hash of that version of the object.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTagHasBeenSet = true; m_eTag = std::move(value); }
+
+ /**
+ * <p>The entity tag is an MD5 hash of that version of the object.</p>
+ */
+ inline void SetETag(const char* value) { m_eTagHasBeenSet = true; m_eTag.assign(value); }
+
+ /**
+ * <p>The entity tag is an MD5 hash of that version of the object.</p>
+ */
+ inline ObjectVersion& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>The entity tag is an MD5 hash of that version of the object.</p>
+ */
+ inline ObjectVersion& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>The entity tag is an MD5 hash of that version of the object.</p>
+ */
+ inline ObjectVersion& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>Size in bytes of the object.</p>
+ */
+ inline long long GetSize() const{ return m_size; }
+
+ /**
+ * <p>Size in bytes of the object.</p>
+ */
+ inline bool SizeHasBeenSet() const { return m_sizeHasBeenSet; }
+
+ /**
+ * <p>Size in bytes of the object.</p>
+ */
+ inline void SetSize(long long value) { m_sizeHasBeenSet = true; m_size = value; }
+
+ /**
+ * <p>Size in bytes of the object.</p>
+ */
+ inline ObjectVersion& WithSize(long long value) { SetSize(value); return *this;}
+
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline const ObjectVersionStorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline void SetStorageClass(const ObjectVersionStorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline void SetStorageClass(ObjectVersionStorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline ObjectVersion& WithStorageClass(const ObjectVersionStorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>The class of storage used to store the object.</p>
+ */
+ inline ObjectVersion& WithStorageClass(ObjectVersionStorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline ObjectVersion& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline ObjectVersion& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline ObjectVersion& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline ObjectVersion& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline ObjectVersion& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>Version ID of an object.</p>
+ */
+ inline ObjectVersion& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether the object is (true) or is not (false) the latest version
+ * of an object.</p>
+ */
+ inline bool GetIsLatest() const{ return m_isLatest; }
+
+ /**
+ * <p>Specifies whether the object is (true) or is not (false) the latest version
+ * of an object.</p>
+ */
+ inline bool IsLatestHasBeenSet() const { return m_isLatestHasBeenSet; }
+
+ /**
+ * <p>Specifies whether the object is (true) or is not (false) the latest version
+ * of an object.</p>
+ */
+ inline void SetIsLatest(bool value) { m_isLatestHasBeenSet = true; m_isLatest = value; }
+
+ /**
+ * <p>Specifies whether the object is (true) or is not (false) the latest version
+ * of an object.</p>
+ */
+ inline ObjectVersion& WithIsLatest(bool value) { SetIsLatest(value); return *this;}
+
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline const Aws::Utils::DateTime& GetLastModified() const{ return m_lastModified; }
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline bool LastModifiedHasBeenSet() const { return m_lastModifiedHasBeenSet; }
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline void SetLastModified(const Aws::Utils::DateTime& value) { m_lastModifiedHasBeenSet = true; m_lastModified = value; }
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline void SetLastModified(Aws::Utils::DateTime&& value) { m_lastModifiedHasBeenSet = true; m_lastModified = std::move(value); }
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline ObjectVersion& WithLastModified(const Aws::Utils::DateTime& value) { SetLastModified(value); return *this;}
+
+ /**
+ * <p>Date and time the object was last modified.</p>
+ */
+ inline ObjectVersion& WithLastModified(Aws::Utils::DateTime&& value) { SetLastModified(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the owner of the object.</p>
+ */
+ inline const Owner& GetOwner() const{ return m_owner; }
+
+ /**
+ * <p>Specifies the owner of the object.</p>
+ */
+ inline bool OwnerHasBeenSet() const { return m_ownerHasBeenSet; }
+
+ /**
+ * <p>Specifies the owner of the object.</p>
+ */
+ inline void SetOwner(const Owner& value) { m_ownerHasBeenSet = true; m_owner = value; }
+
+ /**
+ * <p>Specifies the owner of the object.</p>
+ */
+ inline void SetOwner(Owner&& value) { m_ownerHasBeenSet = true; m_owner = std::move(value); }
+
+ /**
+ * <p>Specifies the owner of the object.</p>
+ */
+ inline ObjectVersion& WithOwner(const Owner& value) { SetOwner(value); return *this;}
+
+ /**
+ * <p>Specifies the owner of the object.</p>
+ */
+ inline ObjectVersion& WithOwner(Owner&& value) { SetOwner(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_eTag;
+ bool m_eTagHasBeenSet;
+
+ long long m_size;
+ bool m_sizeHasBeenSet;
+
+ ObjectVersionStorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ bool m_isLatest;
+ bool m_isLatestHasBeenSet;
+
+ Aws::Utils::DateTime m_lastModified;
+ bool m_lastModifiedHasBeenSet;
+
+ Owner m_owner;
+ bool m_ownerHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectVersionStorageClass.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectVersionStorageClass.h
new file mode 100644
index 00000000000..04724dfa082
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ObjectVersionStorageClass.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ObjectVersionStorageClass
+ {
+ NOT_SET,
+ STANDARD
+ };
+
+namespace ObjectVersionStorageClassMapper
+{
+AWS_S3_API ObjectVersionStorageClass GetObjectVersionStorageClassForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForObjectVersionStorageClass(ObjectVersionStorageClass value);
+} // namespace ObjectVersionStorageClassMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OutputLocation.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OutputLocation.h
new file mode 100644
index 00000000000..4240773137f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OutputLocation.h
@@ -0,0 +1,85 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/S3Location.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes the location where the restore job's output is
+ * stored.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/OutputLocation">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API OutputLocation
+ {
+ public:
+ OutputLocation();
+ OutputLocation(const Aws::Utils::Xml::XmlNode& xmlNode);
+ OutputLocation& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Describes an S3 location that will receive the results of the restore
+ * request.</p>
+ */
+ inline const S3Location& GetS3() const{ return m_s3; }
+
+ /**
+ * <p>Describes an S3 location that will receive the results of the restore
+ * request.</p>
+ */
+ inline bool S3HasBeenSet() const { return m_s3HasBeenSet; }
+
+ /**
+ * <p>Describes an S3 location that will receive the results of the restore
+ * request.</p>
+ */
+ inline void SetS3(const S3Location& value) { m_s3HasBeenSet = true; m_s3 = value; }
+
+ /**
+ * <p>Describes an S3 location that will receive the results of the restore
+ * request.</p>
+ */
+ inline void SetS3(S3Location&& value) { m_s3HasBeenSet = true; m_s3 = std::move(value); }
+
+ /**
+ * <p>Describes an S3 location that will receive the results of the restore
+ * request.</p>
+ */
+ inline OutputLocation& WithS3(const S3Location& value) { SetS3(value); return *this;}
+
+ /**
+ * <p>Describes an S3 location that will receive the results of the restore
+ * request.</p>
+ */
+ inline OutputLocation& WithS3(S3Location&& value) { SetS3(std::move(value)); return *this;}
+
+ private:
+
+ S3Location m_s3;
+ bool m_s3HasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OutputSerialization.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OutputSerialization.h
new file mode 100644
index 00000000000..92331d902c8
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OutputSerialization.h
@@ -0,0 +1,114 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/CSVOutput.h>
+#include <aws/s3/model/JSONOutput.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes how results of the Select job are serialized.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/OutputSerialization">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API OutputSerialization
+ {
+ public:
+ OutputSerialization();
+ OutputSerialization(const Aws::Utils::Xml::XmlNode& xmlNode);
+ OutputSerialization& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Describes the serialization of CSV-encoded Select results.</p>
+ */
+ inline const CSVOutput& GetCSV() const{ return m_cSV; }
+
+ /**
+ * <p>Describes the serialization of CSV-encoded Select results.</p>
+ */
+ inline bool CSVHasBeenSet() const { return m_cSVHasBeenSet; }
+
+ /**
+ * <p>Describes the serialization of CSV-encoded Select results.</p>
+ */
+ inline void SetCSV(const CSVOutput& value) { m_cSVHasBeenSet = true; m_cSV = value; }
+
+ /**
+ * <p>Describes the serialization of CSV-encoded Select results.</p>
+ */
+ inline void SetCSV(CSVOutput&& value) { m_cSVHasBeenSet = true; m_cSV = std::move(value); }
+
+ /**
+ * <p>Describes the serialization of CSV-encoded Select results.</p>
+ */
+ inline OutputSerialization& WithCSV(const CSVOutput& value) { SetCSV(value); return *this;}
+
+ /**
+ * <p>Describes the serialization of CSV-encoded Select results.</p>
+ */
+ inline OutputSerialization& WithCSV(CSVOutput&& value) { SetCSV(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies JSON as request's output serialization format.</p>
+ */
+ inline const JSONOutput& GetJSON() const{ return m_jSON; }
+
+ /**
+ * <p>Specifies JSON as request's output serialization format.</p>
+ */
+ inline bool JSONHasBeenSet() const { return m_jSONHasBeenSet; }
+
+ /**
+ * <p>Specifies JSON as request's output serialization format.</p>
+ */
+ inline void SetJSON(const JSONOutput& value) { m_jSONHasBeenSet = true; m_jSON = value; }
+
+ /**
+ * <p>Specifies JSON as request's output serialization format.</p>
+ */
+ inline void SetJSON(JSONOutput&& value) { m_jSONHasBeenSet = true; m_jSON = std::move(value); }
+
+ /**
+ * <p>Specifies JSON as request's output serialization format.</p>
+ */
+ inline OutputSerialization& WithJSON(const JSONOutput& value) { SetJSON(value); return *this;}
+
+ /**
+ * <p>Specifies JSON as request's output serialization format.</p>
+ */
+ inline OutputSerialization& WithJSON(JSONOutput&& value) { SetJSON(std::move(value)); return *this;}
+
+ private:
+
+ CSVOutput m_cSV;
+ bool m_cSVHasBeenSet;
+
+ JSONOutput m_jSON;
+ bool m_jSONHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Owner.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Owner.h
new file mode 100644
index 00000000000..4f3f5d6aaa7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Owner.h
@@ -0,0 +1,132 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for the owner's display name and ID.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Owner">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Owner
+ {
+ public:
+ Owner();
+ Owner(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Owner& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Container for the display name of the owner.</p>
+ */
+ inline const Aws::String& GetDisplayName() const{ return m_displayName; }
+
+ /**
+ * <p>Container for the display name of the owner.</p>
+ */
+ inline bool DisplayNameHasBeenSet() const { return m_displayNameHasBeenSet; }
+
+ /**
+ * <p>Container for the display name of the owner.</p>
+ */
+ inline void SetDisplayName(const Aws::String& value) { m_displayNameHasBeenSet = true; m_displayName = value; }
+
+ /**
+ * <p>Container for the display name of the owner.</p>
+ */
+ inline void SetDisplayName(Aws::String&& value) { m_displayNameHasBeenSet = true; m_displayName = std::move(value); }
+
+ /**
+ * <p>Container for the display name of the owner.</p>
+ */
+ inline void SetDisplayName(const char* value) { m_displayNameHasBeenSet = true; m_displayName.assign(value); }
+
+ /**
+ * <p>Container for the display name of the owner.</p>
+ */
+ inline Owner& WithDisplayName(const Aws::String& value) { SetDisplayName(value); return *this;}
+
+ /**
+ * <p>Container for the display name of the owner.</p>
+ */
+ inline Owner& WithDisplayName(Aws::String&& value) { SetDisplayName(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for the display name of the owner.</p>
+ */
+ inline Owner& WithDisplayName(const char* value) { SetDisplayName(value); return *this;}
+
+
+ /**
+ * <p>Container for the ID of the owner.</p>
+ */
+ inline const Aws::String& GetID() const{ return m_iD; }
+
+ /**
+ * <p>Container for the ID of the owner.</p>
+ */
+ inline bool IDHasBeenSet() const { return m_iDHasBeenSet; }
+
+ /**
+ * <p>Container for the ID of the owner.</p>
+ */
+ inline void SetID(const Aws::String& value) { m_iDHasBeenSet = true; m_iD = value; }
+
+ /**
+ * <p>Container for the ID of the owner.</p>
+ */
+ inline void SetID(Aws::String&& value) { m_iDHasBeenSet = true; m_iD = std::move(value); }
+
+ /**
+ * <p>Container for the ID of the owner.</p>
+ */
+ inline void SetID(const char* value) { m_iDHasBeenSet = true; m_iD.assign(value); }
+
+ /**
+ * <p>Container for the ID of the owner.</p>
+ */
+ inline Owner& WithID(const Aws::String& value) { SetID(value); return *this;}
+
+ /**
+ * <p>Container for the ID of the owner.</p>
+ */
+ inline Owner& WithID(Aws::String&& value) { SetID(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for the ID of the owner.</p>
+ */
+ inline Owner& WithID(const char* value) { SetID(value); return *this;}
+
+ private:
+
+ Aws::String m_displayName;
+ bool m_displayNameHasBeenSet;
+
+ Aws::String m_iD;
+ bool m_iDHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnerOverride.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnerOverride.h
new file mode 100644
index 00000000000..0d9660a9ca7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnerOverride.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class OwnerOverride
+ {
+ NOT_SET,
+ Destination
+ };
+
+namespace OwnerOverrideMapper
+{
+AWS_S3_API OwnerOverride GetOwnerOverrideForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForOwnerOverride(OwnerOverride value);
+} // namespace OwnerOverrideMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnershipControls.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnershipControls.h
new file mode 100644
index 00000000000..a0d1a3542f9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnershipControls.h
@@ -0,0 +1,90 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/OwnershipControlsRule.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The container element for a bucket's ownership controls.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/OwnershipControls">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API OwnershipControls
+ {
+ public:
+ OwnershipControls();
+ OwnershipControls(const Aws::Utils::Xml::XmlNode& xmlNode);
+ OwnershipControls& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The container element for an ownership control rule.</p>
+ */
+ inline const Aws::Vector<OwnershipControlsRule>& GetRules() const{ return m_rules; }
+
+ /**
+ * <p>The container element for an ownership control rule.</p>
+ */
+ inline bool RulesHasBeenSet() const { return m_rulesHasBeenSet; }
+
+ /**
+ * <p>The container element for an ownership control rule.</p>
+ */
+ inline void SetRules(const Aws::Vector<OwnershipControlsRule>& value) { m_rulesHasBeenSet = true; m_rules = value; }
+
+ /**
+ * <p>The container element for an ownership control rule.</p>
+ */
+ inline void SetRules(Aws::Vector<OwnershipControlsRule>&& value) { m_rulesHasBeenSet = true; m_rules = std::move(value); }
+
+ /**
+ * <p>The container element for an ownership control rule.</p>
+ */
+ inline OwnershipControls& WithRules(const Aws::Vector<OwnershipControlsRule>& value) { SetRules(value); return *this;}
+
+ /**
+ * <p>The container element for an ownership control rule.</p>
+ */
+ inline OwnershipControls& WithRules(Aws::Vector<OwnershipControlsRule>&& value) { SetRules(std::move(value)); return *this;}
+
+ /**
+ * <p>The container element for an ownership control rule.</p>
+ */
+ inline OwnershipControls& AddRules(const OwnershipControlsRule& value) { m_rulesHasBeenSet = true; m_rules.push_back(value); return *this; }
+
+ /**
+ * <p>The container element for an ownership control rule.</p>
+ */
+ inline OwnershipControls& AddRules(OwnershipControlsRule&& value) { m_rulesHasBeenSet = true; m_rules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<OwnershipControlsRule> m_rules;
+ bool m_rulesHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnershipControlsRule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnershipControlsRule.h
new file mode 100644
index 00000000000..2e512c810cf
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/OwnershipControlsRule.h
@@ -0,0 +1,67 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ObjectOwnership.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The container element for an ownership control rule.</p><p><h3>See Also:</h3>
+ * <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/OwnershipControlsRule">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API OwnershipControlsRule
+ {
+ public:
+ OwnershipControlsRule();
+ OwnershipControlsRule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ OwnershipControlsRule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const ObjectOwnership& GetObjectOwnership() const{ return m_objectOwnership; }
+
+
+ inline bool ObjectOwnershipHasBeenSet() const { return m_objectOwnershipHasBeenSet; }
+
+
+ inline void SetObjectOwnership(const ObjectOwnership& value) { m_objectOwnershipHasBeenSet = true; m_objectOwnership = value; }
+
+
+ inline void SetObjectOwnership(ObjectOwnership&& value) { m_objectOwnershipHasBeenSet = true; m_objectOwnership = std::move(value); }
+
+
+ inline OwnershipControlsRule& WithObjectOwnership(const ObjectOwnership& value) { SetObjectOwnership(value); return *this;}
+
+
+ inline OwnershipControlsRule& WithObjectOwnership(ObjectOwnership&& value) { SetObjectOwnership(std::move(value)); return *this;}
+
+ private:
+
+ ObjectOwnership m_objectOwnership;
+ bool m_objectOwnershipHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ParquetInput.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ParquetInput.h
new file mode 100644
index 00000000000..3bc15a84810
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ParquetInput.h
@@ -0,0 +1,41 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for Parquet.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ParquetInput">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API ParquetInput
+ {
+ public:
+ ParquetInput();
+ ParquetInput(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ParquetInput& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Part.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Part.h
new file mode 100644
index 00000000000..6b83d534f12
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Part.h
@@ -0,0 +1,175 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for elements related to a part.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Part">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Part
+ {
+ public:
+ Part();
+ Part(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Part& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Part number identifying the part. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline int GetPartNumber() const{ return m_partNumber; }
+
+ /**
+ * <p>Part number identifying the part. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline bool PartNumberHasBeenSet() const { return m_partNumberHasBeenSet; }
+
+ /**
+ * <p>Part number identifying the part. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline void SetPartNumber(int value) { m_partNumberHasBeenSet = true; m_partNumber = value; }
+
+ /**
+ * <p>Part number identifying the part. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline Part& WithPartNumber(int value) { SetPartNumber(value); return *this;}
+
+
+ /**
+ * <p>Date and time at which the part was uploaded.</p>
+ */
+ inline const Aws::Utils::DateTime& GetLastModified() const{ return m_lastModified; }
+
+ /**
+ * <p>Date and time at which the part was uploaded.</p>
+ */
+ inline bool LastModifiedHasBeenSet() const { return m_lastModifiedHasBeenSet; }
+
+ /**
+ * <p>Date and time at which the part was uploaded.</p>
+ */
+ inline void SetLastModified(const Aws::Utils::DateTime& value) { m_lastModifiedHasBeenSet = true; m_lastModified = value; }
+
+ /**
+ * <p>Date and time at which the part was uploaded.</p>
+ */
+ inline void SetLastModified(Aws::Utils::DateTime&& value) { m_lastModifiedHasBeenSet = true; m_lastModified = std::move(value); }
+
+ /**
+ * <p>Date and time at which the part was uploaded.</p>
+ */
+ inline Part& WithLastModified(const Aws::Utils::DateTime& value) { SetLastModified(value); return *this;}
+
+ /**
+ * <p>Date and time at which the part was uploaded.</p>
+ */
+ inline Part& WithLastModified(Aws::Utils::DateTime&& value) { SetLastModified(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline bool ETagHasBeenSet() const { return m_eTagHasBeenSet; }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTagHasBeenSet = true; m_eTag = value; }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTagHasBeenSet = true; m_eTag = std::move(value); }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline void SetETag(const char* value) { m_eTagHasBeenSet = true; m_eTag.assign(value); }
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline Part& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline Part& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>Entity tag returned when the part was uploaded.</p>
+ */
+ inline Part& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>Size in bytes of the uploaded part data.</p>
+ */
+ inline long long GetSize() const{ return m_size; }
+
+ /**
+ * <p>Size in bytes of the uploaded part data.</p>
+ */
+ inline bool SizeHasBeenSet() const { return m_sizeHasBeenSet; }
+
+ /**
+ * <p>Size in bytes of the uploaded part data.</p>
+ */
+ inline void SetSize(long long value) { m_sizeHasBeenSet = true; m_size = value; }
+
+ /**
+ * <p>Size in bytes of the uploaded part data.</p>
+ */
+ inline Part& WithSize(long long value) { SetSize(value); return *this;}
+
+ private:
+
+ int m_partNumber;
+ bool m_partNumberHasBeenSet;
+
+ Aws::Utils::DateTime m_lastModified;
+ bool m_lastModifiedHasBeenSet;
+
+ Aws::String m_eTag;
+ bool m_eTagHasBeenSet;
+
+ long long m_size;
+ bool m_sizeHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Payer.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Payer.h
new file mode 100644
index 00000000000..5e04c72bd25
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Payer.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class Payer
+ {
+ NOT_SET,
+ Requester,
+ BucketOwner
+ };
+
+namespace PayerMapper
+{
+AWS_S3_API Payer GetPayerForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForPayer(Payer value);
+} // namespace PayerMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Permission.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Permission.h
new file mode 100644
index 00000000000..a0c648a444b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Permission.h
@@ -0,0 +1,34 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class Permission
+ {
+ NOT_SET,
+ FULL_CONTROL,
+ WRITE,
+ WRITE_ACP,
+ READ,
+ READ_ACP
+ };
+
+namespace PermissionMapper
+{
+AWS_S3_API Permission GetPermissionForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForPermission(Permission value);
+} // namespace PermissionMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PolicyStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PolicyStatus.h
new file mode 100644
index 00000000000..cd0cfd393bc
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PolicyStatus.h
@@ -0,0 +1,74 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The container element for a bucket's policy status.</p><p><h3>See Also:</h3>
+ * <a href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PolicyStatus">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API PolicyStatus
+ {
+ public:
+ PolicyStatus();
+ PolicyStatus(const Aws::Utils::Xml::XmlNode& xmlNode);
+ PolicyStatus& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The policy status for this bucket. <code>TRUE</code> indicates that this
+ * bucket is public. <code>FALSE</code> indicates that the bucket is not
+ * public.</p>
+ */
+ inline bool GetIsPublic() const{ return m_isPublic; }
+
+ /**
+ * <p>The policy status for this bucket. <code>TRUE</code> indicates that this
+ * bucket is public. <code>FALSE</code> indicates that the bucket is not
+ * public.</p>
+ */
+ inline bool IsPublicHasBeenSet() const { return m_isPublicHasBeenSet; }
+
+ /**
+ * <p>The policy status for this bucket. <code>TRUE</code> indicates that this
+ * bucket is public. <code>FALSE</code> indicates that the bucket is not
+ * public.</p>
+ */
+ inline void SetIsPublic(bool value) { m_isPublicHasBeenSet = true; m_isPublic = value; }
+
+ /**
+ * <p>The policy status for this bucket. <code>TRUE</code> indicates that this
+ * bucket is public. <code>FALSE</code> indicates that the bucket is not
+ * public.</p>
+ */
+ inline PolicyStatus& WithIsPublic(bool value) { SetIsPublic(value); return *this;}
+
+ private:
+
+ bool m_isPublic;
+ bool m_isPublicHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Progress.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Progress.h
new file mode 100644
index 00000000000..a188e5b9c7e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Progress.h
@@ -0,0 +1,115 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>This data type contains information about progress of an
+ * operation.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Progress">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Progress
+ {
+ public:
+ Progress();
+ Progress(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Progress& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The current number of object bytes scanned.</p>
+ */
+ inline long long GetBytesScanned() const{ return m_bytesScanned; }
+
+ /**
+ * <p>The current number of object bytes scanned.</p>
+ */
+ inline bool BytesScannedHasBeenSet() const { return m_bytesScannedHasBeenSet; }
+
+ /**
+ * <p>The current number of object bytes scanned.</p>
+ */
+ inline void SetBytesScanned(long long value) { m_bytesScannedHasBeenSet = true; m_bytesScanned = value; }
+
+ /**
+ * <p>The current number of object bytes scanned.</p>
+ */
+ inline Progress& WithBytesScanned(long long value) { SetBytesScanned(value); return *this;}
+
+
+ /**
+ * <p>The current number of uncompressed object bytes processed.</p>
+ */
+ inline long long GetBytesProcessed() const{ return m_bytesProcessed; }
+
+ /**
+ * <p>The current number of uncompressed object bytes processed.</p>
+ */
+ inline bool BytesProcessedHasBeenSet() const { return m_bytesProcessedHasBeenSet; }
+
+ /**
+ * <p>The current number of uncompressed object bytes processed.</p>
+ */
+ inline void SetBytesProcessed(long long value) { m_bytesProcessedHasBeenSet = true; m_bytesProcessed = value; }
+
+ /**
+ * <p>The current number of uncompressed object bytes processed.</p>
+ */
+ inline Progress& WithBytesProcessed(long long value) { SetBytesProcessed(value); return *this;}
+
+
+ /**
+ * <p>The current number of bytes of records payload data returned.</p>
+ */
+ inline long long GetBytesReturned() const{ return m_bytesReturned; }
+
+ /**
+ * <p>The current number of bytes of records payload data returned.</p>
+ */
+ inline bool BytesReturnedHasBeenSet() const { return m_bytesReturnedHasBeenSet; }
+
+ /**
+ * <p>The current number of bytes of records payload data returned.</p>
+ */
+ inline void SetBytesReturned(long long value) { m_bytesReturnedHasBeenSet = true; m_bytesReturned = value; }
+
+ /**
+ * <p>The current number of bytes of records payload data returned.</p>
+ */
+ inline Progress& WithBytesReturned(long long value) { SetBytesReturned(value); return *this;}
+
+ private:
+
+ long long m_bytesScanned;
+ bool m_bytesScannedHasBeenSet;
+
+ long long m_bytesProcessed;
+ bool m_bytesProcessedHasBeenSet;
+
+ long long m_bytesReturned;
+ bool m_bytesReturnedHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ProgressEvent.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ProgressEvent.h
new file mode 100644
index 00000000000..9b3b8edf850
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ProgressEvent.h
@@ -0,0 +1,79 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Progress.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>This data type contains information about the progress event of an
+ * operation.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ProgressEvent">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ProgressEvent
+ {
+ public:
+ ProgressEvent();
+ ProgressEvent(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ProgressEvent& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The Progress event details.</p>
+ */
+ inline const Progress& GetDetails() const{ return m_details; }
+
+ /**
+ * <p>The Progress event details.</p>
+ */
+ inline bool DetailsHasBeenSet() const { return m_detailsHasBeenSet; }
+
+ /**
+ * <p>The Progress event details.</p>
+ */
+ inline void SetDetails(const Progress& value) { m_detailsHasBeenSet = true; m_details = value; }
+
+ /**
+ * <p>The Progress event details.</p>
+ */
+ inline void SetDetails(Progress&& value) { m_detailsHasBeenSet = true; m_details = std::move(value); }
+
+ /**
+ * <p>The Progress event details.</p>
+ */
+ inline ProgressEvent& WithDetails(const Progress& value) { SetDetails(value); return *this;}
+
+ /**
+ * <p>The Progress event details.</p>
+ */
+ inline ProgressEvent& WithDetails(Progress&& value) { SetDetails(std::move(value)); return *this;}
+
+ private:
+
+ Progress m_details;
+ bool m_detailsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Protocol.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Protocol.h
new file mode 100644
index 00000000000..efaa9c8990d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Protocol.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class Protocol
+ {
+ NOT_SET,
+ http,
+ https
+ };
+
+namespace ProtocolMapper
+{
+AWS_S3_API Protocol GetProtocolForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForProtocol(Protocol value);
+} // namespace ProtocolMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PublicAccessBlockConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PublicAccessBlockConfiguration.h
new file mode 100644
index 00000000000..b1eefb24cdd
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PublicAccessBlockConfiguration.h
@@ -0,0 +1,219 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The PublicAccessBlock configuration that you want to apply to this Amazon S3
+ * bucket. You can enable the configuration options in any combination. For more
+ * information about when Amazon S3 considers a bucket or object public, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
+ * Meaning of "Public"</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>. </p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PublicAccessBlockConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API PublicAccessBlockConfiguration
+ {
+ public:
+ PublicAccessBlockConfiguration();
+ PublicAccessBlockConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ PublicAccessBlockConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies whether Amazon S3 should block public access control lists (ACLs)
+ * for this bucket and objects in this bucket. Setting this element to
+ * <code>TRUE</code> causes the following behavior:</p> <ul> <li> <p>PUT Bucket acl
+ * and PUT Object acl calls fail if the specified ACL is public.</p> </li> <li>
+ * <p>PUT Object calls fail if the request includes a public ACL.</p> </li> <li>
+ * <p>PUT Bucket calls fail if the request includes a public ACL.</p> </li> </ul>
+ * <p>Enabling this setting doesn't affect existing policies or ACLs.</p>
+ */
+ inline bool GetBlockPublicAcls() const{ return m_blockPublicAcls; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should block public access control lists (ACLs)
+ * for this bucket and objects in this bucket. Setting this element to
+ * <code>TRUE</code> causes the following behavior:</p> <ul> <li> <p>PUT Bucket acl
+ * and PUT Object acl calls fail if the specified ACL is public.</p> </li> <li>
+ * <p>PUT Object calls fail if the request includes a public ACL.</p> </li> <li>
+ * <p>PUT Bucket calls fail if the request includes a public ACL.</p> </li> </ul>
+ * <p>Enabling this setting doesn't affect existing policies or ACLs.</p>
+ */
+ inline bool BlockPublicAclsHasBeenSet() const { return m_blockPublicAclsHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should block public access control lists (ACLs)
+ * for this bucket and objects in this bucket. Setting this element to
+ * <code>TRUE</code> causes the following behavior:</p> <ul> <li> <p>PUT Bucket acl
+ * and PUT Object acl calls fail if the specified ACL is public.</p> </li> <li>
+ * <p>PUT Object calls fail if the request includes a public ACL.</p> </li> <li>
+ * <p>PUT Bucket calls fail if the request includes a public ACL.</p> </li> </ul>
+ * <p>Enabling this setting doesn't affect existing policies or ACLs.</p>
+ */
+ inline void SetBlockPublicAcls(bool value) { m_blockPublicAclsHasBeenSet = true; m_blockPublicAcls = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should block public access control lists (ACLs)
+ * for this bucket and objects in this bucket. Setting this element to
+ * <code>TRUE</code> causes the following behavior:</p> <ul> <li> <p>PUT Bucket acl
+ * and PUT Object acl calls fail if the specified ACL is public.</p> </li> <li>
+ * <p>PUT Object calls fail if the request includes a public ACL.</p> </li> <li>
+ * <p>PUT Bucket calls fail if the request includes a public ACL.</p> </li> </ul>
+ * <p>Enabling this setting doesn't affect existing policies or ACLs.</p>
+ */
+ inline PublicAccessBlockConfiguration& WithBlockPublicAcls(bool value) { SetBlockPublicAcls(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether Amazon S3 should ignore public ACLs for this bucket and
+ * objects in this bucket. Setting this element to <code>TRUE</code> causes Amazon
+ * S3 to ignore all public ACLs on this bucket and objects in this bucket.</p>
+ * <p>Enabling this setting doesn't affect the persistence of any existing ACLs and
+ * doesn't prevent new public ACLs from being set.</p>
+ */
+ inline bool GetIgnorePublicAcls() const{ return m_ignorePublicAcls; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should ignore public ACLs for this bucket and
+ * objects in this bucket. Setting this element to <code>TRUE</code> causes Amazon
+ * S3 to ignore all public ACLs on this bucket and objects in this bucket.</p>
+ * <p>Enabling this setting doesn't affect the persistence of any existing ACLs and
+ * doesn't prevent new public ACLs from being set.</p>
+ */
+ inline bool IgnorePublicAclsHasBeenSet() const { return m_ignorePublicAclsHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should ignore public ACLs for this bucket and
+ * objects in this bucket. Setting this element to <code>TRUE</code> causes Amazon
+ * S3 to ignore all public ACLs on this bucket and objects in this bucket.</p>
+ * <p>Enabling this setting doesn't affect the persistence of any existing ACLs and
+ * doesn't prevent new public ACLs from being set.</p>
+ */
+ inline void SetIgnorePublicAcls(bool value) { m_ignorePublicAclsHasBeenSet = true; m_ignorePublicAcls = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should ignore public ACLs for this bucket and
+ * objects in this bucket. Setting this element to <code>TRUE</code> causes Amazon
+ * S3 to ignore all public ACLs on this bucket and objects in this bucket.</p>
+ * <p>Enabling this setting doesn't affect the persistence of any existing ACLs and
+ * doesn't prevent new public ACLs from being set.</p>
+ */
+ inline PublicAccessBlockConfiguration& WithIgnorePublicAcls(bool value) { SetIgnorePublicAcls(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether Amazon S3 should block public bucket policies for this
+ * bucket. Setting this element to <code>TRUE</code> causes Amazon S3 to reject
+ * calls to PUT Bucket policy if the specified bucket policy allows public access.
+ * </p> <p>Enabling this setting doesn't affect existing bucket policies.</p>
+ */
+ inline bool GetBlockPublicPolicy() const{ return m_blockPublicPolicy; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should block public bucket policies for this
+ * bucket. Setting this element to <code>TRUE</code> causes Amazon S3 to reject
+ * calls to PUT Bucket policy if the specified bucket policy allows public access.
+ * </p> <p>Enabling this setting doesn't affect existing bucket policies.</p>
+ */
+ inline bool BlockPublicPolicyHasBeenSet() const { return m_blockPublicPolicyHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should block public bucket policies for this
+ * bucket. Setting this element to <code>TRUE</code> causes Amazon S3 to reject
+ * calls to PUT Bucket policy if the specified bucket policy allows public access.
+ * </p> <p>Enabling this setting doesn't affect existing bucket policies.</p>
+ */
+ inline void SetBlockPublicPolicy(bool value) { m_blockPublicPolicyHasBeenSet = true; m_blockPublicPolicy = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should block public bucket policies for this
+ * bucket. Setting this element to <code>TRUE</code> causes Amazon S3 to reject
+ * calls to PUT Bucket policy if the specified bucket policy allows public access.
+ * </p> <p>Enabling this setting doesn't affect existing bucket policies.</p>
+ */
+ inline PublicAccessBlockConfiguration& WithBlockPublicPolicy(bool value) { SetBlockPublicPolicy(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether Amazon S3 should restrict public bucket policies for this
+ * bucket. Setting this element to <code>TRUE</code> restricts access to this
+ * bucket to only AWS service principals and authorized users within this account
+ * if the bucket has a public policy.</p> <p>Enabling this setting doesn't affect
+ * previously stored bucket policies, except that public and cross-account access
+ * within any public bucket policy, including non-public delegation to specific
+ * accounts, is blocked.</p>
+ */
+ inline bool GetRestrictPublicBuckets() const{ return m_restrictPublicBuckets; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should restrict public bucket policies for this
+ * bucket. Setting this element to <code>TRUE</code> restricts access to this
+ * bucket to only AWS service principals and authorized users within this account
+ * if the bucket has a public policy.</p> <p>Enabling this setting doesn't affect
+ * previously stored bucket policies, except that public and cross-account access
+ * within any public bucket policy, including non-public delegation to specific
+ * accounts, is blocked.</p>
+ */
+ inline bool RestrictPublicBucketsHasBeenSet() const { return m_restrictPublicBucketsHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should restrict public bucket policies for this
+ * bucket. Setting this element to <code>TRUE</code> restricts access to this
+ * bucket to only AWS service principals and authorized users within this account
+ * if the bucket has a public policy.</p> <p>Enabling this setting doesn't affect
+ * previously stored bucket policies, except that public and cross-account access
+ * within any public bucket policy, including non-public delegation to specific
+ * accounts, is blocked.</p>
+ */
+ inline void SetRestrictPublicBuckets(bool value) { m_restrictPublicBucketsHasBeenSet = true; m_restrictPublicBuckets = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should restrict public bucket policies for this
+ * bucket. Setting this element to <code>TRUE</code> restricts access to this
+ * bucket to only AWS service principals and authorized users within this account
+ * if the bucket has a public policy.</p> <p>Enabling this setting doesn't affect
+ * previously stored bucket policies, except that public and cross-account access
+ * within any public bucket policy, including non-public delegation to specific
+ * accounts, is blocked.</p>
+ */
+ inline PublicAccessBlockConfiguration& WithRestrictPublicBuckets(bool value) { SetRestrictPublicBuckets(value); return *this;}
+
+ private:
+
+ bool m_blockPublicAcls;
+ bool m_blockPublicAclsHasBeenSet;
+
+ bool m_ignorePublicAcls;
+ bool m_ignorePublicAclsHasBeenSet;
+
+ bool m_blockPublicPolicy;
+ bool m_blockPublicPolicyHasBeenSet;
+
+ bool m_restrictPublicBuckets;
+ bool m_restrictPublicBucketsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAccelerateConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAccelerateConfigurationRequest.h
new file mode 100644
index 00000000000..a595afdbcc7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAccelerateConfigurationRequest.h
@@ -0,0 +1,230 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/AccelerateConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketAccelerateConfigurationRequest : public S3Request
+ {
+ public:
+ PutBucketAccelerateConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketAccelerateConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is set.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is set.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is set.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is set.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is set.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is set.</p>
+ */
+ inline PutBucketAccelerateConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is set.</p>
+ */
+ inline PutBucketAccelerateConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which the accelerate configuration is set.</p>
+ */
+ inline PutBucketAccelerateConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Container for setting the transfer acceleration state.</p>
+ */
+ inline const AccelerateConfiguration& GetAccelerateConfiguration() const{ return m_accelerateConfiguration; }
+
+ /**
+ * <p>Container for setting the transfer acceleration state.</p>
+ */
+ inline bool AccelerateConfigurationHasBeenSet() const { return m_accelerateConfigurationHasBeenSet; }
+
+ /**
+ * <p>Container for setting the transfer acceleration state.</p>
+ */
+ inline void SetAccelerateConfiguration(const AccelerateConfiguration& value) { m_accelerateConfigurationHasBeenSet = true; m_accelerateConfiguration = value; }
+
+ /**
+ * <p>Container for setting the transfer acceleration state.</p>
+ */
+ inline void SetAccelerateConfiguration(AccelerateConfiguration&& value) { m_accelerateConfigurationHasBeenSet = true; m_accelerateConfiguration = std::move(value); }
+
+ /**
+ * <p>Container for setting the transfer acceleration state.</p>
+ */
+ inline PutBucketAccelerateConfigurationRequest& WithAccelerateConfiguration(const AccelerateConfiguration& value) { SetAccelerateConfiguration(value); return *this;}
+
+ /**
+ * <p>Container for setting the transfer acceleration state.</p>
+ */
+ inline PutBucketAccelerateConfigurationRequest& WithAccelerateConfiguration(AccelerateConfiguration&& value) { SetAccelerateConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketAccelerateConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketAccelerateConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketAccelerateConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketAccelerateConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketAccelerateConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketAccelerateConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ AccelerateConfiguration m_accelerateConfiguration;
+ bool m_accelerateConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAclRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAclRequest.h
new file mode 100644
index 00000000000..43d1f632870
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAclRequest.h
@@ -0,0 +1,585 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/s3/model/BucketCannedACL.h>
+#include <aws/s3/model/AccessControlPolicy.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketAclRequest : public S3Request
+ {
+ public:
+ PutBucketAclRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketAcl"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline const BucketCannedACL& GetACL() const{ return m_aCL; }
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline bool ACLHasBeenSet() const { return m_aCLHasBeenSet; }
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline void SetACL(const BucketCannedACL& value) { m_aCLHasBeenSet = true; m_aCL = value; }
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline void SetACL(BucketCannedACL&& value) { m_aCLHasBeenSet = true; m_aCL = std::move(value); }
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline PutBucketAclRequest& WithACL(const BucketCannedACL& value) { SetACL(value); return *this;}
+
+ /**
+ * <p>The canned ACL to apply to the bucket.</p>
+ */
+ inline PutBucketAclRequest& WithACL(BucketCannedACL&& value) { SetACL(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline const AccessControlPolicy& GetAccessControlPolicy() const{ return m_accessControlPolicy; }
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline bool AccessControlPolicyHasBeenSet() const { return m_accessControlPolicyHasBeenSet; }
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline void SetAccessControlPolicy(const AccessControlPolicy& value) { m_accessControlPolicyHasBeenSet = true; m_accessControlPolicy = value; }
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline void SetAccessControlPolicy(AccessControlPolicy&& value) { m_accessControlPolicyHasBeenSet = true; m_accessControlPolicy = std::move(value); }
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline PutBucketAclRequest& WithAccessControlPolicy(const AccessControlPolicy& value) { SetAccessControlPolicy(value); return *this;}
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline PutBucketAclRequest& WithAccessControlPolicy(AccessControlPolicy&& value) { SetAccessControlPolicy(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The bucket to which to apply the ACL.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket to which to apply the ACL.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket to which to apply the ACL.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket to which to apply the ACL.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket to which to apply the ACL.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket to which to apply the ACL.</p>
+ */
+ inline PutBucketAclRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket to which to apply the ACL.</p>
+ */
+ inline PutBucketAclRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket to which to apply the ACL.</p>
+ */
+ inline PutBucketAclRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketAclRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketAclRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketAclRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline const Aws::String& GetGrantFullControl() const{ return m_grantFullControl; }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline bool GrantFullControlHasBeenSet() const { return m_grantFullControlHasBeenSet; }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline void SetGrantFullControl(const Aws::String& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = value; }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline void SetGrantFullControl(Aws::String&& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = std::move(value); }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline void SetGrantFullControl(const char* value) { m_grantFullControlHasBeenSet = true; m_grantFullControl.assign(value); }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantFullControl(const Aws::String& value) { SetGrantFullControl(value); return *this;}
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantFullControl(Aws::String&& value) { SetGrantFullControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantFullControl(const char* value) { SetGrantFullControl(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline const Aws::String& GetGrantRead() const{ return m_grantRead; }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline bool GrantReadHasBeenSet() const { return m_grantReadHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline void SetGrantRead(const Aws::String& value) { m_grantReadHasBeenSet = true; m_grantRead = value; }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline void SetGrantRead(Aws::String&& value) { m_grantReadHasBeenSet = true; m_grantRead = std::move(value); }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline void SetGrantRead(const char* value) { m_grantReadHasBeenSet = true; m_grantRead.assign(value); }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantRead(const Aws::String& value) { SetGrantRead(value); return *this;}
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantRead(Aws::String&& value) { SetGrantRead(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantRead(const char* value) { SetGrantRead(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline const Aws::String& GetGrantReadACP() const{ return m_grantReadACP; }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline bool GrantReadACPHasBeenSet() const { return m_grantReadACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline void SetGrantReadACP(const Aws::String& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = value; }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline void SetGrantReadACP(Aws::String&& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline void SetGrantReadACP(const char* value) { m_grantReadACPHasBeenSet = true; m_grantReadACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline PutBucketAclRequest& WithGrantReadACP(const Aws::String& value) { SetGrantReadACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline PutBucketAclRequest& WithGrantReadACP(Aws::String&& value) { SetGrantReadACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p>
+ */
+ inline PutBucketAclRequest& WithGrantReadACP(const char* value) { SetGrantReadACP(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline const Aws::String& GetGrantWrite() const{ return m_grantWrite; }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline bool GrantWriteHasBeenSet() const { return m_grantWriteHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline void SetGrantWrite(const Aws::String& value) { m_grantWriteHasBeenSet = true; m_grantWrite = value; }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline void SetGrantWrite(Aws::String&& value) { m_grantWriteHasBeenSet = true; m_grantWrite = std::move(value); }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline void SetGrantWrite(const char* value) { m_grantWriteHasBeenSet = true; m_grantWrite.assign(value); }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantWrite(const Aws::String& value) { SetGrantWrite(value); return *this;}
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantWrite(Aws::String&& value) { SetGrantWrite(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantWrite(const char* value) { SetGrantWrite(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline const Aws::String& GetGrantWriteACP() const{ return m_grantWriteACP; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline bool GrantWriteACPHasBeenSet() const { return m_grantWriteACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline void SetGrantWriteACP(const Aws::String& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = value; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline void SetGrantWriteACP(Aws::String&& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline void SetGrantWriteACP(const char* value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantWriteACP(const Aws::String& value) { SetGrantWriteACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantWriteACP(Aws::String&& value) { SetGrantWriteACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p>
+ */
+ inline PutBucketAclRequest& WithGrantWriteACP(const char* value) { SetGrantWriteACP(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketAclRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketAclRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketAclRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketAclRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketAclRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketAclRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketAclRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketAclRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketAclRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ BucketCannedACL m_aCL;
+ bool m_aCLHasBeenSet;
+
+ AccessControlPolicy m_accessControlPolicy;
+ bool m_accessControlPolicyHasBeenSet;
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_grantFullControl;
+ bool m_grantFullControlHasBeenSet;
+
+ Aws::String m_grantRead;
+ bool m_grantReadHasBeenSet;
+
+ Aws::String m_grantReadACP;
+ bool m_grantReadACPHasBeenSet;
+
+ Aws::String m_grantWrite;
+ bool m_grantWriteHasBeenSet;
+
+ Aws::String m_grantWriteACP;
+ bool m_grantWriteACPHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAnalyticsConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAnalyticsConfigurationRequest.h
new file mode 100644
index 00000000000..a3dfe078c45
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketAnalyticsConfigurationRequest.h
@@ -0,0 +1,274 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/AnalyticsConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketAnalyticsConfigurationRequest : public S3Request
+ {
+ public:
+ PutBucketAnalyticsConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketAnalyticsConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket to which an analytics configuration is stored.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket to which an analytics configuration is stored.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket to which an analytics configuration is stored.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket to which an analytics configuration is stored.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket to which an analytics configuration is stored.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket to which an analytics configuration is stored.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket to which an analytics configuration is stored.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket to which an analytics configuration is stored.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID that identifies the analytics configuration.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline const AnalyticsConfiguration& GetAnalyticsConfiguration() const{ return m_analyticsConfiguration; }
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline bool AnalyticsConfigurationHasBeenSet() const { return m_analyticsConfigurationHasBeenSet; }
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline void SetAnalyticsConfiguration(const AnalyticsConfiguration& value) { m_analyticsConfigurationHasBeenSet = true; m_analyticsConfiguration = value; }
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline void SetAnalyticsConfiguration(AnalyticsConfiguration&& value) { m_analyticsConfigurationHasBeenSet = true; m_analyticsConfiguration = std::move(value); }
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithAnalyticsConfiguration(const AnalyticsConfiguration& value) { SetAnalyticsConfiguration(value); return *this;}
+
+ /**
+ * <p>The configuration and any analyses for the analytics filter.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithAnalyticsConfiguration(AnalyticsConfiguration&& value) { SetAnalyticsConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketAnalyticsConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketAnalyticsConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketAnalyticsConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketAnalyticsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ AnalyticsConfiguration m_analyticsConfiguration;
+ bool m_analyticsConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketCorsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketCorsRequest.h
new file mode 100644
index 00000000000..5273651e51b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketCorsRequest.h
@@ -0,0 +1,340 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/CORSConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketCorsRequest : public S3Request
+ {
+ public:
+ PutBucketCorsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketCors"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>Specifies the bucket impacted by the <code>cors</code>configuration.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>Specifies the bucket impacted by the <code>cors</code>configuration.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>Specifies the bucket impacted by the <code>cors</code>configuration.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>Specifies the bucket impacted by the <code>cors</code>configuration.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>Specifies the bucket impacted by the <code>cors</code>configuration.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>Specifies the bucket impacted by the <code>cors</code>configuration.</p>
+ */
+ inline PutBucketCorsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>Specifies the bucket impacted by the <code>cors</code>configuration.</p>
+ */
+ inline PutBucketCorsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the bucket impacted by the <code>cors</code>configuration.</p>
+ */
+ inline PutBucketCorsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Describes the cross-origin access configuration for objects in an Amazon S3
+ * bucket. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
+ * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline const CORSConfiguration& GetCORSConfiguration() const{ return m_cORSConfiguration; }
+
+ /**
+ * <p>Describes the cross-origin access configuration for objects in an Amazon S3
+ * bucket. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
+ * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline bool CORSConfigurationHasBeenSet() const { return m_cORSConfigurationHasBeenSet; }
+
+ /**
+ * <p>Describes the cross-origin access configuration for objects in an Amazon S3
+ * bucket. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
+ * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline void SetCORSConfiguration(const CORSConfiguration& value) { m_cORSConfigurationHasBeenSet = true; m_cORSConfiguration = value; }
+
+ /**
+ * <p>Describes the cross-origin access configuration for objects in an Amazon S3
+ * bucket. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
+ * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline void SetCORSConfiguration(CORSConfiguration&& value) { m_cORSConfigurationHasBeenSet = true; m_cORSConfiguration = std::move(value); }
+
+ /**
+ * <p>Describes the cross-origin access configuration for objects in an Amazon S3
+ * bucket. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
+ * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline PutBucketCorsRequest& WithCORSConfiguration(const CORSConfiguration& value) { SetCORSConfiguration(value); return *this;}
+
+ /**
+ * <p>Describes the cross-origin access configuration for objects in an Amazon S3
+ * bucket. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html">Enabling
+ * Cross-Origin Resource Sharing</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline PutBucketCorsRequest& WithCORSConfiguration(CORSConfiguration&& value) { SetCORSConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketCorsRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketCorsRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.</a> </p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketCorsRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketCorsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketCorsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketCorsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketCorsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketCorsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketCorsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketCorsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketCorsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketCorsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketCorsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketCorsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketCorsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ CORSConfiguration m_cORSConfiguration;
+ bool m_cORSConfigurationHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketEncryptionRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketEncryptionRequest.h
new file mode 100644
index 00000000000..4df4aa86489
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketEncryptionRequest.h
@@ -0,0 +1,328 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ServerSideEncryptionConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketEncryptionRequest : public S3Request
+ {
+ public:
+ PutBucketEncryptionRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketEncryption"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>Specifies default encryption for a bucket using server-side encryption with
+ * Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
+ * (SSE-KMS). For information about the Amazon S3 default encryption feature, see
+ * <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
+ * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>Specifies default encryption for a bucket using server-side encryption with
+ * Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
+ * (SSE-KMS). For information about the Amazon S3 default encryption feature, see
+ * <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
+ * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>Specifies default encryption for a bucket using server-side encryption with
+ * Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
+ * (SSE-KMS). For information about the Amazon S3 default encryption feature, see
+ * <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
+ * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>Specifies default encryption for a bucket using server-side encryption with
+ * Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
+ * (SSE-KMS). For information about the Amazon S3 default encryption feature, see
+ * <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
+ * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>Specifies default encryption for a bucket using server-side encryption with
+ * Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
+ * (SSE-KMS). For information about the Amazon S3 default encryption feature, see
+ * <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
+ * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>Specifies default encryption for a bucket using server-side encryption with
+ * Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
+ * (SSE-KMS). For information about the Amazon S3 default encryption feature, see
+ * <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
+ * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline PutBucketEncryptionRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>Specifies default encryption for a bucket using server-side encryption with
+ * Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
+ * (SSE-KMS). For information about the Amazon S3 default encryption feature, see
+ * <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
+ * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline PutBucketEncryptionRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies default encryption for a bucket using server-side encryption with
+ * Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
+ * (SSE-KMS). For information about the Amazon S3 default encryption feature, see
+ * <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html">Amazon
+ * S3 Default Bucket Encryption</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline PutBucketEncryptionRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the server-side encryption
+ * configuration.</p> <p>For requests made using the AWS Command Line Interface
+ * (CLI) or AWS SDKs, this field is calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the server-side encryption
+ * configuration.</p> <p>For requests made using the AWS Command Line Interface
+ * (CLI) or AWS SDKs, this field is calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the server-side encryption
+ * configuration.</p> <p>For requests made using the AWS Command Line Interface
+ * (CLI) or AWS SDKs, this field is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the server-side encryption
+ * configuration.</p> <p>For requests made using the AWS Command Line Interface
+ * (CLI) or AWS SDKs, this field is calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the server-side encryption
+ * configuration.</p> <p>For requests made using the AWS Command Line Interface
+ * (CLI) or AWS SDKs, this field is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the server-side encryption
+ * configuration.</p> <p>For requests made using the AWS Command Line Interface
+ * (CLI) or AWS SDKs, this field is calculated automatically.</p>
+ */
+ inline PutBucketEncryptionRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the server-side encryption
+ * configuration.</p> <p>For requests made using the AWS Command Line Interface
+ * (CLI) or AWS SDKs, this field is calculated automatically.</p>
+ */
+ inline PutBucketEncryptionRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the server-side encryption
+ * configuration.</p> <p>For requests made using the AWS Command Line Interface
+ * (CLI) or AWS SDKs, this field is calculated automatically.</p>
+ */
+ inline PutBucketEncryptionRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+
+ inline const ServerSideEncryptionConfiguration& GetServerSideEncryptionConfiguration() const{ return m_serverSideEncryptionConfiguration; }
+
+
+ inline bool ServerSideEncryptionConfigurationHasBeenSet() const { return m_serverSideEncryptionConfigurationHasBeenSet; }
+
+
+ inline void SetServerSideEncryptionConfiguration(const ServerSideEncryptionConfiguration& value) { m_serverSideEncryptionConfigurationHasBeenSet = true; m_serverSideEncryptionConfiguration = value; }
+
+
+ inline void SetServerSideEncryptionConfiguration(ServerSideEncryptionConfiguration&& value) { m_serverSideEncryptionConfigurationHasBeenSet = true; m_serverSideEncryptionConfiguration = std::move(value); }
+
+
+ inline PutBucketEncryptionRequest& WithServerSideEncryptionConfiguration(const ServerSideEncryptionConfiguration& value) { SetServerSideEncryptionConfiguration(value); return *this;}
+
+
+ inline PutBucketEncryptionRequest& WithServerSideEncryptionConfiguration(ServerSideEncryptionConfiguration&& value) { SetServerSideEncryptionConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketEncryptionRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketEncryptionRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketEncryptionRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketEncryptionRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketEncryptionRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketEncryptionRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketEncryptionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketEncryptionRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketEncryptionRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketEncryptionRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketEncryptionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketEncryptionRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ ServerSideEncryptionConfiguration m_serverSideEncryptionConfiguration;
+ bool m_serverSideEncryptionConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketIntelligentTieringConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketIntelligentTieringConfigurationRequest.h
new file mode 100644
index 00000000000..9055e5c1d8f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketIntelligentTieringConfigurationRequest.h
@@ -0,0 +1,220 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/IntelligentTieringConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketIntelligentTieringConfigurationRequest : public S3Request
+ {
+ public:
+ PutBucketIntelligentTieringConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketIntelligentTieringConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline PutBucketIntelligentTieringConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline PutBucketIntelligentTieringConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose configuration you want to modify or
+ * retrieve.</p>
+ */
+ inline PutBucketIntelligentTieringConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline PutBucketIntelligentTieringConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline PutBucketIntelligentTieringConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the S3 Intelligent-Tiering configuration.</p>
+ */
+ inline PutBucketIntelligentTieringConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline const IntelligentTieringConfiguration& GetIntelligentTieringConfiguration() const{ return m_intelligentTieringConfiguration; }
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline bool IntelligentTieringConfigurationHasBeenSet() const { return m_intelligentTieringConfigurationHasBeenSet; }
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetIntelligentTieringConfiguration(const IntelligentTieringConfiguration& value) { m_intelligentTieringConfigurationHasBeenSet = true; m_intelligentTieringConfiguration = value; }
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline void SetIntelligentTieringConfiguration(IntelligentTieringConfiguration&& value) { m_intelligentTieringConfigurationHasBeenSet = true; m_intelligentTieringConfiguration = std::move(value); }
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline PutBucketIntelligentTieringConfigurationRequest& WithIntelligentTieringConfiguration(const IntelligentTieringConfiguration& value) { SetIntelligentTieringConfiguration(value); return *this;}
+
+ /**
+ * <p>Container for S3 Intelligent-Tiering configuration.</p>
+ */
+ inline PutBucketIntelligentTieringConfigurationRequest& WithIntelligentTieringConfiguration(IntelligentTieringConfiguration&& value) { SetIntelligentTieringConfiguration(std::move(value)); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketIntelligentTieringConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketIntelligentTieringConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketIntelligentTieringConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ IntelligentTieringConfiguration m_intelligentTieringConfiguration;
+ bool m_intelligentTieringConfigurationHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketInventoryConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketInventoryConfigurationRequest.h
new file mode 100644
index 00000000000..bbddeea373e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketInventoryConfigurationRequest.h
@@ -0,0 +1,274 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/InventoryConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketInventoryConfigurationRequest : public S3Request
+ {
+ public:
+ PutBucketInventoryConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketInventoryConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket where the inventory configuration will be stored.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket where the inventory configuration will be stored.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket where the inventory configuration will be stored.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket where the inventory configuration will be stored.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket where the inventory configuration will be stored.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket where the inventory configuration will be stored.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket where the inventory configuration will be stored.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket where the inventory configuration will be stored.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the inventory configuration.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline const InventoryConfiguration& GetInventoryConfiguration() const{ return m_inventoryConfiguration; }
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline bool InventoryConfigurationHasBeenSet() const { return m_inventoryConfigurationHasBeenSet; }
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline void SetInventoryConfiguration(const InventoryConfiguration& value) { m_inventoryConfigurationHasBeenSet = true; m_inventoryConfiguration = value; }
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline void SetInventoryConfiguration(InventoryConfiguration&& value) { m_inventoryConfigurationHasBeenSet = true; m_inventoryConfiguration = std::move(value); }
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithInventoryConfiguration(const InventoryConfiguration& value) { SetInventoryConfiguration(value); return *this;}
+
+ /**
+ * <p>Specifies the inventory configuration.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithInventoryConfiguration(InventoryConfiguration&& value) { SetInventoryConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketInventoryConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketInventoryConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketInventoryConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketInventoryConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ InventoryConfiguration m_inventoryConfiguration;
+ bool m_inventoryConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketLifecycleConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketLifecycleConfigurationRequest.h
new file mode 100644
index 00000000000..d47ef160678
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketLifecycleConfigurationRequest.h
@@ -0,0 +1,232 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/BucketLifecycleConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketLifecycleConfigurationRequest : public S3Request
+ {
+ public:
+ PutBucketLifecycleConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketLifecycleConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The name of the bucket for which to set the configuration.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which to set the configuration.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which to set the configuration.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which to set the configuration.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which to set the configuration.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which to set the configuration.</p>
+ */
+ inline PutBucketLifecycleConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to set the configuration.</p>
+ */
+ inline PutBucketLifecycleConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to set the configuration.</p>
+ */
+ inline PutBucketLifecycleConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Container for lifecycle rules. You can add as many as 1,000 rules.</p>
+ */
+ inline const BucketLifecycleConfiguration& GetLifecycleConfiguration() const{ return m_lifecycleConfiguration; }
+
+ /**
+ * <p>Container for lifecycle rules. You can add as many as 1,000 rules.</p>
+ */
+ inline bool LifecycleConfigurationHasBeenSet() const { return m_lifecycleConfigurationHasBeenSet; }
+
+ /**
+ * <p>Container for lifecycle rules. You can add as many as 1,000 rules.</p>
+ */
+ inline void SetLifecycleConfiguration(const BucketLifecycleConfiguration& value) { m_lifecycleConfigurationHasBeenSet = true; m_lifecycleConfiguration = value; }
+
+ /**
+ * <p>Container for lifecycle rules. You can add as many as 1,000 rules.</p>
+ */
+ inline void SetLifecycleConfiguration(BucketLifecycleConfiguration&& value) { m_lifecycleConfigurationHasBeenSet = true; m_lifecycleConfiguration = std::move(value); }
+
+ /**
+ * <p>Container for lifecycle rules. You can add as many as 1,000 rules.</p>
+ */
+ inline PutBucketLifecycleConfigurationRequest& WithLifecycleConfiguration(const BucketLifecycleConfiguration& value) { SetLifecycleConfiguration(value); return *this;}
+
+ /**
+ * <p>Container for lifecycle rules. You can add as many as 1,000 rules.</p>
+ */
+ inline PutBucketLifecycleConfigurationRequest& WithLifecycleConfiguration(BucketLifecycleConfiguration&& value) { SetLifecycleConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketLifecycleConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketLifecycleConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketLifecycleConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketLifecycleConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketLifecycleConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketLifecycleConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ BucketLifecycleConfiguration m_lifecycleConfiguration;
+ bool m_lifecycleConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketLoggingRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketLoggingRequest.h
new file mode 100644
index 00000000000..925daf94f92
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketLoggingRequest.h
@@ -0,0 +1,292 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/BucketLoggingStatus.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketLoggingRequest : public S3Request
+ {
+ public:
+ PutBucketLoggingRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketLogging"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The name of the bucket for which to set the logging parameters.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which to set the logging parameters.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which to set the logging parameters.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which to set the logging parameters.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which to set the logging parameters.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which to set the logging parameters.</p>
+ */
+ inline PutBucketLoggingRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to set the logging parameters.</p>
+ */
+ inline PutBucketLoggingRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which to set the logging parameters.</p>
+ */
+ inline PutBucketLoggingRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Container for logging status information.</p>
+ */
+ inline const BucketLoggingStatus& GetBucketLoggingStatus() const{ return m_bucketLoggingStatus; }
+
+ /**
+ * <p>Container for logging status information.</p>
+ */
+ inline bool BucketLoggingStatusHasBeenSet() const { return m_bucketLoggingStatusHasBeenSet; }
+
+ /**
+ * <p>Container for logging status information.</p>
+ */
+ inline void SetBucketLoggingStatus(const BucketLoggingStatus& value) { m_bucketLoggingStatusHasBeenSet = true; m_bucketLoggingStatus = value; }
+
+ /**
+ * <p>Container for logging status information.</p>
+ */
+ inline void SetBucketLoggingStatus(BucketLoggingStatus&& value) { m_bucketLoggingStatusHasBeenSet = true; m_bucketLoggingStatus = std::move(value); }
+
+ /**
+ * <p>Container for logging status information.</p>
+ */
+ inline PutBucketLoggingRequest& WithBucketLoggingStatus(const BucketLoggingStatus& value) { SetBucketLoggingStatus(value); return *this;}
+
+ /**
+ * <p>Container for logging status information.</p>
+ */
+ inline PutBucketLoggingRequest& WithBucketLoggingStatus(BucketLoggingStatus&& value) { SetBucketLoggingStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The MD5 hash of the <code>PutBucketLogging</code> request body.</p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The MD5 hash of the <code>PutBucketLogging</code> request body.</p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The MD5 hash of the <code>PutBucketLogging</code> request body.</p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The MD5 hash of the <code>PutBucketLogging</code> request body.</p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The MD5 hash of the <code>PutBucketLogging</code> request body.</p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The MD5 hash of the <code>PutBucketLogging</code> request body.</p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline PutBucketLoggingRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The MD5 hash of the <code>PutBucketLogging</code> request body.</p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline PutBucketLoggingRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The MD5 hash of the <code>PutBucketLogging</code> request body.</p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline PutBucketLoggingRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketLoggingRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketLoggingRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketLoggingRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketLoggingRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketLoggingRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketLoggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketLoggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketLoggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketLoggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketLoggingRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketLoggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketLoggingRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ BucketLoggingStatus m_bucketLoggingStatus;
+ bool m_bucketLoggingStatusHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketMetricsConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketMetricsConfigurationRequest.h
new file mode 100644
index 00000000000..c61e5e8b0cd
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketMetricsConfigurationRequest.h
@@ -0,0 +1,274 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/MetricsConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketMetricsConfigurationRequest : public S3Request
+ {
+ public:
+ PutBucketMetricsConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketMetricsConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket for which the metrics configuration is set.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket for which the metrics configuration is set.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket for which the metrics configuration is set.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket for which the metrics configuration is set.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket for which the metrics configuration is set.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket for which the metrics configuration is set.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket for which the metrics configuration is set.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket for which the metrics configuration is set.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline const Aws::String& GetId() const{ return m_id; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+ /**
+ * <p>The ID used to identify the metrics configuration.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline const MetricsConfiguration& GetMetricsConfiguration() const{ return m_metricsConfiguration; }
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline bool MetricsConfigurationHasBeenSet() const { return m_metricsConfigurationHasBeenSet; }
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline void SetMetricsConfiguration(const MetricsConfiguration& value) { m_metricsConfigurationHasBeenSet = true; m_metricsConfiguration = value; }
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline void SetMetricsConfiguration(MetricsConfiguration&& value) { m_metricsConfigurationHasBeenSet = true; m_metricsConfiguration = std::move(value); }
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithMetricsConfiguration(const MetricsConfiguration& value) { SetMetricsConfiguration(value); return *this;}
+
+ /**
+ * <p>Specifies the metrics configuration.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithMetricsConfiguration(MetricsConfiguration&& value) { SetMetricsConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketMetricsConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketMetricsConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketMetricsConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketMetricsConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ MetricsConfiguration m_metricsConfiguration;
+ bool m_metricsConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketNotificationConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketNotificationConfigurationRequest.h
new file mode 100644
index 00000000000..364fe22be84
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketNotificationConfigurationRequest.h
@@ -0,0 +1,218 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/NotificationConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketNotificationConfigurationRequest : public S3Request
+ {
+ public:
+ PutBucketNotificationConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketNotificationConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline PutBucketNotificationConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline PutBucketNotificationConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline PutBucketNotificationConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+
+ inline const NotificationConfiguration& GetNotificationConfiguration() const{ return m_notificationConfiguration; }
+
+
+ inline bool NotificationConfigurationHasBeenSet() const { return m_notificationConfigurationHasBeenSet; }
+
+
+ inline void SetNotificationConfiguration(const NotificationConfiguration& value) { m_notificationConfigurationHasBeenSet = true; m_notificationConfiguration = value; }
+
+
+ inline void SetNotificationConfiguration(NotificationConfiguration&& value) { m_notificationConfigurationHasBeenSet = true; m_notificationConfiguration = std::move(value); }
+
+
+ inline PutBucketNotificationConfigurationRequest& WithNotificationConfiguration(const NotificationConfiguration& value) { SetNotificationConfiguration(value); return *this;}
+
+
+ inline PutBucketNotificationConfigurationRequest& WithNotificationConfiguration(NotificationConfiguration&& value) { SetNotificationConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketNotificationConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketNotificationConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketNotificationConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketNotificationConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketNotificationConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketNotificationConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ NotificationConfiguration m_notificationConfiguration;
+ bool m_notificationConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketOwnershipControlsRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketOwnershipControlsRequest.h
new file mode 100644
index 00000000000..7bf3cda70e7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketOwnershipControlsRequest.h
@@ -0,0 +1,306 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/OwnershipControls.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketOwnershipControlsRequest : public S3Request
+ {
+ public:
+ PutBucketOwnershipControlsRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketOwnershipControls"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to set.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to set.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to set.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to set.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to set.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to set.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to set.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>OwnershipControls</code> you
+ * want to set.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The MD5 hash of the <code>OwnershipControls</code> request body. </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The MD5 hash of the <code>OwnershipControls</code> request body. </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The MD5 hash of the <code>OwnershipControls</code> request body. </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The MD5 hash of the <code>OwnershipControls</code> request body. </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The MD5 hash of the <code>OwnershipControls</code> request body. </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The MD5 hash of the <code>OwnershipControls</code> request body. </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The MD5 hash of the <code>OwnershipControls</code> request body. </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The MD5 hash of the <code>OwnershipControls</code> request body. </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * that you want to apply to this Amazon S3 bucket.</p>
+ */
+ inline const OwnershipControls& GetOwnershipControls() const{ return m_ownershipControls; }
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * that you want to apply to this Amazon S3 bucket.</p>
+ */
+ inline bool OwnershipControlsHasBeenSet() const { return m_ownershipControlsHasBeenSet; }
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * that you want to apply to this Amazon S3 bucket.</p>
+ */
+ inline void SetOwnershipControls(const OwnershipControls& value) { m_ownershipControlsHasBeenSet = true; m_ownershipControls = value; }
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * that you want to apply to this Amazon S3 bucket.</p>
+ */
+ inline void SetOwnershipControls(OwnershipControls&& value) { m_ownershipControlsHasBeenSet = true; m_ownershipControls = std::move(value); }
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * that you want to apply to this Amazon S3 bucket.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithOwnershipControls(const OwnershipControls& value) { SetOwnershipControls(value); return *this;}
+
+ /**
+ * <p>The <code>OwnershipControls</code> (BucketOwnerPreferred or ObjectWriter)
+ * that you want to apply to this Amazon S3 bucket.</p>
+ */
+ inline PutBucketOwnershipControlsRequest& WithOwnershipControls(OwnershipControls&& value) { SetOwnershipControls(std::move(value)); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketOwnershipControlsRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketOwnershipControlsRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketOwnershipControlsRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ OwnershipControls m_ownershipControls;
+ bool m_ownershipControlsHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketPolicyRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketPolicyRequest.h
new file mode 100644
index 00000000000..8d916cd2188
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketPolicyRequest.h
@@ -0,0 +1,284 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketPolicyRequest : public StreamingS3Request
+ {
+ public:
+ PutBucketPolicyRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketPolicy"; }
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline PutBucketPolicyRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline PutBucketPolicyRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket.</p>
+ */
+ inline PutBucketPolicyRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The MD5 hash of the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The MD5 hash of the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The MD5 hash of the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The MD5 hash of the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The MD5 hash of the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The MD5 hash of the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutBucketPolicyRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The MD5 hash of the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutBucketPolicyRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The MD5 hash of the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutBucketPolicyRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>Set this parameter to true to confirm that you want to remove your
+ * permissions to change this bucket policy in the future.</p>
+ */
+ inline bool GetConfirmRemoveSelfBucketAccess() const{ return m_confirmRemoveSelfBucketAccess; }
+
+ /**
+ * <p>Set this parameter to true to confirm that you want to remove your
+ * permissions to change this bucket policy in the future.</p>
+ */
+ inline bool ConfirmRemoveSelfBucketAccessHasBeenSet() const { return m_confirmRemoveSelfBucketAccessHasBeenSet; }
+
+ /**
+ * <p>Set this parameter to true to confirm that you want to remove your
+ * permissions to change this bucket policy in the future.</p>
+ */
+ inline void SetConfirmRemoveSelfBucketAccess(bool value) { m_confirmRemoveSelfBucketAccessHasBeenSet = true; m_confirmRemoveSelfBucketAccess = value; }
+
+ /**
+ * <p>Set this parameter to true to confirm that you want to remove your
+ * permissions to change this bucket policy in the future.</p>
+ */
+ inline PutBucketPolicyRequest& WithConfirmRemoveSelfBucketAccess(bool value) { SetConfirmRemoveSelfBucketAccess(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketPolicyRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketPolicyRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketPolicyRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketPolicyRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketPolicyRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketPolicyRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketPolicyRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketPolicyRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketPolicyRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketPolicyRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketPolicyRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketPolicyRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ bool m_confirmRemoveSelfBucketAccess;
+ bool m_confirmRemoveSelfBucketAccessHasBeenSet;
+
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketReplicationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketReplicationRequest.h
new file mode 100644
index 00000000000..db4696e01dd
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketReplicationRequest.h
@@ -0,0 +1,348 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ReplicationConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketReplicationRequest : public S3Request
+ {
+ public:
+ PutBucketReplicationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketReplication"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The name of the bucket</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket</p>
+ */
+ inline PutBucketReplicationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket</p>
+ */
+ inline PutBucketReplicationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket</p>
+ */
+ inline PutBucketReplicationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketReplicationRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketReplicationRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketReplicationRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+
+ inline const ReplicationConfiguration& GetReplicationConfiguration() const{ return m_replicationConfiguration; }
+
+
+ inline bool ReplicationConfigurationHasBeenSet() const { return m_replicationConfigurationHasBeenSet; }
+
+
+ inline void SetReplicationConfiguration(const ReplicationConfiguration& value) { m_replicationConfigurationHasBeenSet = true; m_replicationConfiguration = value; }
+
+
+ inline void SetReplicationConfiguration(ReplicationConfiguration&& value) { m_replicationConfigurationHasBeenSet = true; m_replicationConfiguration = std::move(value); }
+
+
+ inline PutBucketReplicationRequest& WithReplicationConfiguration(const ReplicationConfiguration& value) { SetReplicationConfiguration(value); return *this;}
+
+
+ inline PutBucketReplicationRequest& WithReplicationConfiguration(ReplicationConfiguration&& value) { SetReplicationConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline const Aws::String& GetToken() const{ return m_token; }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline bool TokenHasBeenSet() const { return m_tokenHasBeenSet; }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline void SetToken(const Aws::String& value) { m_tokenHasBeenSet = true; m_token = value; }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline void SetToken(Aws::String&& value) { m_tokenHasBeenSet = true; m_token = std::move(value); }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline void SetToken(const char* value) { m_tokenHasBeenSet = true; m_token.assign(value); }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline PutBucketReplicationRequest& WithToken(const Aws::String& value) { SetToken(value); return *this;}
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline PutBucketReplicationRequest& WithToken(Aws::String&& value) { SetToken(std::move(value)); return *this;}
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline PutBucketReplicationRequest& WithToken(const char* value) { SetToken(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketReplicationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketReplicationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketReplicationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketReplicationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketReplicationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketReplicationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketReplicationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketReplicationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketReplicationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketReplicationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketReplicationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketReplicationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ ReplicationConfiguration m_replicationConfiguration;
+ bool m_replicationConfigurationHasBeenSet;
+
+ Aws::String m_token;
+ bool m_tokenHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketRequestPaymentRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketRequestPaymentRequest.h
new file mode 100644
index 00000000000..f5840d203d2
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketRequestPaymentRequest.h
@@ -0,0 +1,316 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPaymentConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketRequestPaymentRequest : public S3Request
+ {
+ public:
+ PutBucketRequestPaymentRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketRequestPayment"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>Container for Payer.</p>
+ */
+ inline const RequestPaymentConfiguration& GetRequestPaymentConfiguration() const{ return m_requestPaymentConfiguration; }
+
+ /**
+ * <p>Container for Payer.</p>
+ */
+ inline bool RequestPaymentConfigurationHasBeenSet() const { return m_requestPaymentConfigurationHasBeenSet; }
+
+ /**
+ * <p>Container for Payer.</p>
+ */
+ inline void SetRequestPaymentConfiguration(const RequestPaymentConfiguration& value) { m_requestPaymentConfigurationHasBeenSet = true; m_requestPaymentConfiguration = value; }
+
+ /**
+ * <p>Container for Payer.</p>
+ */
+ inline void SetRequestPaymentConfiguration(RequestPaymentConfiguration&& value) { m_requestPaymentConfigurationHasBeenSet = true; m_requestPaymentConfiguration = std::move(value); }
+
+ /**
+ * <p>Container for Payer.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithRequestPaymentConfiguration(const RequestPaymentConfiguration& value) { SetRequestPaymentConfiguration(value); return *this;}
+
+ /**
+ * <p>Container for Payer.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithRequestPaymentConfiguration(RequestPaymentConfiguration&& value) { SetRequestPaymentConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketRequestPaymentRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketRequestPaymentRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketRequestPaymentRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketRequestPaymentRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketRequestPaymentRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketRequestPaymentRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketRequestPaymentRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketRequestPaymentRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketRequestPaymentRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketRequestPaymentRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ RequestPaymentConfiguration m_requestPaymentConfiguration;
+ bool m_requestPaymentConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketTaggingRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketTaggingRequest.h
new file mode 100644
index 00000000000..1454f4239f4
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketTaggingRequest.h
@@ -0,0 +1,316 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Tagging.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketTaggingRequest : public S3Request
+ {
+ public:
+ PutBucketTaggingRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketTagging"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketTaggingRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketTaggingRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketTaggingRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketTaggingRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketTaggingRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketTaggingRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements.</p>
+ */
+ inline const Tagging& GetTagging() const{ return m_tagging; }
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements.</p>
+ */
+ inline bool TaggingHasBeenSet() const { return m_taggingHasBeenSet; }
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements.</p>
+ */
+ inline void SetTagging(const Tagging& value) { m_taggingHasBeenSet = true; m_tagging = value; }
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements.</p>
+ */
+ inline void SetTagging(Tagging&& value) { m_taggingHasBeenSet = true; m_tagging = std::move(value); }
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements.</p>
+ */
+ inline PutBucketTaggingRequest& WithTagging(const Tagging& value) { SetTagging(value); return *this;}
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements.</p>
+ */
+ inline PutBucketTaggingRequest& WithTagging(Tagging&& value) { SetTagging(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketTaggingRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketTaggingRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketTaggingRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketTaggingRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketTaggingRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketTaggingRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketTaggingRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Tagging m_tagging;
+ bool m_taggingHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketVersioningRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketVersioningRequest.h
new file mode 100644
index 00000000000..9e306b05b21
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketVersioningRequest.h
@@ -0,0 +1,368 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/VersioningConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketVersioningRequest : public S3Request
+ {
+ public:
+ PutBucketVersioningRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketVersioning"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketVersioningRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketVersioningRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketVersioningRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketVersioningRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketVersioningRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>&gt;The base64-encoded 128-bit MD5 digest of the data. You must use this
+ * header as a message integrity check to verify that the request body was not
+ * corrupted in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketVersioningRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device.</p>
+ */
+ inline const Aws::String& GetMFA() const{ return m_mFA; }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device.</p>
+ */
+ inline bool MFAHasBeenSet() const { return m_mFAHasBeenSet; }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device.</p>
+ */
+ inline void SetMFA(const Aws::String& value) { m_mFAHasBeenSet = true; m_mFA = value; }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device.</p>
+ */
+ inline void SetMFA(Aws::String&& value) { m_mFAHasBeenSet = true; m_mFA = std::move(value); }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device.</p>
+ */
+ inline void SetMFA(const char* value) { m_mFAHasBeenSet = true; m_mFA.assign(value); }
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device.</p>
+ */
+ inline PutBucketVersioningRequest& WithMFA(const Aws::String& value) { SetMFA(value); return *this;}
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device.</p>
+ */
+ inline PutBucketVersioningRequest& WithMFA(Aws::String&& value) { SetMFA(std::move(value)); return *this;}
+
+ /**
+ * <p>The concatenation of the authentication device's serial number, a space, and
+ * the value that is displayed on your authentication device.</p>
+ */
+ inline PutBucketVersioningRequest& WithMFA(const char* value) { SetMFA(value); return *this;}
+
+
+ /**
+ * <p>Container for setting the versioning state.</p>
+ */
+ inline const VersioningConfiguration& GetVersioningConfiguration() const{ return m_versioningConfiguration; }
+
+ /**
+ * <p>Container for setting the versioning state.</p>
+ */
+ inline bool VersioningConfigurationHasBeenSet() const { return m_versioningConfigurationHasBeenSet; }
+
+ /**
+ * <p>Container for setting the versioning state.</p>
+ */
+ inline void SetVersioningConfiguration(const VersioningConfiguration& value) { m_versioningConfigurationHasBeenSet = true; m_versioningConfiguration = value; }
+
+ /**
+ * <p>Container for setting the versioning state.</p>
+ */
+ inline void SetVersioningConfiguration(VersioningConfiguration&& value) { m_versioningConfigurationHasBeenSet = true; m_versioningConfiguration = std::move(value); }
+
+ /**
+ * <p>Container for setting the versioning state.</p>
+ */
+ inline PutBucketVersioningRequest& WithVersioningConfiguration(const VersioningConfiguration& value) { SetVersioningConfiguration(value); return *this;}
+
+ /**
+ * <p>Container for setting the versioning state.</p>
+ */
+ inline PutBucketVersioningRequest& WithVersioningConfiguration(VersioningConfiguration&& value) { SetVersioningConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketVersioningRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketVersioningRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketVersioningRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketVersioningRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketVersioningRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketVersioningRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketVersioningRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketVersioningRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketVersioningRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketVersioningRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketVersioningRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketVersioningRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_mFA;
+ bool m_mFAHasBeenSet;
+
+ VersioningConfiguration m_versioningConfiguration;
+ bool m_versioningConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketWebsiteRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketWebsiteRequest.h
new file mode 100644
index 00000000000..695dae41c82
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketWebsiteRequest.h
@@ -0,0 +1,316 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/WebsiteConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutBucketWebsiteRequest : public S3Request
+ {
+ public:
+ PutBucketWebsiteRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutBucketWebsite"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketWebsiteRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketWebsiteRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p>
+ */
+ inline PutBucketWebsiteRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketWebsiteRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketWebsiteRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. You must use this header
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, see <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864</a>.</p> <p>For requests
+ * made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is
+ * calculated automatically.</p>
+ */
+ inline PutBucketWebsiteRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline const WebsiteConfiguration& GetWebsiteConfiguration() const{ return m_websiteConfiguration; }
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline bool WebsiteConfigurationHasBeenSet() const { return m_websiteConfigurationHasBeenSet; }
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline void SetWebsiteConfiguration(const WebsiteConfiguration& value) { m_websiteConfigurationHasBeenSet = true; m_websiteConfiguration = value; }
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline void SetWebsiteConfiguration(WebsiteConfiguration&& value) { m_websiteConfigurationHasBeenSet = true; m_websiteConfiguration = std::move(value); }
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline PutBucketWebsiteRequest& WithWebsiteConfiguration(const WebsiteConfiguration& value) { SetWebsiteConfiguration(value); return *this;}
+
+ /**
+ * <p>Container for the request.</p>
+ */
+ inline PutBucketWebsiteRequest& WithWebsiteConfiguration(WebsiteConfiguration&& value) { SetWebsiteConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketWebsiteRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketWebsiteRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutBucketWebsiteRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutBucketWebsiteRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutBucketWebsiteRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutBucketWebsiteRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutBucketWebsiteRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketWebsiteRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketWebsiteRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutBucketWebsiteRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutBucketWebsiteRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutBucketWebsiteRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ WebsiteConfiguration m_websiteConfiguration;
+ bool m_websiteConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectAclRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectAclRequest.h
new file mode 100644
index 00000000000..e2ec137af3e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectAclRequest.h
@@ -0,0 +1,948 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/s3/model/ObjectCannedACL.h>
+#include <aws/s3/model/AccessControlPolicy.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutObjectAclRequest : public S3Request
+ {
+ public:
+ PutObjectAclRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutObjectAcl"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p>
+ */
+ inline const ObjectCannedACL& GetACL() const{ return m_aCL; }
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p>
+ */
+ inline bool ACLHasBeenSet() const { return m_aCLHasBeenSet; }
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p>
+ */
+ inline void SetACL(const ObjectCannedACL& value) { m_aCLHasBeenSet = true; m_aCL = value; }
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p>
+ */
+ inline void SetACL(ObjectCannedACL&& value) { m_aCLHasBeenSet = true; m_aCL = std::move(value); }
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p>
+ */
+ inline PutObjectAclRequest& WithACL(const ObjectCannedACL& value) { SetACL(value); return *this;}
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p>
+ */
+ inline PutObjectAclRequest& WithACL(ObjectCannedACL&& value) { SetACL(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline const AccessControlPolicy& GetAccessControlPolicy() const{ return m_accessControlPolicy; }
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline bool AccessControlPolicyHasBeenSet() const { return m_accessControlPolicyHasBeenSet; }
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline void SetAccessControlPolicy(const AccessControlPolicy& value) { m_accessControlPolicyHasBeenSet = true; m_accessControlPolicy = value; }
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline void SetAccessControlPolicy(AccessControlPolicy&& value) { m_accessControlPolicyHasBeenSet = true; m_accessControlPolicy = std::move(value); }
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline PutObjectAclRequest& WithAccessControlPolicy(const AccessControlPolicy& value) { SetAccessControlPolicy(value); return *this;}
+
+ /**
+ * <p>Contains the elements that set the ACL permissions for an object per
+ * grantee.</p>
+ */
+ inline PutObjectAclRequest& WithAccessControlPolicy(AccessControlPolicy&& value) { SetAccessControlPolicy(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The bucket name that contains the object to which you want to attach the ACL.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name that contains the object to which you want to attach the ACL.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name that contains the object to which you want to attach the ACL.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name that contains the object to which you want to attach the ACL.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name that contains the object to which you want to attach the ACL.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name that contains the object to which you want to attach the ACL.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectAclRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name that contains the object to which you want to attach the ACL.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectAclRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name that contains the object to which you want to attach the ACL.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectAclRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.&gt;</a> </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.&gt;</a> </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.&gt;</a> </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.&gt;</a> </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.&gt;</a> </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.&gt;</a> </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline PutObjectAclRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.&gt;</a> </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline PutObjectAclRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the data. This header must be used
+ * as a message integrity check to verify that the request body was not corrupted
+ * in transit. For more information, go to <a
+ * href="http://www.ietf.org/rfc/rfc1864.txt">RFC 1864.&gt;</a> </p> <p>For
+ * requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field
+ * is calculated automatically.</p>
+ */
+ inline PutObjectAclRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantFullControl() const{ return m_grantFullControl; }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantFullControlHasBeenSet() const { return m_grantFullControlHasBeenSet; }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(const Aws::String& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = value; }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(Aws::String&& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = std::move(value); }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(const char* value) { m_grantFullControlHasBeenSet = true; m_grantFullControl.assign(value); }
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantFullControl(const Aws::String& value) { SetGrantFullControl(value); return *this;}
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantFullControl(Aws::String&& value) { SetGrantFullControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee the read, write, read ACP, and write ACP permissions on the
+ * bucket.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantFullControl(const char* value) { SetGrantFullControl(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p> <p>This action is not
+ * supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantRead() const{ return m_grantRead; }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p> <p>This action is not
+ * supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantReadHasBeenSet() const { return m_grantReadHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p> <p>This action is not
+ * supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(const Aws::String& value) { m_grantReadHasBeenSet = true; m_grantRead = value; }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p> <p>This action is not
+ * supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(Aws::String&& value) { m_grantReadHasBeenSet = true; m_grantRead = std::move(value); }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p> <p>This action is not
+ * supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(const char* value) { m_grantReadHasBeenSet = true; m_grantRead.assign(value); }
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p> <p>This action is not
+ * supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantRead(const Aws::String& value) { SetGrantRead(value); return *this;}
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p> <p>This action is not
+ * supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantRead(Aws::String&& value) { SetGrantRead(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to list the objects in the bucket.</p> <p>This action is not
+ * supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantRead(const char* value) { SetGrantRead(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantReadACP() const{ return m_grantReadACP; }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantReadACPHasBeenSet() const { return m_grantReadACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(const Aws::String& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = value; }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(Aws::String&& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(const char* value) { m_grantReadACPHasBeenSet = true; m_grantReadACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantReadACP(const Aws::String& value) { SetGrantReadACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantReadACP(Aws::String&& value) { SetGrantReadACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to read the bucket ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantReadACP(const char* value) { SetGrantReadACP(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline const Aws::String& GetGrantWrite() const{ return m_grantWrite; }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline bool GrantWriteHasBeenSet() const { return m_grantWriteHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline void SetGrantWrite(const Aws::String& value) { m_grantWriteHasBeenSet = true; m_grantWrite = value; }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline void SetGrantWrite(Aws::String&& value) { m_grantWriteHasBeenSet = true; m_grantWrite = std::move(value); }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline void SetGrantWrite(const char* value) { m_grantWriteHasBeenSet = true; m_grantWrite.assign(value); }
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline PutObjectAclRequest& WithGrantWrite(const Aws::String& value) { SetGrantWrite(value); return *this;}
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline PutObjectAclRequest& WithGrantWrite(Aws::String&& value) { SetGrantWrite(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to create, overwrite, and delete any object in the bucket.</p>
+ */
+ inline PutObjectAclRequest& WithGrantWrite(const char* value) { SetGrantWrite(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantWriteACP() const{ return m_grantWriteACP; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantWriteACPHasBeenSet() const { return m_grantWriteACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(const Aws::String& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = value; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(Aws::String&& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(const char* value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantWriteACP(const Aws::String& value) { SetGrantWriteACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantWriteACP(Aws::String&& value) { SetGrantWriteACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable bucket.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectAclRequest& WithGrantWriteACP(const char* value) { SetGrantWriteACP(value); return *this;}
+
+
+ /**
+ * <p>Key for which the PUT operation was initiated.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Key for which the PUT operation was initiated.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Key for which the PUT operation was initiated.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Key for which the PUT operation was initiated.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Key for which the PUT operation was initiated.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Key for which the PUT operation was initiated.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectAclRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Key for which the PUT operation was initiated.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectAclRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Key for which the PUT operation was initiated.</p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectAclRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline PutObjectAclRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline PutObjectAclRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline PutObjectAclRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline PutObjectAclRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline PutObjectAclRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectAclRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectAclRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectAclRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutObjectAclRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutObjectAclRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutObjectAclRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutObjectAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectAclRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutObjectAclRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectAclRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectAclRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ ObjectCannedACL m_aCL;
+ bool m_aCLHasBeenSet;
+
+ AccessControlPolicy m_accessControlPolicy;
+ bool m_accessControlPolicyHasBeenSet;
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_grantFullControl;
+ bool m_grantFullControlHasBeenSet;
+
+ Aws::String m_grantRead;
+ bool m_grantReadHasBeenSet;
+
+ Aws::String m_grantReadACP;
+ bool m_grantReadACPHasBeenSet;
+
+ Aws::String m_grantWrite;
+ bool m_grantWriteHasBeenSet;
+
+ Aws::String m_grantWriteACP;
+ bool m_grantWriteACPHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectAclResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectAclResult.h
new file mode 100644
index 00000000000..0047bbca990
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectAclResult.h
@@ -0,0 +1,57 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API PutObjectAclResult
+ {
+ public:
+ PutObjectAclResult();
+ PutObjectAclResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ PutObjectAclResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline PutObjectAclResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline PutObjectAclResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLegalHoldRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLegalHoldRequest.h
new file mode 100644
index 00000000000..4bf13e588f0
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLegalHoldRequest.h
@@ -0,0 +1,481 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ObjectLockLegalHold.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutObjectLegalHoldRequest : public S3Request
+ {
+ public:
+ PutObjectLegalHoldRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutObjectLegalHold"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The bucket name containing the object that you want to place a Legal Hold on.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name containing the object that you want to place a Legal Hold on.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name containing the object that you want to place a Legal Hold on.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name containing the object that you want to place a Legal Hold on.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name containing the object that you want to place a Legal Hold on.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name containing the object that you want to place a Legal Hold on.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name containing the object that you want to place a Legal Hold on.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name containing the object that you want to place a Legal Hold on.
+ * </p> <p>When using this API with an access point, you must direct requests to
+ * the access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The key name for the object that you want to place a Legal Hold on.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The key name for the object that you want to place a Legal Hold on.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The key name for the object that you want to place a Legal Hold on.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The key name for the object that you want to place a Legal Hold on.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The key name for the object that you want to place a Legal Hold on.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The key name for the object that you want to place a Legal Hold on.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The key name for the object that you want to place a Legal Hold on.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The key name for the object that you want to place a Legal Hold on.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Container element for the Legal Hold configuration you want to apply to the
+ * specified object.</p>
+ */
+ inline const ObjectLockLegalHold& GetLegalHold() const{ return m_legalHold; }
+
+ /**
+ * <p>Container element for the Legal Hold configuration you want to apply to the
+ * specified object.</p>
+ */
+ inline bool LegalHoldHasBeenSet() const { return m_legalHoldHasBeenSet; }
+
+ /**
+ * <p>Container element for the Legal Hold configuration you want to apply to the
+ * specified object.</p>
+ */
+ inline void SetLegalHold(const ObjectLockLegalHold& value) { m_legalHoldHasBeenSet = true; m_legalHold = value; }
+
+ /**
+ * <p>Container element for the Legal Hold configuration you want to apply to the
+ * specified object.</p>
+ */
+ inline void SetLegalHold(ObjectLockLegalHold&& value) { m_legalHoldHasBeenSet = true; m_legalHold = std::move(value); }
+
+ /**
+ * <p>Container element for the Legal Hold configuration you want to apply to the
+ * specified object.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithLegalHold(const ObjectLockLegalHold& value) { SetLegalHold(value); return *this;}
+
+ /**
+ * <p>Container element for the Legal Hold configuration you want to apply to the
+ * specified object.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithLegalHold(ObjectLockLegalHold&& value) { SetLegalHold(std::move(value)); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline PutObjectLegalHoldRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline PutObjectLegalHoldRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The version ID of the object that you want to place a Legal Hold on.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The version ID of the object that you want to place a Legal Hold on.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>The version ID of the object that you want to place a Legal Hold on.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>The version ID of the object that you want to place a Legal Hold on.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>The version ID of the object that you want to place a Legal Hold on.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>The version ID of the object that you want to place a Legal Hold on.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The version ID of the object that you want to place a Legal Hold on.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The version ID of the object that you want to place a Legal Hold on.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectLegalHoldRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutObjectLegalHoldRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutObjectLegalHoldRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutObjectLegalHoldRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutObjectLegalHoldRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectLegalHoldRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectLegalHoldRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutObjectLegalHoldRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectLegalHoldRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectLegalHoldRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ ObjectLockLegalHold m_legalHold;
+ bool m_legalHoldHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLegalHoldResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLegalHoldResult.h
new file mode 100644
index 00000000000..f4322c70f9e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLegalHoldResult.h
@@ -0,0 +1,57 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API PutObjectLegalHoldResult
+ {
+ public:
+ PutObjectLegalHoldResult();
+ PutObjectLegalHoldResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ PutObjectLegalHoldResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline PutObjectLegalHoldResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline PutObjectLegalHoldResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLockConfigurationRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLockConfigurationRequest.h
new file mode 100644
index 00000000000..249fa153b13
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLockConfigurationRequest.h
@@ -0,0 +1,365 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ObjectLockConfiguration.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutObjectLockConfigurationRequest : public S3Request
+ {
+ public:
+ PutObjectLockConfigurationRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutObjectLockConfiguration"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to create or replace.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to create or replace.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to create or replace.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to create or replace.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to create or replace.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to create or replace.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to create or replace.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket whose Object Lock configuration you want to create or replace.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The Object Lock configuration that you want to apply to the specified
+ * bucket.</p>
+ */
+ inline const ObjectLockConfiguration& GetObjectLockConfiguration() const{ return m_objectLockConfiguration; }
+
+ /**
+ * <p>The Object Lock configuration that you want to apply to the specified
+ * bucket.</p>
+ */
+ inline bool ObjectLockConfigurationHasBeenSet() const { return m_objectLockConfigurationHasBeenSet; }
+
+ /**
+ * <p>The Object Lock configuration that you want to apply to the specified
+ * bucket.</p>
+ */
+ inline void SetObjectLockConfiguration(const ObjectLockConfiguration& value) { m_objectLockConfigurationHasBeenSet = true; m_objectLockConfiguration = value; }
+
+ /**
+ * <p>The Object Lock configuration that you want to apply to the specified
+ * bucket.</p>
+ */
+ inline void SetObjectLockConfiguration(ObjectLockConfiguration&& value) { m_objectLockConfigurationHasBeenSet = true; m_objectLockConfiguration = std::move(value); }
+
+ /**
+ * <p>The Object Lock configuration that you want to apply to the specified
+ * bucket.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithObjectLockConfiguration(const ObjectLockConfiguration& value) { SetObjectLockConfiguration(value); return *this;}
+
+ /**
+ * <p>The Object Lock configuration that you want to apply to the specified
+ * bucket.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithObjectLockConfiguration(ObjectLockConfiguration&& value) { SetObjectLockConfiguration(std::move(value)); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline PutObjectLockConfigurationRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline PutObjectLockConfigurationRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline const Aws::String& GetToken() const{ return m_token; }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline bool TokenHasBeenSet() const { return m_tokenHasBeenSet; }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline void SetToken(const Aws::String& value) { m_tokenHasBeenSet = true; m_token = value; }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline void SetToken(Aws::String&& value) { m_tokenHasBeenSet = true; m_token = std::move(value); }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline void SetToken(const char* value) { m_tokenHasBeenSet = true; m_token.assign(value); }
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithToken(const Aws::String& value) { SetToken(value); return *this;}
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithToken(Aws::String&& value) { SetToken(std::move(value)); return *this;}
+
+ /**
+ * <p>A token to allow Object Lock to be enabled for an existing bucket.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithToken(const char* value) { SetToken(value); return *this;}
+
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectLockConfigurationRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutObjectLockConfigurationRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutObjectLockConfigurationRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutObjectLockConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutObjectLockConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectLockConfigurationRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectLockConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutObjectLockConfigurationRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectLockConfigurationRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectLockConfigurationRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ ObjectLockConfiguration m_objectLockConfiguration;
+ bool m_objectLockConfigurationHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_token;
+ bool m_tokenHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLockConfigurationResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLockConfigurationResult.h
new file mode 100644
index 00000000000..c3b86b53d50
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectLockConfigurationResult.h
@@ -0,0 +1,57 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API PutObjectLockConfigurationResult
+ {
+ public:
+ PutObjectLockConfigurationResult();
+ PutObjectLockConfigurationResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ PutObjectLockConfigurationResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline PutObjectLockConfigurationResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline PutObjectLockConfigurationResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRequest.h
new file mode 100644
index 00000000000..27a829ce553
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRequest.h
@@ -0,0 +1,1987 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/s3/model/ObjectCannedACL.h>
+#include <aws/core/utils/Array.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/s3/model/ObjectLockMode.h>
+#include <aws/s3/model/ObjectLockLegalHoldStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutObjectRequest : public StreamingS3Request
+ {
+ public:
+ PutObjectRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutObject"; }
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const ObjectCannedACL& GetACL() const{ return m_aCL; }
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool ACLHasBeenSet() const { return m_aCLHasBeenSet; }
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetACL(const ObjectCannedACL& value) { m_aCLHasBeenSet = true; m_aCL = value; }
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetACL(ObjectCannedACL&& value) { m_aCLHasBeenSet = true; m_aCL = std::move(value); }
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithACL(const ObjectCannedACL& value) { SetACL(value); return *this;}
+
+ /**
+ * <p>The canned ACL to apply to the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned
+ * ACL</a>.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithACL(ObjectCannedACL&& value) { SetACL(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The bucket name to which the PUT operation was initiated. </p> <p>When using
+ * this API with an access point, you must direct requests to the access point
+ * hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name to which the PUT operation was initiated. </p> <p>When using
+ * this API with an access point, you must direct requests to the access point
+ * hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name to which the PUT operation was initiated. </p> <p>When using
+ * this API with an access point, you must direct requests to the access point
+ * hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name to which the PUT operation was initiated. </p> <p>When using
+ * this API with an access point, you must direct requests to the access point
+ * hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name to which the PUT operation was initiated. </p> <p>When using
+ * this API with an access point, you must direct requests to the access point
+ * hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name to which the PUT operation was initiated. </p> <p>When using
+ * this API with an access point, you must direct requests to the access point
+ * hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name to which the PUT operation was initiated. </p> <p>When using
+ * this API with an access point, you must direct requests to the access point
+ * hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name to which the PUT operation was initiated. </p> <p>When using
+ * this API with an access point, you must direct requests to the access point
+ * hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p> Can be used to specify caching behavior along the request/reply chain. For
+ * more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
+ */
+ inline const Aws::String& GetCacheControl() const{ return m_cacheControl; }
+
+ /**
+ * <p> Can be used to specify caching behavior along the request/reply chain. For
+ * more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
+ */
+ inline bool CacheControlHasBeenSet() const { return m_cacheControlHasBeenSet; }
+
+ /**
+ * <p> Can be used to specify caching behavior along the request/reply chain. For
+ * more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
+ */
+ inline void SetCacheControl(const Aws::String& value) { m_cacheControlHasBeenSet = true; m_cacheControl = value; }
+
+ /**
+ * <p> Can be used to specify caching behavior along the request/reply chain. For
+ * more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
+ */
+ inline void SetCacheControl(Aws::String&& value) { m_cacheControlHasBeenSet = true; m_cacheControl = std::move(value); }
+
+ /**
+ * <p> Can be used to specify caching behavior along the request/reply chain. For
+ * more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
+ */
+ inline void SetCacheControl(const char* value) { m_cacheControlHasBeenSet = true; m_cacheControl.assign(value); }
+
+ /**
+ * <p> Can be used to specify caching behavior along the request/reply chain. For
+ * more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
+ */
+ inline PutObjectRequest& WithCacheControl(const Aws::String& value) { SetCacheControl(value); return *this;}
+
+ /**
+ * <p> Can be used to specify caching behavior along the request/reply chain. For
+ * more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
+ */
+ inline PutObjectRequest& WithCacheControl(Aws::String&& value) { SetCacheControl(std::move(value)); return *this;}
+
+ /**
+ * <p> Can be used to specify caching behavior along the request/reply chain. For
+ * more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
+ */
+ inline PutObjectRequest& WithCacheControl(const char* value) { SetCacheControl(value); return *this;}
+
+
+ /**
+ * <p>Specifies presentational information for the object. For more information,
+ * see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1">http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1</a>.</p>
+ */
+ inline const Aws::String& GetContentDisposition() const{ return m_contentDisposition; }
+
+ /**
+ * <p>Specifies presentational information for the object. For more information,
+ * see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1">http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1</a>.</p>
+ */
+ inline bool ContentDispositionHasBeenSet() const { return m_contentDispositionHasBeenSet; }
+
+ /**
+ * <p>Specifies presentational information for the object. For more information,
+ * see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1">http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1</a>.</p>
+ */
+ inline void SetContentDisposition(const Aws::String& value) { m_contentDispositionHasBeenSet = true; m_contentDisposition = value; }
+
+ /**
+ * <p>Specifies presentational information for the object. For more information,
+ * see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1">http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1</a>.</p>
+ */
+ inline void SetContentDisposition(Aws::String&& value) { m_contentDispositionHasBeenSet = true; m_contentDisposition = std::move(value); }
+
+ /**
+ * <p>Specifies presentational information for the object. For more information,
+ * see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1">http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1</a>.</p>
+ */
+ inline void SetContentDisposition(const char* value) { m_contentDispositionHasBeenSet = true; m_contentDisposition.assign(value); }
+
+ /**
+ * <p>Specifies presentational information for the object. For more information,
+ * see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1">http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1</a>.</p>
+ */
+ inline PutObjectRequest& WithContentDisposition(const Aws::String& value) { SetContentDisposition(value); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object. For more information,
+ * see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1">http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1</a>.</p>
+ */
+ inline PutObjectRequest& WithContentDisposition(Aws::String&& value) { SetContentDisposition(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies presentational information for the object. For more information,
+ * see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1">http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1</a>.</p>
+ */
+ inline PutObjectRequest& WithContentDisposition(const char* value) { SetContentDisposition(value); return *this;}
+
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11</a>.</p>
+ */
+ inline const Aws::String& GetContentEncoding() const{ return m_contentEncoding; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11</a>.</p>
+ */
+ inline bool ContentEncodingHasBeenSet() const { return m_contentEncodingHasBeenSet; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11</a>.</p>
+ */
+ inline void SetContentEncoding(const Aws::String& value) { m_contentEncodingHasBeenSet = true; m_contentEncoding = value; }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11</a>.</p>
+ */
+ inline void SetContentEncoding(Aws::String&& value) { m_contentEncodingHasBeenSet = true; m_contentEncoding = std::move(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11</a>.</p>
+ */
+ inline void SetContentEncoding(const char* value) { m_contentEncodingHasBeenSet = true; m_contentEncoding.assign(value); }
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11</a>.</p>
+ */
+ inline PutObjectRequest& WithContentEncoding(const Aws::String& value) { SetContentEncoding(value); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11</a>.</p>
+ */
+ inline PutObjectRequest& WithContentEncoding(Aws::String&& value) { SetContentEncoding(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies what content encodings have been applied to the object and thus
+ * what decoding mechanisms must be applied to obtain the media-type referenced by
+ * the Content-Type header field. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11</a>.</p>
+ */
+ inline PutObjectRequest& WithContentEncoding(const char* value) { SetContentEncoding(value); return *this;}
+
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline const Aws::String& GetContentLanguage() const{ return m_contentLanguage; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline bool ContentLanguageHasBeenSet() const { return m_contentLanguageHasBeenSet; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const Aws::String& value) { m_contentLanguageHasBeenSet = true; m_contentLanguage = value; }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(Aws::String&& value) { m_contentLanguageHasBeenSet = true; m_contentLanguage = std::move(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline void SetContentLanguage(const char* value) { m_contentLanguageHasBeenSet = true; m_contentLanguage.assign(value); }
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline PutObjectRequest& WithContentLanguage(const Aws::String& value) { SetContentLanguage(value); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline PutObjectRequest& WithContentLanguage(Aws::String&& value) { SetContentLanguage(std::move(value)); return *this;}
+
+ /**
+ * <p>The language the content is in.</p>
+ */
+ inline PutObjectRequest& WithContentLanguage(const char* value) { SetContentLanguage(value); return *this;}
+
+
+ /**
+ * <p>Size of the body in bytes. This parameter is useful when the size of the body
+ * cannot be determined automatically. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13</a>.</p>
+ */
+ inline long long GetContentLength() const{ return m_contentLength; }
+
+ /**
+ * <p>Size of the body in bytes. This parameter is useful when the size of the body
+ * cannot be determined automatically. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13</a>.</p>
+ */
+ inline bool ContentLengthHasBeenSet() const { return m_contentLengthHasBeenSet; }
+
+ /**
+ * <p>Size of the body in bytes. This parameter is useful when the size of the body
+ * cannot be determined automatically. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13</a>.</p>
+ */
+ inline void SetContentLength(long long value) { m_contentLengthHasBeenSet = true; m_contentLength = value; }
+
+ /**
+ * <p>Size of the body in bytes. This parameter is useful when the size of the body
+ * cannot be determined automatically. For more information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13</a>.</p>
+ */
+ inline PutObjectRequest& WithContentLength(long long value) { SetContentLength(value); return *this;}
+
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the message (without the headers)
+ * according to RFC 1864. This header can be used as a message integrity check to
+ * verify that the data is the same data that was originally sent. Although it is
+ * optional, we recommend using the Content-MD5 mechanism as an end-to-end
+ * integrity check. For more information about REST request authentication, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a>.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the message (without the headers)
+ * according to RFC 1864. This header can be used as a message integrity check to
+ * verify that the data is the same data that was originally sent. Although it is
+ * optional, we recommend using the Content-MD5 mechanism as an end-to-end
+ * integrity check. For more information about REST request authentication, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a>.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the message (without the headers)
+ * according to RFC 1864. This header can be used as a message integrity check to
+ * verify that the data is the same data that was originally sent. Although it is
+ * optional, we recommend using the Content-MD5 mechanism as an end-to-end
+ * integrity check. For more information about REST request authentication, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a>.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the message (without the headers)
+ * according to RFC 1864. This header can be used as a message integrity check to
+ * verify that the data is the same data that was originally sent. Although it is
+ * optional, we recommend using the Content-MD5 mechanism as an end-to-end
+ * integrity check. For more information about REST request authentication, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a>.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the message (without the headers)
+ * according to RFC 1864. This header can be used as a message integrity check to
+ * verify that the data is the same data that was originally sent. Although it is
+ * optional, we recommend using the Content-MD5 mechanism as an end-to-end
+ * integrity check. For more information about REST request authentication, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a>.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the message (without the headers)
+ * according to RFC 1864. This header can be used as a message integrity check to
+ * verify that the data is the same data that was originally sent. Although it is
+ * optional, we recommend using the Content-MD5 mechanism as an end-to-end
+ * integrity check. For more information about REST request authentication, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a>.</p>
+ */
+ inline PutObjectRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the message (without the headers)
+ * according to RFC 1864. This header can be used as a message integrity check to
+ * verify that the data is the same data that was originally sent. Although it is
+ * optional, we recommend using the Content-MD5 mechanism as an end-to-end
+ * integrity check. For more information about REST request authentication, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a>.</p>
+ */
+ inline PutObjectRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the message (without the headers)
+ * according to RFC 1864. This header can be used as a message integrity check to
+ * verify that the data is the same data that was originally sent. Although it is
+ * optional, we recommend using the Content-MD5 mechanism as an end-to-end
+ * integrity check. For more information about REST request authentication, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST
+ * Authentication</a>.</p>
+ */
+ inline PutObjectRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable. For more
+ * information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21</a>.</p>
+ */
+ inline const Aws::Utils::DateTime& GetExpires() const{ return m_expires; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable. For more
+ * information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21</a>.</p>
+ */
+ inline bool ExpiresHasBeenSet() const { return m_expiresHasBeenSet; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable. For more
+ * information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21</a>.</p>
+ */
+ inline void SetExpires(const Aws::Utils::DateTime& value) { m_expiresHasBeenSet = true; m_expires = value; }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable. For more
+ * information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21</a>.</p>
+ */
+ inline void SetExpires(Aws::Utils::DateTime&& value) { m_expiresHasBeenSet = true; m_expires = std::move(value); }
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable. For more
+ * information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21</a>.</p>
+ */
+ inline PutObjectRequest& WithExpires(const Aws::Utils::DateTime& value) { SetExpires(value); return *this;}
+
+ /**
+ * <p>The date and time at which the object is no longer cacheable. For more
+ * information, see <a
+ * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21</a>.</p>
+ */
+ inline PutObjectRequest& WithExpires(Aws::Utils::DateTime&& value) { SetExpires(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantFullControl() const{ return m_grantFullControl; }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantFullControlHasBeenSet() const { return m_grantFullControlHasBeenSet; }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(const Aws::String& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = value; }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(Aws::String&& value) { m_grantFullControlHasBeenSet = true; m_grantFullControl = std::move(value); }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantFullControl(const char* value) { m_grantFullControlHasBeenSet = true; m_grantFullControl.assign(value); }
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantFullControl(const Aws::String& value) { SetGrantFullControl(value); return *this;}
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantFullControl(Aws::String&& value) { SetGrantFullControl(std::move(value)); return *this;}
+
+ /**
+ * <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the
+ * object.</p> <p>This action is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantFullControl(const char* value) { SetGrantFullControl(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantRead() const{ return m_grantRead; }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantReadHasBeenSet() const { return m_grantReadHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(const Aws::String& value) { m_grantReadHasBeenSet = true; m_grantRead = value; }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(Aws::String&& value) { m_grantReadHasBeenSet = true; m_grantRead = std::move(value); }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantRead(const char* value) { m_grantReadHasBeenSet = true; m_grantRead.assign(value); }
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantRead(const Aws::String& value) { SetGrantRead(value); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantRead(Aws::String&& value) { SetGrantRead(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object data and its metadata.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantRead(const char* value) { SetGrantRead(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantReadACP() const{ return m_grantReadACP; }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantReadACPHasBeenSet() const { return m_grantReadACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(const Aws::String& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = value; }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(Aws::String&& value) { m_grantReadACPHasBeenSet = true; m_grantReadACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantReadACP(const char* value) { m_grantReadACPHasBeenSet = true; m_grantReadACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantReadACP(const Aws::String& value) { SetGrantReadACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantReadACP(Aws::String&& value) { SetGrantReadACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to read the object ACL.</p> <p>This action is not supported by
+ * Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantReadACP(const char* value) { SetGrantReadACP(value); return *this;}
+
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline const Aws::String& GetGrantWriteACP() const{ return m_grantWriteACP; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline bool GrantWriteACPHasBeenSet() const { return m_grantWriteACPHasBeenSet; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(const Aws::String& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = value; }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(Aws::String&& value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP = std::move(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline void SetGrantWriteACP(const char* value) { m_grantWriteACPHasBeenSet = true; m_grantWriteACP.assign(value); }
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantWriteACP(const Aws::String& value) { SetGrantWriteACP(value); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantWriteACP(Aws::String&& value) { SetGrantWriteACP(std::move(value)); return *this;}
+
+ /**
+ * <p>Allows grantee to write the ACL for the applicable object.</p> <p>This action
+ * is not supported by Amazon S3 on Outposts.</p>
+ */
+ inline PutObjectRequest& WithGrantWriteACP(const char* value) { SetGrantWriteACP(value); return *this;}
+
+
+ /**
+ * <p>Object key for which the PUT operation was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which the PUT operation was initiated.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Object key for which the PUT operation was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Object key for which the PUT operation was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which the PUT operation was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Object key for which the PUT operation was initiated.</p>
+ */
+ inline PutObjectRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which the PUT operation was initiated.</p>
+ */
+ inline PutObjectRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which the PUT operation was initiated.</p>
+ */
+ inline PutObjectRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline const Aws::Map<Aws::String, Aws::String>& GetMetadata() const{ return m_metadata; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline bool MetadataHasBeenSet() const { return m_metadataHasBeenSet; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(const Aws::Map<Aws::String, Aws::String>& value) { m_metadataHasBeenSet = true; m_metadata = value; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline void SetMetadata(Aws::Map<Aws::String, Aws::String>&& value) { m_metadataHasBeenSet = true; m_metadata = std::move(value); }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline PutObjectRequest& WithMetadata(const Aws::Map<Aws::String, Aws::String>& value) { SetMetadata(value); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline PutObjectRequest& WithMetadata(Aws::Map<Aws::String, Aws::String>&& value) { SetMetadata(std::move(value)); return *this;}
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline PutObjectRequest& AddMetadata(const Aws::String& key, const Aws::String& value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline PutObjectRequest& AddMetadata(Aws::String&& key, const Aws::String& value) { m_metadataHasBeenSet = true; m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline PutObjectRequest& AddMetadata(const Aws::String& key, Aws::String&& value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline PutObjectRequest& AddMetadata(Aws::String&& key, Aws::String&& value) { m_metadataHasBeenSet = true; m_metadata.emplace(std::move(key), std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline PutObjectRequest& AddMetadata(const char* key, Aws::String&& value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, std::move(value)); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline PutObjectRequest& AddMetadata(Aws::String&& key, const char* value) { m_metadataHasBeenSet = true; m_metadata.emplace(std::move(key), value); return *this; }
+
+ /**
+ * <p>A map of metadata to store with the object in S3.</p>
+ */
+ inline PutObjectRequest& AddMetadata(const char* key, const char* value) { m_metadataHasBeenSet = true; m_metadata.emplace(key, value); return *this; }
+
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = value; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline PutObjectRequest& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline PutObjectRequest& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline void SetStorageClass(const StorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline void SetStorageClass(StorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline PutObjectRequest& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>By default, Amazon S3 uses the STANDARD Storage Class to store newly created
+ * objects. The STANDARD storage class provides high durability and high
+ * availability. Depending on performance needs, you can specify a different
+ * Storage Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
+ * more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage
+ * Classes</a> in the <i>Amazon S3 Service Developer Guide</i>.</p>
+ */
+ inline PutObjectRequest& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata. For information about object
+ * metadata, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object
+ * Key and Metadata</a>.</p> <p>In the following example, the request header sets
+ * the redirect to an object (anotherPage.html) in the same bucket:</p> <p>
+ * <code>x-amz-website-redirect-location: /anotherPage.html</code> </p> <p>In the
+ * following example, the request header sets the object redirect to another
+ * website:</p> <p> <code>x-amz-website-redirect-location:
+ * http://www.example.com/</code> </p> <p>For more information about website
+ * hosting in Amazon S3, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
+ * Websites on Amazon S3</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How
+ * to Configure Website Page Redirects</a>. </p>
+ */
+ inline const Aws::String& GetWebsiteRedirectLocation() const{ return m_websiteRedirectLocation; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata. For information about object
+ * metadata, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object
+ * Key and Metadata</a>.</p> <p>In the following example, the request header sets
+ * the redirect to an object (anotherPage.html) in the same bucket:</p> <p>
+ * <code>x-amz-website-redirect-location: /anotherPage.html</code> </p> <p>In the
+ * following example, the request header sets the object redirect to another
+ * website:</p> <p> <code>x-amz-website-redirect-location:
+ * http://www.example.com/</code> </p> <p>For more information about website
+ * hosting in Amazon S3, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
+ * Websites on Amazon S3</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How
+ * to Configure Website Page Redirects</a>. </p>
+ */
+ inline bool WebsiteRedirectLocationHasBeenSet() const { return m_websiteRedirectLocationHasBeenSet; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata. For information about object
+ * metadata, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object
+ * Key and Metadata</a>.</p> <p>In the following example, the request header sets
+ * the redirect to an object (anotherPage.html) in the same bucket:</p> <p>
+ * <code>x-amz-website-redirect-location: /anotherPage.html</code> </p> <p>In the
+ * following example, the request header sets the object redirect to another
+ * website:</p> <p> <code>x-amz-website-redirect-location:
+ * http://www.example.com/</code> </p> <p>For more information about website
+ * hosting in Amazon S3, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
+ * Websites on Amazon S3</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How
+ * to Configure Website Page Redirects</a>. </p>
+ */
+ inline void SetWebsiteRedirectLocation(const Aws::String& value) { m_websiteRedirectLocationHasBeenSet = true; m_websiteRedirectLocation = value; }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata. For information about object
+ * metadata, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object
+ * Key and Metadata</a>.</p> <p>In the following example, the request header sets
+ * the redirect to an object (anotherPage.html) in the same bucket:</p> <p>
+ * <code>x-amz-website-redirect-location: /anotherPage.html</code> </p> <p>In the
+ * following example, the request header sets the object redirect to another
+ * website:</p> <p> <code>x-amz-website-redirect-location:
+ * http://www.example.com/</code> </p> <p>For more information about website
+ * hosting in Amazon S3, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
+ * Websites on Amazon S3</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How
+ * to Configure Website Page Redirects</a>. </p>
+ */
+ inline void SetWebsiteRedirectLocation(Aws::String&& value) { m_websiteRedirectLocationHasBeenSet = true; m_websiteRedirectLocation = std::move(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata. For information about object
+ * metadata, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object
+ * Key and Metadata</a>.</p> <p>In the following example, the request header sets
+ * the redirect to an object (anotherPage.html) in the same bucket:</p> <p>
+ * <code>x-amz-website-redirect-location: /anotherPage.html</code> </p> <p>In the
+ * following example, the request header sets the object redirect to another
+ * website:</p> <p> <code>x-amz-website-redirect-location:
+ * http://www.example.com/</code> </p> <p>For more information about website
+ * hosting in Amazon S3, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
+ * Websites on Amazon S3</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How
+ * to Configure Website Page Redirects</a>. </p>
+ */
+ inline void SetWebsiteRedirectLocation(const char* value) { m_websiteRedirectLocationHasBeenSet = true; m_websiteRedirectLocation.assign(value); }
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata. For information about object
+ * metadata, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object
+ * Key and Metadata</a>.</p> <p>In the following example, the request header sets
+ * the redirect to an object (anotherPage.html) in the same bucket:</p> <p>
+ * <code>x-amz-website-redirect-location: /anotherPage.html</code> </p> <p>In the
+ * following example, the request header sets the object redirect to another
+ * website:</p> <p> <code>x-amz-website-redirect-location:
+ * http://www.example.com/</code> </p> <p>For more information about website
+ * hosting in Amazon S3, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
+ * Websites on Amazon S3</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How
+ * to Configure Website Page Redirects</a>. </p>
+ */
+ inline PutObjectRequest& WithWebsiteRedirectLocation(const Aws::String& value) { SetWebsiteRedirectLocation(value); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata. For information about object
+ * metadata, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object
+ * Key and Metadata</a>.</p> <p>In the following example, the request header sets
+ * the redirect to an object (anotherPage.html) in the same bucket:</p> <p>
+ * <code>x-amz-website-redirect-location: /anotherPage.html</code> </p> <p>In the
+ * following example, the request header sets the object redirect to another
+ * website:</p> <p> <code>x-amz-website-redirect-location:
+ * http://www.example.com/</code> </p> <p>For more information about website
+ * hosting in Amazon S3, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
+ * Websites on Amazon S3</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How
+ * to Configure Website Page Redirects</a>. </p>
+ */
+ inline PutObjectRequest& WithWebsiteRedirectLocation(Aws::String&& value) { SetWebsiteRedirectLocation(std::move(value)); return *this;}
+
+ /**
+ * <p>If the bucket is configured as a website, redirects requests for this object
+ * to another object in the same bucket or to an external URL. Amazon S3 stores the
+ * value of this header in the object metadata. For information about object
+ * metadata, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object
+ * Key and Metadata</a>.</p> <p>In the following example, the request header sets
+ * the redirect to an object (anotherPage.html) in the same bucket:</p> <p>
+ * <code>x-amz-website-redirect-location: /anotherPage.html</code> </p> <p>In the
+ * following example, the request header sets the object redirect to another
+ * website:</p> <p> <code>x-amz-website-redirect-location:
+ * http://www.example.com/</code> </p> <p>For more information about website
+ * hosting in Amazon S3, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting
+ * Websites on Amazon S3</a> and <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How
+ * to Configure Website Page Redirects</a>. </p>
+ */
+ inline PutObjectRequest& WithWebsiteRedirectLocation(const char* value) { SetWebsiteRedirectLocation(value); return *this;}
+
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline bool SSECustomerAlgorithmHasBeenSet() const { return m_sSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline PutObjectRequest& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline PutObjectRequest& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline PutObjectRequest& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline const Aws::String& GetSSECustomerKey() const{ return m_sSECustomerKey; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline bool SSECustomerKeyHasBeenSet() const { return m_sSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const Aws::String& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = value; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(Aws::String&& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = std::move(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline void SetSSECustomerKey(const char* value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey.assign(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline PutObjectRequest& WithSSECustomerKey(const Aws::String& value) { SetSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline PutObjectRequest& WithSSECustomerKey(Aws::String&& value) { SetSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
+ */
+ inline PutObjectRequest& WithSSECustomerKey(const char* value) { SetSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline bool SSECustomerKeyMD5HasBeenSet() const { return m_sSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline PutObjectRequest& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline PutObjectRequest& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline PutObjectRequest& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetrical customer managed customer master key (CMK) that
+ * was used for the object.</p> <p> If the value of
+ * <code>x-amz-server-side-encryption</code> is <code>aws:kms</code>, this header
+ * specifies the ID of the symmetric customer managed AWS KMS CMK that will be used
+ * for the object. If you specify
+ * <code>x-amz-server-side-encryption:aws:kms</code>, but do not provide<code>
+ * x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the AWS
+ * managed CMK in AWS to protect the data.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetrical customer managed customer master key (CMK) that
+ * was used for the object.</p> <p> If the value of
+ * <code>x-amz-server-side-encryption</code> is <code>aws:kms</code>, this header
+ * specifies the ID of the symmetric customer managed AWS KMS CMK that will be used
+ * for the object. If you specify
+ * <code>x-amz-server-side-encryption:aws:kms</code>, but do not provide<code>
+ * x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the AWS
+ * managed CMK in AWS to protect the data.</p>
+ */
+ inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; }
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetrical customer managed customer master key (CMK) that
+ * was used for the object.</p> <p> If the value of
+ * <code>x-amz-server-side-encryption</code> is <code>aws:kms</code>, this header
+ * specifies the ID of the symmetric customer managed AWS KMS CMK that will be used
+ * for the object. If you specify
+ * <code>x-amz-server-side-encryption:aws:kms</code>, but do not provide<code>
+ * x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the AWS
+ * managed CMK in AWS to protect the data.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetrical customer managed customer master key (CMK) that
+ * was used for the object.</p> <p> If the value of
+ * <code>x-amz-server-side-encryption</code> is <code>aws:kms</code>, this header
+ * specifies the ID of the symmetric customer managed AWS KMS CMK that will be used
+ * for the object. If you specify
+ * <code>x-amz-server-side-encryption:aws:kms</code>, but do not provide<code>
+ * x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the AWS
+ * managed CMK in AWS to protect the data.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetrical customer managed customer master key (CMK) that
+ * was used for the object.</p> <p> If the value of
+ * <code>x-amz-server-side-encryption</code> is <code>aws:kms</code>, this header
+ * specifies the ID of the symmetric customer managed AWS KMS CMK that will be used
+ * for the object. If you specify
+ * <code>x-amz-server-side-encryption:aws:kms</code>, but do not provide<code>
+ * x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the AWS
+ * managed CMK in AWS to protect the data.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetrical customer managed customer master key (CMK) that
+ * was used for the object.</p> <p> If the value of
+ * <code>x-amz-server-side-encryption</code> is <code>aws:kms</code>, this header
+ * specifies the ID of the symmetric customer managed AWS KMS CMK that will be used
+ * for the object. If you specify
+ * <code>x-amz-server-side-encryption:aws:kms</code>, but do not provide<code>
+ * x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the AWS
+ * managed CMK in AWS to protect the data.</p>
+ */
+ inline PutObjectRequest& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetrical customer managed customer master key (CMK) that
+ * was used for the object.</p> <p> If the value of
+ * <code>x-amz-server-side-encryption</code> is <code>aws:kms</code>, this header
+ * specifies the ID of the symmetric customer managed AWS KMS CMK that will be used
+ * for the object. If you specify
+ * <code>x-amz-server-side-encryption:aws:kms</code>, but do not provide<code>
+ * x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the AWS
+ * managed CMK in AWS to protect the data.</p>
+ */
+ inline PutObjectRequest& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetrical customer managed customer master key (CMK) that
+ * was used for the object.</p> <p> If the value of
+ * <code>x-amz-server-side-encryption</code> is <code>aws:kms</code>, this header
+ * specifies the ID of the symmetric customer managed AWS KMS CMK that will be used
+ * for the object. If you specify
+ * <code>x-amz-server-side-encryption:aws:kms</code>, but do not provide<code>
+ * x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the AWS
+ * managed CMK in AWS to protect the data.</p>
+ */
+ inline PutObjectRequest& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = value; }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = std::move(value); }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext.assign(value); }
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline PutObjectRequest& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline PutObjectRequest& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the AWS KMS Encryption Context to use for object encryption. The
+ * value of this header is a base64-encoded UTF-8 string holding JSON with the
+ * encryption context key-value pairs.</p>
+ */
+ inline PutObjectRequest& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS.</p> <p>Specifying this header with a PUT operation doesn’t affect
+ * bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS.</p> <p>Specifying this header with a PUT operation doesn’t affect
+ * bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS.</p> <p>Specifying this header with a PUT operation doesn’t affect
+ * bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabledHasBeenSet = true; m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
+ * with server-side encryption using AWS KMS (SSE-KMS). Setting this header to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption
+ * with SSE-KMS.</p> <p>Specifying this header with a PUT operation doesn’t affect
+ * bucket-level settings for S3 Bucket Key.</p>
+ */
+ inline PutObjectRequest& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline PutObjectRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline PutObjectRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters. (For example, "Key1=Value1")</p>
+ */
+ inline const Aws::String& GetTagging() const{ return m_tagging; }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters. (For example, "Key1=Value1")</p>
+ */
+ inline bool TaggingHasBeenSet() const { return m_taggingHasBeenSet; }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters. (For example, "Key1=Value1")</p>
+ */
+ inline void SetTagging(const Aws::String& value) { m_taggingHasBeenSet = true; m_tagging = value; }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters. (For example, "Key1=Value1")</p>
+ */
+ inline void SetTagging(Aws::String&& value) { m_taggingHasBeenSet = true; m_tagging = std::move(value); }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters. (For example, "Key1=Value1")</p>
+ */
+ inline void SetTagging(const char* value) { m_taggingHasBeenSet = true; m_tagging.assign(value); }
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters. (For example, "Key1=Value1")</p>
+ */
+ inline PutObjectRequest& WithTagging(const Aws::String& value) { SetTagging(value); return *this;}
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters. (For example, "Key1=Value1")</p>
+ */
+ inline PutObjectRequest& WithTagging(Aws::String&& value) { SetTagging(std::move(value)); return *this;}
+
+ /**
+ * <p>The tag-set for the object. The tag-set must be encoded as URL Query
+ * parameters. (For example, "Key1=Value1")</p>
+ */
+ inline PutObjectRequest& WithTagging(const char* value) { SetTagging(value); return *this;}
+
+
+ /**
+ * <p>The Object Lock mode that you want to apply to this object.</p>
+ */
+ inline const ObjectLockMode& GetObjectLockMode() const{ return m_objectLockMode; }
+
+ /**
+ * <p>The Object Lock mode that you want to apply to this object.</p>
+ */
+ inline bool ObjectLockModeHasBeenSet() const { return m_objectLockModeHasBeenSet; }
+
+ /**
+ * <p>The Object Lock mode that you want to apply to this object.</p>
+ */
+ inline void SetObjectLockMode(const ObjectLockMode& value) { m_objectLockModeHasBeenSet = true; m_objectLockMode = value; }
+
+ /**
+ * <p>The Object Lock mode that you want to apply to this object.</p>
+ */
+ inline void SetObjectLockMode(ObjectLockMode&& value) { m_objectLockModeHasBeenSet = true; m_objectLockMode = std::move(value); }
+
+ /**
+ * <p>The Object Lock mode that you want to apply to this object.</p>
+ */
+ inline PutObjectRequest& WithObjectLockMode(const ObjectLockMode& value) { SetObjectLockMode(value); return *this;}
+
+ /**
+ * <p>The Object Lock mode that you want to apply to this object.</p>
+ */
+ inline PutObjectRequest& WithObjectLockMode(ObjectLockMode&& value) { SetObjectLockMode(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The date and time when you want this object's Object Lock to expire.</p>
+ */
+ inline const Aws::Utils::DateTime& GetObjectLockRetainUntilDate() const{ return m_objectLockRetainUntilDate; }
+
+ /**
+ * <p>The date and time when you want this object's Object Lock to expire.</p>
+ */
+ inline bool ObjectLockRetainUntilDateHasBeenSet() const { return m_objectLockRetainUntilDateHasBeenSet; }
+
+ /**
+ * <p>The date and time when you want this object's Object Lock to expire.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { m_objectLockRetainUntilDateHasBeenSet = true; m_objectLockRetainUntilDate = value; }
+
+ /**
+ * <p>The date and time when you want this object's Object Lock to expire.</p>
+ */
+ inline void SetObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { m_objectLockRetainUntilDateHasBeenSet = true; m_objectLockRetainUntilDate = std::move(value); }
+
+ /**
+ * <p>The date and time when you want this object's Object Lock to expire.</p>
+ */
+ inline PutObjectRequest& WithObjectLockRetainUntilDate(const Aws::Utils::DateTime& value) { SetObjectLockRetainUntilDate(value); return *this;}
+
+ /**
+ * <p>The date and time when you want this object's Object Lock to expire.</p>
+ */
+ inline PutObjectRequest& WithObjectLockRetainUntilDate(Aws::Utils::DateTime&& value) { SetObjectLockRetainUntilDate(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether a legal hold will be applied to this object. For more
+ * information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline const ObjectLockLegalHoldStatus& GetObjectLockLegalHoldStatus() const{ return m_objectLockLegalHoldStatus; }
+
+ /**
+ * <p>Specifies whether a legal hold will be applied to this object. For more
+ * information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline bool ObjectLockLegalHoldStatusHasBeenSet() const { return m_objectLockLegalHoldStatusHasBeenSet; }
+
+ /**
+ * <p>Specifies whether a legal hold will be applied to this object. For more
+ * information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline void SetObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { m_objectLockLegalHoldStatusHasBeenSet = true; m_objectLockLegalHoldStatus = value; }
+
+ /**
+ * <p>Specifies whether a legal hold will be applied to this object. For more
+ * information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline void SetObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { m_objectLockLegalHoldStatusHasBeenSet = true; m_objectLockLegalHoldStatus = std::move(value); }
+
+ /**
+ * <p>Specifies whether a legal hold will be applied to this object. For more
+ * information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline PutObjectRequest& WithObjectLockLegalHoldStatus(const ObjectLockLegalHoldStatus& value) { SetObjectLockLegalHoldStatus(value); return *this;}
+
+ /**
+ * <p>Specifies whether a legal hold will be applied to this object. For more
+ * information about S3 Object Lock, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object
+ * Lock</a>.</p>
+ */
+ inline PutObjectRequest& WithObjectLockLegalHoldStatus(ObjectLockLegalHoldStatus&& value) { SetObjectLockLegalHoldStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutObjectRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutObjectRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutObjectRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ ObjectCannedACL m_aCL;
+ bool m_aCLHasBeenSet;
+
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_cacheControl;
+ bool m_cacheControlHasBeenSet;
+
+ Aws::String m_contentDisposition;
+ bool m_contentDispositionHasBeenSet;
+
+ Aws::String m_contentEncoding;
+ bool m_contentEncodingHasBeenSet;
+
+ Aws::String m_contentLanguage;
+ bool m_contentLanguageHasBeenSet;
+
+ long long m_contentLength;
+ bool m_contentLengthHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::Utils::DateTime m_expires;
+ bool m_expiresHasBeenSet;
+
+ Aws::String m_grantFullControl;
+ bool m_grantFullControlHasBeenSet;
+
+ Aws::String m_grantRead;
+ bool m_grantReadHasBeenSet;
+
+ Aws::String m_grantReadACP;
+ bool m_grantReadACPHasBeenSet;
+
+ Aws::String m_grantWriteACP;
+ bool m_grantWriteACPHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_metadata;
+ bool m_metadataHasBeenSet;
+
+ ServerSideEncryption m_serverSideEncryption;
+ bool m_serverSideEncryptionHasBeenSet;
+
+ StorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+
+ Aws::String m_websiteRedirectLocation;
+ bool m_websiteRedirectLocationHasBeenSet;
+
+ Aws::String m_sSECustomerAlgorithm;
+ bool m_sSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_sSECustomerKey;
+ bool m_sSECustomerKeyHasBeenSet;
+
+ Aws::String m_sSECustomerKeyMD5;
+ bool m_sSECustomerKeyMD5HasBeenSet;
+
+ Aws::String m_sSEKMSKeyId;
+ bool m_sSEKMSKeyIdHasBeenSet;
+
+ Aws::String m_sSEKMSEncryptionContext;
+ bool m_sSEKMSEncryptionContextHasBeenSet;
+
+ bool m_bucketKeyEnabled;
+ bool m_bucketKeyEnabledHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_tagging;
+ bool m_taggingHasBeenSet;
+
+ ObjectLockMode m_objectLockMode;
+ bool m_objectLockModeHasBeenSet;
+
+ Aws::Utils::DateTime m_objectLockRetainUntilDate;
+ bool m_objectLockRetainUntilDateHasBeenSet;
+
+ ObjectLockLegalHoldStatus m_objectLockLegalHoldStatus;
+ bool m_objectLockLegalHoldStatusHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectResult.h
new file mode 100644
index 00000000000..f8b5bf13e7a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectResult.h
@@ -0,0 +1,480 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API PutObjectResult
+ {
+ public:
+ PutObjectResult();
+ PutObjectResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ PutObjectResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p> If the expiration is configured for the object (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>),
+ * the response includes this header. It includes the expiry-date and rule-id
+ * key-value pairs that provide information about object expiration. The value of
+ * the rule-id is URL encoded.</p>
+ */
+ inline const Aws::String& GetExpiration() const{ return m_expiration; }
+
+ /**
+ * <p> If the expiration is configured for the object (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>),
+ * the response includes this header. It includes the expiry-date and rule-id
+ * key-value pairs that provide information about object expiration. The value of
+ * the rule-id is URL encoded.</p>
+ */
+ inline void SetExpiration(const Aws::String& value) { m_expiration = value; }
+
+ /**
+ * <p> If the expiration is configured for the object (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>),
+ * the response includes this header. It includes the expiry-date and rule-id
+ * key-value pairs that provide information about object expiration. The value of
+ * the rule-id is URL encoded.</p>
+ */
+ inline void SetExpiration(Aws::String&& value) { m_expiration = std::move(value); }
+
+ /**
+ * <p> If the expiration is configured for the object (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>),
+ * the response includes this header. It includes the expiry-date and rule-id
+ * key-value pairs that provide information about object expiration. The value of
+ * the rule-id is URL encoded.</p>
+ */
+ inline void SetExpiration(const char* value) { m_expiration.assign(value); }
+
+ /**
+ * <p> If the expiration is configured for the object (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>),
+ * the response includes this header. It includes the expiry-date and rule-id
+ * key-value pairs that provide information about object expiration. The value of
+ * the rule-id is URL encoded.</p>
+ */
+ inline PutObjectResult& WithExpiration(const Aws::String& value) { SetExpiration(value); return *this;}
+
+ /**
+ * <p> If the expiration is configured for the object (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>),
+ * the response includes this header. It includes the expiry-date and rule-id
+ * key-value pairs that provide information about object expiration. The value of
+ * the rule-id is URL encoded.</p>
+ */
+ inline PutObjectResult& WithExpiration(Aws::String&& value) { SetExpiration(std::move(value)); return *this;}
+
+ /**
+ * <p> If the expiration is configured for the object (see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a>),
+ * the response includes this header. It includes the expiry-date and rule-id
+ * key-value pairs that provide information about object expiration. The value of
+ * the rule-id is URL encoded.</p>
+ */
+ inline PutObjectResult& WithExpiration(const char* value) { SetExpiration(value); return *this;}
+
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTag = value; }
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTag = std::move(value); }
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline void SetETag(const char* value) { m_eTag.assign(value); }
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline PutObjectResult& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline PutObjectResult& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline PutObjectResult& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>If you specified server-side encryption either with an AWS KMS customer
+ * master key (CMK) or Amazon S3-managed encryption key in your PUT request, the
+ * response includes this header. It confirms the encryption algorithm that Amazon
+ * S3 used to encrypt the object.</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>If you specified server-side encryption either with an AWS KMS customer
+ * master key (CMK) or Amazon S3-managed encryption key in your PUT request, the
+ * response includes this header. It confirms the encryption algorithm that Amazon
+ * S3 used to encrypt the object.</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; }
+
+ /**
+ * <p>If you specified server-side encryption either with an AWS KMS customer
+ * master key (CMK) or Amazon S3-managed encryption key in your PUT request, the
+ * response includes this header. It confirms the encryption algorithm that Amazon
+ * S3 used to encrypt the object.</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>If you specified server-side encryption either with an AWS KMS customer
+ * master key (CMK) or Amazon S3-managed encryption key in your PUT request, the
+ * response includes this header. It confirms the encryption algorithm that Amazon
+ * S3 used to encrypt the object.</p>
+ */
+ inline PutObjectResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>If you specified server-side encryption either with an AWS KMS customer
+ * master key (CMK) or Amazon S3-managed encryption key in your PUT request, the
+ * response includes this header. It confirms the encryption algorithm that Amazon
+ * S3 used to encrypt the object.</p>
+ */
+ inline PutObjectResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionId = value; }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionId = std::move(value); }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionId.assign(value); }
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline PutObjectResult& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline PutObjectResult& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>Version of the object.</p>
+ */
+ inline PutObjectResult& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline PutObjectResult& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline PutObjectResult& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline PutObjectResult& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline PutObjectResult& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline PutObjectResult& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline PutObjectResult& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetric customer managed customer master key (CMK) that was
+ * used for the object. </p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetric customer managed customer master key (CMK) that was
+ * used for the object. </p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetric customer managed customer master key (CMK) that was
+ * used for the object. </p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetric customer managed customer master key (CMK) that was
+ * used for the object. </p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetric customer managed customer master key (CMK) that was
+ * used for the object. </p>
+ */
+ inline PutObjectResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetric customer managed customer master key (CMK) that was
+ * used for the object. </p>
+ */
+ inline PutObjectResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If <code>x-amz-server-side-encryption</code> is present and has the value of
+ * <code>aws:kms</code>, this header specifies the ID of the AWS Key Management
+ * Service (AWS KMS) symmetric customer managed customer master key (CMK) that was
+ * used for the object. </p>
+ */
+ inline PutObjectResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContext = std::move(value); }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContext.assign(value); }
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline PutObjectResult& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline PutObjectResult& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the AWS KMS Encryption Context to use for object
+ * encryption. The value of this header is a base64-encoded UTF-8 string holding
+ * JSON with the encryption context key-value pairs.</p>
+ */
+ inline PutObjectResult& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether the uploaded object uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Indicates whether the uploaded object uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Indicates whether the uploaded object uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline PutObjectResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline PutObjectResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline PutObjectResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_expiration;
+
+ Aws::String m_eTag;
+
+ ServerSideEncryption m_serverSideEncryption;
+
+ Aws::String m_versionId;
+
+ Aws::String m_sSECustomerAlgorithm;
+
+ Aws::String m_sSECustomerKeyMD5;
+
+ Aws::String m_sSEKMSKeyId;
+
+ Aws::String m_sSEKMSEncryptionContext;
+
+ bool m_bucketKeyEnabled;
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRetentionRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRetentionRequest.h
new file mode 100644
index 00000000000..6efb8470e0a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRetentionRequest.h
@@ -0,0 +1,527 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ObjectLockRetention.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutObjectRetentionRequest : public S3Request
+ {
+ public:
+ PutObjectRetentionRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutObjectRetention"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The bucket name that contains the object you want to apply this Object
+ * Retention configuration to. </p> <p>When using this API with an access point,
+ * you must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name that contains the object you want to apply this Object
+ * Retention configuration to. </p> <p>When using this API with an access point,
+ * you must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name that contains the object you want to apply this Object
+ * Retention configuration to. </p> <p>When using this API with an access point,
+ * you must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name that contains the object you want to apply this Object
+ * Retention configuration to. </p> <p>When using this API with an access point,
+ * you must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name that contains the object you want to apply this Object
+ * Retention configuration to. </p> <p>When using this API with an access point,
+ * you must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name that contains the object you want to apply this Object
+ * Retention configuration to. </p> <p>When using this API with an access point,
+ * you must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectRetentionRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name that contains the object you want to apply this Object
+ * Retention configuration to. </p> <p>When using this API with an access point,
+ * you must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectRetentionRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name that contains the object you want to apply this Object
+ * Retention configuration to. </p> <p>When using this API with an access point,
+ * you must direct requests to the access point hostname. The access point hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectRetentionRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The key name for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The key name for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The key name for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The key name for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The key name for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The key name for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline PutObjectRetentionRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The key name for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline PutObjectRetentionRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The key name for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline PutObjectRetentionRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The container element for the Object Retention configuration.</p>
+ */
+ inline const ObjectLockRetention& GetRetention() const{ return m_retention; }
+
+ /**
+ * <p>The container element for the Object Retention configuration.</p>
+ */
+ inline bool RetentionHasBeenSet() const { return m_retentionHasBeenSet; }
+
+ /**
+ * <p>The container element for the Object Retention configuration.</p>
+ */
+ inline void SetRetention(const ObjectLockRetention& value) { m_retentionHasBeenSet = true; m_retention = value; }
+
+ /**
+ * <p>The container element for the Object Retention configuration.</p>
+ */
+ inline void SetRetention(ObjectLockRetention&& value) { m_retentionHasBeenSet = true; m_retention = std::move(value); }
+
+ /**
+ * <p>The container element for the Object Retention configuration.</p>
+ */
+ inline PutObjectRetentionRequest& WithRetention(const ObjectLockRetention& value) { SetRetention(value); return *this;}
+
+ /**
+ * <p>The container element for the Object Retention configuration.</p>
+ */
+ inline PutObjectRetentionRequest& WithRetention(ObjectLockRetention&& value) { SetRetention(std::move(value)); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline PutObjectRetentionRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline PutObjectRetentionRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The version ID for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The version ID for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>The version ID for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>The version ID for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>The version ID for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>The version ID for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline PutObjectRetentionRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The version ID for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline PutObjectRetentionRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The version ID for the object that you want to apply this Object Retention
+ * configuration to.</p>
+ */
+ inline PutObjectRetentionRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether this operation should bypass Governance-mode
+ * restrictions.</p>
+ */
+ inline bool GetBypassGovernanceRetention() const{ return m_bypassGovernanceRetention; }
+
+ /**
+ * <p>Indicates whether this operation should bypass Governance-mode
+ * restrictions.</p>
+ */
+ inline bool BypassGovernanceRetentionHasBeenSet() const { return m_bypassGovernanceRetentionHasBeenSet; }
+
+ /**
+ * <p>Indicates whether this operation should bypass Governance-mode
+ * restrictions.</p>
+ */
+ inline void SetBypassGovernanceRetention(bool value) { m_bypassGovernanceRetentionHasBeenSet = true; m_bypassGovernanceRetention = value; }
+
+ /**
+ * <p>Indicates whether this operation should bypass Governance-mode
+ * restrictions.</p>
+ */
+ inline PutObjectRetentionRequest& WithBypassGovernanceRetention(bool value) { SetBypassGovernanceRetention(value); return *this;}
+
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectRetentionRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectRetentionRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectRetentionRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectRetentionRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectRetentionRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectRetentionRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutObjectRetentionRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutObjectRetentionRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutObjectRetentionRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutObjectRetentionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectRetentionRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectRetentionRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutObjectRetentionRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectRetentionRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectRetentionRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ ObjectLockRetention m_retention;
+ bool m_retentionHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ bool m_bypassGovernanceRetention;
+ bool m_bypassGovernanceRetentionHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRetentionResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRetentionResult.h
new file mode 100644
index 00000000000..c35bdbd1108
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRetentionResult.h
@@ -0,0 +1,57 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API PutObjectRetentionResult
+ {
+ public:
+ PutObjectRetentionResult();
+ PutObjectRetentionResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ PutObjectRetentionResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline PutObjectRetentionResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline PutObjectRetentionResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectTaggingRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectTaggingRequest.h
new file mode 100644
index 00000000000..272b1130588
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectTaggingRequest.h
@@ -0,0 +1,524 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Tagging.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutObjectTaggingRequest : public S3Request
+ {
+ public:
+ PutObjectTaggingRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutObjectTagging"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectTaggingRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectTaggingRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name containing the object. </p> <p>When using this API with an
+ * access point, you must direct requests to the access point hostname. The access
+ * point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutObjectTaggingRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline PutObjectTaggingRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline PutObjectTaggingRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline PutObjectTaggingRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The versionId of the object that the tag-set will be added to.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be added to.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be added to.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be added to.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be added to.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>The versionId of the object that the tag-set will be added to.</p>
+ */
+ inline PutObjectTaggingRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The versionId of the object that the tag-set will be added to.</p>
+ */
+ inline PutObjectTaggingRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The versionId of the object that the tag-set will be added to.</p>
+ */
+ inline PutObjectTaggingRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectTaggingRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectTaggingRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The MD5 hash for the request body.</p> <p>For requests made using the AWS
+ * Command Line Interface (CLI) or AWS SDKs, this field is calculated
+ * automatically.</p>
+ */
+ inline PutObjectTaggingRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements</p>
+ */
+ inline const Tagging& GetTagging() const{ return m_tagging; }
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements</p>
+ */
+ inline bool TaggingHasBeenSet() const { return m_taggingHasBeenSet; }
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements</p>
+ */
+ inline void SetTagging(const Tagging& value) { m_taggingHasBeenSet = true; m_tagging = value; }
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements</p>
+ */
+ inline void SetTagging(Tagging&& value) { m_taggingHasBeenSet = true; m_tagging = std::move(value); }
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements</p>
+ */
+ inline PutObjectTaggingRequest& WithTagging(const Tagging& value) { SetTagging(value); return *this;}
+
+ /**
+ * <p>Container for the <code>TagSet</code> and <code>Tag</code> elements</p>
+ */
+ inline PutObjectTaggingRequest& WithTagging(Tagging&& value) { SetTagging(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectTaggingRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectTaggingRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutObjectTaggingRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutObjectTaggingRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutObjectTaggingRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutObjectTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutObjectTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectTaggingRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutObjectTaggingRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutObjectTaggingRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutObjectTaggingRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Tagging m_tagging;
+ bool m_taggingHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectTaggingResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectTaggingResult.h
new file mode 100644
index 00000000000..7a48440e896
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectTaggingResult.h
@@ -0,0 +1,77 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API PutObjectTaggingResult
+ {
+ public:
+ PutObjectTaggingResult();
+ PutObjectTaggingResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ PutObjectTaggingResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The versionId of the object the tag-set was added to.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>The versionId of the object the tag-set was added to.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionId = value; }
+
+ /**
+ * <p>The versionId of the object the tag-set was added to.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionId = std::move(value); }
+
+ /**
+ * <p>The versionId of the object the tag-set was added to.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionId.assign(value); }
+
+ /**
+ * <p>The versionId of the object the tag-set was added to.</p>
+ */
+ inline PutObjectTaggingResult& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>The versionId of the object the tag-set was added to.</p>
+ */
+ inline PutObjectTaggingResult& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The versionId of the object the tag-set was added to.</p>
+ */
+ inline PutObjectTaggingResult& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+ private:
+
+ Aws::String m_versionId;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutPublicAccessBlockRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutPublicAccessBlockRequest.h
new file mode 100644
index 00000000000..ab558c00d60
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/PutPublicAccessBlockRequest.h
@@ -0,0 +1,336 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/PublicAccessBlockConfiguration.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API PutPublicAccessBlockRequest : public S3Request
+ {
+ public:
+ PutPublicAccessBlockRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "PutPublicAccessBlock"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ inline bool ShouldComputeContentMd5() const override { return true; }
+
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to set.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to set.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to set.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to set.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to set.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to set.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to set.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the Amazon S3 bucket whose <code>PublicAccessBlock</code>
+ * configuration you want to set.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The MD5 hash of the <code>PutPublicAccessBlock</code> request body. </p>
+ * <p>For requests made using the AWS Command Line Interface (CLI) or AWS SDKs,
+ * this field is calculated automatically.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The MD5 hash of the <code>PutPublicAccessBlock</code> request body. </p>
+ * <p>For requests made using the AWS Command Line Interface (CLI) or AWS SDKs,
+ * this field is calculated automatically.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The MD5 hash of the <code>PutPublicAccessBlock</code> request body. </p>
+ * <p>For requests made using the AWS Command Line Interface (CLI) or AWS SDKs,
+ * this field is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The MD5 hash of the <code>PutPublicAccessBlock</code> request body. </p>
+ * <p>For requests made using the AWS Command Line Interface (CLI) or AWS SDKs,
+ * this field is calculated automatically.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The MD5 hash of the <code>PutPublicAccessBlock</code> request body. </p>
+ * <p>For requests made using the AWS Command Line Interface (CLI) or AWS SDKs,
+ * this field is calculated automatically.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The MD5 hash of the <code>PutPublicAccessBlock</code> request body. </p>
+ * <p>For requests made using the AWS Command Line Interface (CLI) or AWS SDKs,
+ * this field is calculated automatically.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The MD5 hash of the <code>PutPublicAccessBlock</code> request body. </p>
+ * <p>For requests made using the AWS Command Line Interface (CLI) or AWS SDKs,
+ * this field is calculated automatically.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The MD5 hash of the <code>PutPublicAccessBlock</code> request body. </p>
+ * <p>For requests made using the AWS Command Line Interface (CLI) or AWS SDKs,
+ * this field is calculated automatically.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration that you want to apply to
+ * this Amazon S3 bucket. You can enable the configuration options in any
+ * combination. For more information about when Amazon S3 considers a bucket or
+ * object public, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
+ * Meaning of "Public"</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const PublicAccessBlockConfiguration& GetPublicAccessBlockConfiguration() const{ return m_publicAccessBlockConfiguration; }
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration that you want to apply to
+ * this Amazon S3 bucket. You can enable the configuration options in any
+ * combination. For more information about when Amazon S3 considers a bucket or
+ * object public, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
+ * Meaning of "Public"</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool PublicAccessBlockConfigurationHasBeenSet() const { return m_publicAccessBlockConfigurationHasBeenSet; }
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration that you want to apply to
+ * this Amazon S3 bucket. You can enable the configuration options in any
+ * combination. For more information about when Amazon S3 considers a bucket or
+ * object public, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
+ * Meaning of "Public"</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetPublicAccessBlockConfiguration(const PublicAccessBlockConfiguration& value) { m_publicAccessBlockConfigurationHasBeenSet = true; m_publicAccessBlockConfiguration = value; }
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration that you want to apply to
+ * this Amazon S3 bucket. You can enable the configuration options in any
+ * combination. For more information about when Amazon S3 considers a bucket or
+ * object public, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
+ * Meaning of "Public"</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetPublicAccessBlockConfiguration(PublicAccessBlockConfiguration&& value) { m_publicAccessBlockConfigurationHasBeenSet = true; m_publicAccessBlockConfiguration = std::move(value); }
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration that you want to apply to
+ * this Amazon S3 bucket. You can enable the configuration options in any
+ * combination. For more information about when Amazon S3 considers a bucket or
+ * object public, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
+ * Meaning of "Public"</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithPublicAccessBlockConfiguration(const PublicAccessBlockConfiguration& value) { SetPublicAccessBlockConfiguration(value); return *this;}
+
+ /**
+ * <p>The <code>PublicAccessBlock</code> configuration that you want to apply to
+ * this Amazon S3 bucket. You can enable the configuration options in any
+ * combination. For more information about when Amazon S3 considers a bucket or
+ * object public, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status">The
+ * Meaning of "Public"</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithPublicAccessBlockConfiguration(PublicAccessBlockConfiguration&& value) { SetPublicAccessBlockConfiguration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline PutPublicAccessBlockRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline PutPublicAccessBlockRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline PutPublicAccessBlockRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline PutPublicAccessBlockRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline PutPublicAccessBlockRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutPublicAccessBlockRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutPublicAccessBlockRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline PutPublicAccessBlockRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline PutPublicAccessBlockRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline PutPublicAccessBlockRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ PublicAccessBlockConfiguration m_publicAccessBlockConfiguration;
+ bool m_publicAccessBlockConfigurationHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QueueConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QueueConfiguration.h
new file mode 100644
index 00000000000..41cc3d2d704
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QueueConfiguration.h
@@ -0,0 +1,195 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/NotificationConfigurationFilter.h>
+#include <aws/s3/model/Event.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the configuration for publishing messages to an Amazon Simple Queue
+ * Service (Amazon SQS) queue when Amazon S3 detects specified
+ * events.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/QueueConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API QueueConfiguration
+ {
+ public:
+ QueueConfiguration();
+ QueueConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ QueueConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const Aws::String& GetId() const{ return m_id; }
+
+
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+
+ inline QueueConfiguration& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+
+ inline QueueConfiguration& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+
+ inline QueueConfiguration& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline const Aws::String& GetQueueArn() const{ return m_queueArn; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline bool QueueArnHasBeenSet() const { return m_queueArnHasBeenSet; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline void SetQueueArn(const Aws::String& value) { m_queueArnHasBeenSet = true; m_queueArn = value; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline void SetQueueArn(Aws::String&& value) { m_queueArnHasBeenSet = true; m_queueArn = std::move(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline void SetQueueArn(const char* value) { m_queueArnHasBeenSet = true; m_queueArn.assign(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline QueueConfiguration& WithQueueArn(const Aws::String& value) { SetQueueArn(value); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline QueueConfiguration& WithQueueArn(Aws::String&& value) { SetQueueArn(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline QueueConfiguration& WithQueueArn(const char* value) { SetQueueArn(value); return *this;}
+
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline const Aws::Vector<Event>& GetEvents() const{ return m_events; }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline bool EventsHasBeenSet() const { return m_eventsHasBeenSet; }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline void SetEvents(const Aws::Vector<Event>& value) { m_eventsHasBeenSet = true; m_events = value; }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline void SetEvents(Aws::Vector<Event>&& value) { m_eventsHasBeenSet = true; m_events = std::move(value); }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline QueueConfiguration& WithEvents(const Aws::Vector<Event>& value) { SetEvents(value); return *this;}
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline QueueConfiguration& WithEvents(Aws::Vector<Event>&& value) { SetEvents(std::move(value)); return *this;}
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline QueueConfiguration& AddEvents(const Event& value) { m_eventsHasBeenSet = true; m_events.push_back(value); return *this; }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline QueueConfiguration& AddEvents(Event&& value) { m_eventsHasBeenSet = true; m_events.push_back(std::move(value)); return *this; }
+
+
+
+ inline const NotificationConfigurationFilter& GetFilter() const{ return m_filter; }
+
+
+ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
+
+
+ inline void SetFilter(const NotificationConfigurationFilter& value) { m_filterHasBeenSet = true; m_filter = value; }
+
+
+ inline void SetFilter(NotificationConfigurationFilter&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
+
+
+ inline QueueConfiguration& WithFilter(const NotificationConfigurationFilter& value) { SetFilter(value); return *this;}
+
+
+ inline QueueConfiguration& WithFilter(NotificationConfigurationFilter&& value) { SetFilter(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::String m_queueArn;
+ bool m_queueArnHasBeenSet;
+
+ Aws::Vector<Event> m_events;
+ bool m_eventsHasBeenSet;
+
+ NotificationConfigurationFilter m_filter;
+ bool m_filterHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QueueConfigurationDeprecated.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QueueConfigurationDeprecated.h
new file mode 100644
index 00000000000..9f99c6a4160
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QueueConfigurationDeprecated.h
@@ -0,0 +1,174 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Event.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>This data type is deprecated. Use <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_QueueConfiguration.html">QueueConfiguration</a>
+ * for the same purposes. This data type specifies the configuration for publishing
+ * messages to an Amazon Simple Queue Service (Amazon SQS) queue when Amazon S3
+ * detects specified events. </p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/QueueConfigurationDeprecated">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API QueueConfigurationDeprecated
+ {
+ public:
+ QueueConfigurationDeprecated();
+ QueueConfigurationDeprecated(const Aws::Utils::Xml::XmlNode& xmlNode);
+ QueueConfigurationDeprecated& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const Aws::String& GetId() const{ return m_id; }
+
+
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+
+ inline QueueConfigurationDeprecated& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+
+ inline QueueConfigurationDeprecated& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+
+ inline QueueConfigurationDeprecated& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline const Aws::Vector<Event>& GetEvents() const{ return m_events; }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline bool EventsHasBeenSet() const { return m_eventsHasBeenSet; }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline void SetEvents(const Aws::Vector<Event>& value) { m_eventsHasBeenSet = true; m_events = value; }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline void SetEvents(Aws::Vector<Event>&& value) { m_eventsHasBeenSet = true; m_events = std::move(value); }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline QueueConfigurationDeprecated& WithEvents(const Aws::Vector<Event>& value) { SetEvents(value); return *this;}
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline QueueConfigurationDeprecated& WithEvents(Aws::Vector<Event>&& value) { SetEvents(std::move(value)); return *this;}
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline QueueConfigurationDeprecated& AddEvents(const Event& value) { m_eventsHasBeenSet = true; m_events.push_back(value); return *this; }
+
+ /**
+ * <p>A collection of bucket events for which to send notifications</p>
+ */
+ inline QueueConfigurationDeprecated& AddEvents(Event&& value) { m_eventsHasBeenSet = true; m_events.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type. </p>
+ */
+ inline const Aws::String& GetQueue() const{ return m_queue; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type. </p>
+ */
+ inline bool QueueHasBeenSet() const { return m_queueHasBeenSet; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type. </p>
+ */
+ inline void SetQueue(const Aws::String& value) { m_queueHasBeenSet = true; m_queue = value; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type. </p>
+ */
+ inline void SetQueue(Aws::String&& value) { m_queueHasBeenSet = true; m_queue = std::move(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type. </p>
+ */
+ inline void SetQueue(const char* value) { m_queueHasBeenSet = true; m_queue.assign(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type. </p>
+ */
+ inline QueueConfigurationDeprecated& WithQueue(const Aws::String& value) { SetQueue(value); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type. </p>
+ */
+ inline QueueConfigurationDeprecated& WithQueue(Aws::String&& value) { SetQueue(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
+ * publishes a message when it detects events of the specified type. </p>
+ */
+ inline QueueConfigurationDeprecated& WithQueue(const char* value) { SetQueue(value); return *this;}
+
+ private:
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::Vector<Event> m_events;
+ bool m_eventsHasBeenSet;
+
+ Aws::String m_queue;
+ bool m_queueHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QuoteFields.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QuoteFields.h
new file mode 100644
index 00000000000..5b233ab1379
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/QuoteFields.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class QuoteFields
+ {
+ NOT_SET,
+ ALWAYS,
+ ASNEEDED
+ };
+
+namespace QuoteFieldsMapper
+{
+AWS_S3_API QuoteFields GetQuoteFieldsForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForQuoteFields(QuoteFields value);
+} // namespace QuoteFieldsMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RecordsEvent.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RecordsEvent.h
new file mode 100644
index 00000000000..30ef211adbe
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RecordsEvent.h
@@ -0,0 +1,66 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/Array.h>
+#include <utility>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ /**
+ * <p>The container for the records event.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RecordsEvent">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API RecordsEvent
+ {
+ public:
+ RecordsEvent() = default;
+ RecordsEvent(Aws::Vector<unsigned char>&& value) { m_payload = std::move(value); }
+
+ /**
+ * <p>The byte array of partial, one or more result records.</p>
+ */
+ inline const Aws::Vector<unsigned char>& GetPayload() const { return m_payload; }
+
+ /**
+ * <p>The byte array of partial, one or more result records.</p>
+ */
+ inline Aws::Vector<unsigned char>&& GetPayloadWithOwnership() { return std::move(m_payload); }
+
+ /**
+ * <p>The byte array of partial, one or more result records.</p>
+ */
+ inline void SetPayload(const Aws::Vector<unsigned char>& value) { m_payloadHasBeenSet = true; m_payload = value; }
+
+ /**
+ * <p>The byte array of partial, one or more result records.</p>
+ */
+ inline void SetPayload(Aws::Vector<unsigned char>&& value) { m_payloadHasBeenSet = true; m_payload = std::move(value); }
+
+ /**
+ * <p>The byte array of partial, one or more result records.</p>
+ */
+ inline RecordsEvent& WithPayload(const Aws::Vector<unsigned char>& value) { SetPayload(value); return *this;}
+
+ /**
+ * <p>The byte array of partial, one or more result records.</p>
+ */
+ inline RecordsEvent& WithPayload(Aws::Vector<unsigned char>&& value) { SetPayload(std::move(value)); return *this;}
+
+ private:
+
+ Aws::Vector<unsigned char> m_payload;
+ bool m_payloadHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Redirect.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Redirect.h
new file mode 100644
index 00000000000..bda92937fe5
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Redirect.h
@@ -0,0 +1,342 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Protocol.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies how requests are redirected. In the event of an error, you can
+ * specify a different error code to return.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Redirect">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Redirect
+ {
+ public:
+ Redirect();
+ Redirect(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Redirect& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The host name to use in the redirect request.</p>
+ */
+ inline const Aws::String& GetHostName() const{ return m_hostName; }
+
+ /**
+ * <p>The host name to use in the redirect request.</p>
+ */
+ inline bool HostNameHasBeenSet() const { return m_hostNameHasBeenSet; }
+
+ /**
+ * <p>The host name to use in the redirect request.</p>
+ */
+ inline void SetHostName(const Aws::String& value) { m_hostNameHasBeenSet = true; m_hostName = value; }
+
+ /**
+ * <p>The host name to use in the redirect request.</p>
+ */
+ inline void SetHostName(Aws::String&& value) { m_hostNameHasBeenSet = true; m_hostName = std::move(value); }
+
+ /**
+ * <p>The host name to use in the redirect request.</p>
+ */
+ inline void SetHostName(const char* value) { m_hostNameHasBeenSet = true; m_hostName.assign(value); }
+
+ /**
+ * <p>The host name to use in the redirect request.</p>
+ */
+ inline Redirect& WithHostName(const Aws::String& value) { SetHostName(value); return *this;}
+
+ /**
+ * <p>The host name to use in the redirect request.</p>
+ */
+ inline Redirect& WithHostName(Aws::String&& value) { SetHostName(std::move(value)); return *this;}
+
+ /**
+ * <p>The host name to use in the redirect request.</p>
+ */
+ inline Redirect& WithHostName(const char* value) { SetHostName(value); return *this;}
+
+
+ /**
+ * <p>The HTTP redirect code to use on the response. Not required if one of the
+ * siblings is present.</p>
+ */
+ inline const Aws::String& GetHttpRedirectCode() const{ return m_httpRedirectCode; }
+
+ /**
+ * <p>The HTTP redirect code to use on the response. Not required if one of the
+ * siblings is present.</p>
+ */
+ inline bool HttpRedirectCodeHasBeenSet() const { return m_httpRedirectCodeHasBeenSet; }
+
+ /**
+ * <p>The HTTP redirect code to use on the response. Not required if one of the
+ * siblings is present.</p>
+ */
+ inline void SetHttpRedirectCode(const Aws::String& value) { m_httpRedirectCodeHasBeenSet = true; m_httpRedirectCode = value; }
+
+ /**
+ * <p>The HTTP redirect code to use on the response. Not required if one of the
+ * siblings is present.</p>
+ */
+ inline void SetHttpRedirectCode(Aws::String&& value) { m_httpRedirectCodeHasBeenSet = true; m_httpRedirectCode = std::move(value); }
+
+ /**
+ * <p>The HTTP redirect code to use on the response. Not required if one of the
+ * siblings is present.</p>
+ */
+ inline void SetHttpRedirectCode(const char* value) { m_httpRedirectCodeHasBeenSet = true; m_httpRedirectCode.assign(value); }
+
+ /**
+ * <p>The HTTP redirect code to use on the response. Not required if one of the
+ * siblings is present.</p>
+ */
+ inline Redirect& WithHttpRedirectCode(const Aws::String& value) { SetHttpRedirectCode(value); return *this;}
+
+ /**
+ * <p>The HTTP redirect code to use on the response. Not required if one of the
+ * siblings is present.</p>
+ */
+ inline Redirect& WithHttpRedirectCode(Aws::String&& value) { SetHttpRedirectCode(std::move(value)); return *this;}
+
+ /**
+ * <p>The HTTP redirect code to use on the response. Not required if one of the
+ * siblings is present.</p>
+ */
+ inline Redirect& WithHttpRedirectCode(const char* value) { SetHttpRedirectCode(value); return *this;}
+
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline const Protocol& GetProtocol() const{ return m_protocol; }
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline bool ProtocolHasBeenSet() const { return m_protocolHasBeenSet; }
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline void SetProtocol(const Protocol& value) { m_protocolHasBeenSet = true; m_protocol = value; }
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline void SetProtocol(Protocol&& value) { m_protocolHasBeenSet = true; m_protocol = std::move(value); }
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline Redirect& WithProtocol(const Protocol& value) { SetProtocol(value); return *this;}
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline Redirect& WithProtocol(Protocol&& value) { SetProtocol(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The object key prefix to use in the redirect request. For example, to
+ * redirect requests for all pages with prefix <code>docs/</code> (objects in the
+ * <code>docs/</code> folder) to <code>documents/</code>, you can set a condition
+ * block with <code>KeyPrefixEquals</code> set to <code>docs/</code> and in the
+ * Redirect set <code>ReplaceKeyPrefixWith</code> to <code>/documents</code>. Not
+ * required if one of the siblings is present. Can be present only if
+ * <code>ReplaceKeyWith</code> is not provided.</p>
+ */
+ inline const Aws::String& GetReplaceKeyPrefixWith() const{ return m_replaceKeyPrefixWith; }
+
+ /**
+ * <p>The object key prefix to use in the redirect request. For example, to
+ * redirect requests for all pages with prefix <code>docs/</code> (objects in the
+ * <code>docs/</code> folder) to <code>documents/</code>, you can set a condition
+ * block with <code>KeyPrefixEquals</code> set to <code>docs/</code> and in the
+ * Redirect set <code>ReplaceKeyPrefixWith</code> to <code>/documents</code>. Not
+ * required if one of the siblings is present. Can be present only if
+ * <code>ReplaceKeyWith</code> is not provided.</p>
+ */
+ inline bool ReplaceKeyPrefixWithHasBeenSet() const { return m_replaceKeyPrefixWithHasBeenSet; }
+
+ /**
+ * <p>The object key prefix to use in the redirect request. For example, to
+ * redirect requests for all pages with prefix <code>docs/</code> (objects in the
+ * <code>docs/</code> folder) to <code>documents/</code>, you can set a condition
+ * block with <code>KeyPrefixEquals</code> set to <code>docs/</code> and in the
+ * Redirect set <code>ReplaceKeyPrefixWith</code> to <code>/documents</code>. Not
+ * required if one of the siblings is present. Can be present only if
+ * <code>ReplaceKeyWith</code> is not provided.</p>
+ */
+ inline void SetReplaceKeyPrefixWith(const Aws::String& value) { m_replaceKeyPrefixWithHasBeenSet = true; m_replaceKeyPrefixWith = value; }
+
+ /**
+ * <p>The object key prefix to use in the redirect request. For example, to
+ * redirect requests for all pages with prefix <code>docs/</code> (objects in the
+ * <code>docs/</code> folder) to <code>documents/</code>, you can set a condition
+ * block with <code>KeyPrefixEquals</code> set to <code>docs/</code> and in the
+ * Redirect set <code>ReplaceKeyPrefixWith</code> to <code>/documents</code>. Not
+ * required if one of the siblings is present. Can be present only if
+ * <code>ReplaceKeyWith</code> is not provided.</p>
+ */
+ inline void SetReplaceKeyPrefixWith(Aws::String&& value) { m_replaceKeyPrefixWithHasBeenSet = true; m_replaceKeyPrefixWith = std::move(value); }
+
+ /**
+ * <p>The object key prefix to use in the redirect request. For example, to
+ * redirect requests for all pages with prefix <code>docs/</code> (objects in the
+ * <code>docs/</code> folder) to <code>documents/</code>, you can set a condition
+ * block with <code>KeyPrefixEquals</code> set to <code>docs/</code> and in the
+ * Redirect set <code>ReplaceKeyPrefixWith</code> to <code>/documents</code>. Not
+ * required if one of the siblings is present. Can be present only if
+ * <code>ReplaceKeyWith</code> is not provided.</p>
+ */
+ inline void SetReplaceKeyPrefixWith(const char* value) { m_replaceKeyPrefixWithHasBeenSet = true; m_replaceKeyPrefixWith.assign(value); }
+
+ /**
+ * <p>The object key prefix to use in the redirect request. For example, to
+ * redirect requests for all pages with prefix <code>docs/</code> (objects in the
+ * <code>docs/</code> folder) to <code>documents/</code>, you can set a condition
+ * block with <code>KeyPrefixEquals</code> set to <code>docs/</code> and in the
+ * Redirect set <code>ReplaceKeyPrefixWith</code> to <code>/documents</code>. Not
+ * required if one of the siblings is present. Can be present only if
+ * <code>ReplaceKeyWith</code> is not provided.</p>
+ */
+ inline Redirect& WithReplaceKeyPrefixWith(const Aws::String& value) { SetReplaceKeyPrefixWith(value); return *this;}
+
+ /**
+ * <p>The object key prefix to use in the redirect request. For example, to
+ * redirect requests for all pages with prefix <code>docs/</code> (objects in the
+ * <code>docs/</code> folder) to <code>documents/</code>, you can set a condition
+ * block with <code>KeyPrefixEquals</code> set to <code>docs/</code> and in the
+ * Redirect set <code>ReplaceKeyPrefixWith</code> to <code>/documents</code>. Not
+ * required if one of the siblings is present. Can be present only if
+ * <code>ReplaceKeyWith</code> is not provided.</p>
+ */
+ inline Redirect& WithReplaceKeyPrefixWith(Aws::String&& value) { SetReplaceKeyPrefixWith(std::move(value)); return *this;}
+
+ /**
+ * <p>The object key prefix to use in the redirect request. For example, to
+ * redirect requests for all pages with prefix <code>docs/</code> (objects in the
+ * <code>docs/</code> folder) to <code>documents/</code>, you can set a condition
+ * block with <code>KeyPrefixEquals</code> set to <code>docs/</code> and in the
+ * Redirect set <code>ReplaceKeyPrefixWith</code> to <code>/documents</code>. Not
+ * required if one of the siblings is present. Can be present only if
+ * <code>ReplaceKeyWith</code> is not provided.</p>
+ */
+ inline Redirect& WithReplaceKeyPrefixWith(const char* value) { SetReplaceKeyPrefixWith(value); return *this;}
+
+
+ /**
+ * <p>The specific object key to use in the redirect request. For example, redirect
+ * request to <code>error.html</code>. Not required if one of the siblings is
+ * present. Can be present only if <code>ReplaceKeyPrefixWith</code> is not
+ * provided.</p>
+ */
+ inline const Aws::String& GetReplaceKeyWith() const{ return m_replaceKeyWith; }
+
+ /**
+ * <p>The specific object key to use in the redirect request. For example, redirect
+ * request to <code>error.html</code>. Not required if one of the siblings is
+ * present. Can be present only if <code>ReplaceKeyPrefixWith</code> is not
+ * provided.</p>
+ */
+ inline bool ReplaceKeyWithHasBeenSet() const { return m_replaceKeyWithHasBeenSet; }
+
+ /**
+ * <p>The specific object key to use in the redirect request. For example, redirect
+ * request to <code>error.html</code>. Not required if one of the siblings is
+ * present. Can be present only if <code>ReplaceKeyPrefixWith</code> is not
+ * provided.</p>
+ */
+ inline void SetReplaceKeyWith(const Aws::String& value) { m_replaceKeyWithHasBeenSet = true; m_replaceKeyWith = value; }
+
+ /**
+ * <p>The specific object key to use in the redirect request. For example, redirect
+ * request to <code>error.html</code>. Not required if one of the siblings is
+ * present. Can be present only if <code>ReplaceKeyPrefixWith</code> is not
+ * provided.</p>
+ */
+ inline void SetReplaceKeyWith(Aws::String&& value) { m_replaceKeyWithHasBeenSet = true; m_replaceKeyWith = std::move(value); }
+
+ /**
+ * <p>The specific object key to use in the redirect request. For example, redirect
+ * request to <code>error.html</code>. Not required if one of the siblings is
+ * present. Can be present only if <code>ReplaceKeyPrefixWith</code> is not
+ * provided.</p>
+ */
+ inline void SetReplaceKeyWith(const char* value) { m_replaceKeyWithHasBeenSet = true; m_replaceKeyWith.assign(value); }
+
+ /**
+ * <p>The specific object key to use in the redirect request. For example, redirect
+ * request to <code>error.html</code>. Not required if one of the siblings is
+ * present. Can be present only if <code>ReplaceKeyPrefixWith</code> is not
+ * provided.</p>
+ */
+ inline Redirect& WithReplaceKeyWith(const Aws::String& value) { SetReplaceKeyWith(value); return *this;}
+
+ /**
+ * <p>The specific object key to use in the redirect request. For example, redirect
+ * request to <code>error.html</code>. Not required if one of the siblings is
+ * present. Can be present only if <code>ReplaceKeyPrefixWith</code> is not
+ * provided.</p>
+ */
+ inline Redirect& WithReplaceKeyWith(Aws::String&& value) { SetReplaceKeyWith(std::move(value)); return *this;}
+
+ /**
+ * <p>The specific object key to use in the redirect request. For example, redirect
+ * request to <code>error.html</code>. Not required if one of the siblings is
+ * present. Can be present only if <code>ReplaceKeyPrefixWith</code> is not
+ * provided.</p>
+ */
+ inline Redirect& WithReplaceKeyWith(const char* value) { SetReplaceKeyWith(value); return *this;}
+
+ private:
+
+ Aws::String m_hostName;
+ bool m_hostNameHasBeenSet;
+
+ Aws::String m_httpRedirectCode;
+ bool m_httpRedirectCodeHasBeenSet;
+
+ Protocol m_protocol;
+ bool m_protocolHasBeenSet;
+
+ Aws::String m_replaceKeyPrefixWith;
+ bool m_replaceKeyPrefixWithHasBeenSet;
+
+ Aws::String m_replaceKeyWith;
+ bool m_replaceKeyWithHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RedirectAllRequestsTo.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RedirectAllRequestsTo.h
new file mode 100644
index 00000000000..73d5a96f6db
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RedirectAllRequestsTo.h
@@ -0,0 +1,130 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Protocol.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the redirect behavior of all requests to a website endpoint of an
+ * Amazon S3 bucket.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RedirectAllRequestsTo">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API RedirectAllRequestsTo
+ {
+ public:
+ RedirectAllRequestsTo();
+ RedirectAllRequestsTo(const Aws::Utils::Xml::XmlNode& xmlNode);
+ RedirectAllRequestsTo& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Name of the host where requests are redirected.</p>
+ */
+ inline const Aws::String& GetHostName() const{ return m_hostName; }
+
+ /**
+ * <p>Name of the host where requests are redirected.</p>
+ */
+ inline bool HostNameHasBeenSet() const { return m_hostNameHasBeenSet; }
+
+ /**
+ * <p>Name of the host where requests are redirected.</p>
+ */
+ inline void SetHostName(const Aws::String& value) { m_hostNameHasBeenSet = true; m_hostName = value; }
+
+ /**
+ * <p>Name of the host where requests are redirected.</p>
+ */
+ inline void SetHostName(Aws::String&& value) { m_hostNameHasBeenSet = true; m_hostName = std::move(value); }
+
+ /**
+ * <p>Name of the host where requests are redirected.</p>
+ */
+ inline void SetHostName(const char* value) { m_hostNameHasBeenSet = true; m_hostName.assign(value); }
+
+ /**
+ * <p>Name of the host where requests are redirected.</p>
+ */
+ inline RedirectAllRequestsTo& WithHostName(const Aws::String& value) { SetHostName(value); return *this;}
+
+ /**
+ * <p>Name of the host where requests are redirected.</p>
+ */
+ inline RedirectAllRequestsTo& WithHostName(Aws::String&& value) { SetHostName(std::move(value)); return *this;}
+
+ /**
+ * <p>Name of the host where requests are redirected.</p>
+ */
+ inline RedirectAllRequestsTo& WithHostName(const char* value) { SetHostName(value); return *this;}
+
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline const Protocol& GetProtocol() const{ return m_protocol; }
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline bool ProtocolHasBeenSet() const { return m_protocolHasBeenSet; }
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline void SetProtocol(const Protocol& value) { m_protocolHasBeenSet = true; m_protocol = value; }
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline void SetProtocol(Protocol&& value) { m_protocolHasBeenSet = true; m_protocol = std::move(value); }
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline RedirectAllRequestsTo& WithProtocol(const Protocol& value) { SetProtocol(value); return *this;}
+
+ /**
+ * <p>Protocol to use when redirecting requests. The default is the protocol that
+ * is used in the original request.</p>
+ */
+ inline RedirectAllRequestsTo& WithProtocol(Protocol&& value) { SetProtocol(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_hostName;
+ bool m_hostNameHasBeenSet;
+
+ Protocol m_protocol;
+ bool m_protocolHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicaModifications.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicaModifications.h
new file mode 100644
index 00000000000..e9685d62581
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicaModifications.h
@@ -0,0 +1,85 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ReplicaModificationsStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A filter that you can specify for selection for modifications on replicas.
+ * Amazon S3 doesn't replicate replica modifications by default. In the latest
+ * version of replication configuration (when <code>Filter</code> is specified),
+ * you can specify this element and set the status to <code>Enabled</code> to
+ * replicate modifications on replicas. </p> <p> If you don't specify the
+ * <code>Filter</code> element, Amazon S3 assumes that the replication
+ * configuration is the earlier version, V1. In the earlier version, this element
+ * is not allowed.</p> <p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ReplicaModifications">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ReplicaModifications
+ {
+ public:
+ ReplicaModifications();
+ ReplicaModifications(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ReplicaModifications& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates modifications on replicas.</p>
+ */
+ inline const ReplicaModificationsStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates modifications on replicas.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates modifications on replicas.</p>
+ */
+ inline void SetStatus(const ReplicaModificationsStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates modifications on replicas.</p>
+ */
+ inline void SetStatus(ReplicaModificationsStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates modifications on replicas.</p>
+ */
+ inline ReplicaModifications& WithStatus(const ReplicaModificationsStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates modifications on replicas.</p>
+ */
+ inline ReplicaModifications& WithStatus(ReplicaModificationsStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+ private:
+
+ ReplicaModificationsStatus m_status;
+ bool m_statusHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicaModificationsStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicaModificationsStatus.h
new file mode 100644
index 00000000000..9f8902d8472
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicaModificationsStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ReplicaModificationsStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace ReplicaModificationsStatusMapper
+{
+AWS_S3_API ReplicaModificationsStatus GetReplicaModificationsStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForReplicaModificationsStatus(ReplicaModificationsStatus value);
+} // namespace ReplicaModificationsStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationConfiguration.h
new file mode 100644
index 00000000000..2ffc3e3f518
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationConfiguration.h
@@ -0,0 +1,183 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/ReplicationRule.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for replication rules. You can add up to 1,000 rules. The maximum
+ * size of a replication configuration is 2 MB.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ReplicationConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ReplicationConfiguration
+ {
+ public:
+ ReplicationConfiguration();
+ ReplicationConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ReplicationConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Identity and Access Management
+ * (IAM) role that Amazon S3 assumes when replicating objects. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html">How
+ * to Set Up Replication</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetRole() const{ return m_role; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Identity and Access Management
+ * (IAM) role that Amazon S3 assumes when replicating objects. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html">How
+ * to Set Up Replication</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool RoleHasBeenSet() const { return m_roleHasBeenSet; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Identity and Access Management
+ * (IAM) role that Amazon S3 assumes when replicating objects. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html">How
+ * to Set Up Replication</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetRole(const Aws::String& value) { m_roleHasBeenSet = true; m_role = value; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Identity and Access Management
+ * (IAM) role that Amazon S3 assumes when replicating objects. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html">How
+ * to Set Up Replication</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetRole(Aws::String&& value) { m_roleHasBeenSet = true; m_role = std::move(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Identity and Access Management
+ * (IAM) role that Amazon S3 assumes when replicating objects. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html">How
+ * to Set Up Replication</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetRole(const char* value) { m_roleHasBeenSet = true; m_role.assign(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Identity and Access Management
+ * (IAM) role that Amazon S3 assumes when replicating objects. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html">How
+ * to Set Up Replication</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ReplicationConfiguration& WithRole(const Aws::String& value) { SetRole(value); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Identity and Access Management
+ * (IAM) role that Amazon S3 assumes when replicating objects. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html">How
+ * to Set Up Replication</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ReplicationConfiguration& WithRole(Aws::String&& value) { SetRole(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the AWS Identity and Access Management
+ * (IAM) role that Amazon S3 assumes when replicating objects. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html">How
+ * to Set Up Replication</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline ReplicationConfiguration& WithRole(const char* value) { SetRole(value); return *this;}
+
+
+ /**
+ * <p>A container for one or more replication rules. A replication configuration
+ * must have at least one rule and can contain a maximum of 1,000 rules. </p>
+ */
+ inline const Aws::Vector<ReplicationRule>& GetRules() const{ return m_rules; }
+
+ /**
+ * <p>A container for one or more replication rules. A replication configuration
+ * must have at least one rule and can contain a maximum of 1,000 rules. </p>
+ */
+ inline bool RulesHasBeenSet() const { return m_rulesHasBeenSet; }
+
+ /**
+ * <p>A container for one or more replication rules. A replication configuration
+ * must have at least one rule and can contain a maximum of 1,000 rules. </p>
+ */
+ inline void SetRules(const Aws::Vector<ReplicationRule>& value) { m_rulesHasBeenSet = true; m_rules = value; }
+
+ /**
+ * <p>A container for one or more replication rules. A replication configuration
+ * must have at least one rule and can contain a maximum of 1,000 rules. </p>
+ */
+ inline void SetRules(Aws::Vector<ReplicationRule>&& value) { m_rulesHasBeenSet = true; m_rules = std::move(value); }
+
+ /**
+ * <p>A container for one or more replication rules. A replication configuration
+ * must have at least one rule and can contain a maximum of 1,000 rules. </p>
+ */
+ inline ReplicationConfiguration& WithRules(const Aws::Vector<ReplicationRule>& value) { SetRules(value); return *this;}
+
+ /**
+ * <p>A container for one or more replication rules. A replication configuration
+ * must have at least one rule and can contain a maximum of 1,000 rules. </p>
+ */
+ inline ReplicationConfiguration& WithRules(Aws::Vector<ReplicationRule>&& value) { SetRules(std::move(value)); return *this;}
+
+ /**
+ * <p>A container for one or more replication rules. A replication configuration
+ * must have at least one rule and can contain a maximum of 1,000 rules. </p>
+ */
+ inline ReplicationConfiguration& AddRules(const ReplicationRule& value) { m_rulesHasBeenSet = true; m_rules.push_back(value); return *this; }
+
+ /**
+ * <p>A container for one or more replication rules. A replication configuration
+ * must have at least one rule and can contain a maximum of 1,000 rules. </p>
+ */
+ inline ReplicationConfiguration& AddRules(ReplicationRule&& value) { m_rulesHasBeenSet = true; m_rules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::String m_role;
+ bool m_roleHasBeenSet;
+
+ Aws::Vector<ReplicationRule> m_rules;
+ bool m_rulesHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRule.h
new file mode 100644
index 00000000000..ae8671f8747
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRule.h
@@ -0,0 +1,357 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ReplicationRuleFilter.h>
+#include <aws/s3/model/ReplicationRuleStatus.h>
+#include <aws/s3/model/SourceSelectionCriteria.h>
+#include <aws/s3/model/ExistingObjectReplication.h>
+#include <aws/s3/model/Destination.h>
+#include <aws/s3/model/DeleteMarkerReplication.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies which Amazon S3 objects to replicate and where to store the
+ * replicas.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ReplicationRule">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ReplicationRule
+ {
+ public:
+ ReplicationRule();
+ ReplicationRule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ReplicationRule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>A unique identifier for the rule. The maximum value is 255 characters.</p>
+ */
+ inline const Aws::String& GetID() const{ return m_iD; }
+
+ /**
+ * <p>A unique identifier for the rule. The maximum value is 255 characters.</p>
+ */
+ inline bool IDHasBeenSet() const { return m_iDHasBeenSet; }
+
+ /**
+ * <p>A unique identifier for the rule. The maximum value is 255 characters.</p>
+ */
+ inline void SetID(const Aws::String& value) { m_iDHasBeenSet = true; m_iD = value; }
+
+ /**
+ * <p>A unique identifier for the rule. The maximum value is 255 characters.</p>
+ */
+ inline void SetID(Aws::String&& value) { m_iDHasBeenSet = true; m_iD = std::move(value); }
+
+ /**
+ * <p>A unique identifier for the rule. The maximum value is 255 characters.</p>
+ */
+ inline void SetID(const char* value) { m_iDHasBeenSet = true; m_iD.assign(value); }
+
+ /**
+ * <p>A unique identifier for the rule. The maximum value is 255 characters.</p>
+ */
+ inline ReplicationRule& WithID(const Aws::String& value) { SetID(value); return *this;}
+
+ /**
+ * <p>A unique identifier for the rule. The maximum value is 255 characters.</p>
+ */
+ inline ReplicationRule& WithID(Aws::String&& value) { SetID(std::move(value)); return *this;}
+
+ /**
+ * <p>A unique identifier for the rule. The maximum value is 255 characters.</p>
+ */
+ inline ReplicationRule& WithID(const char* value) { SetID(value); return *this;}
+
+
+ /**
+ * <p>The priority indicates which rule has precedence whenever two or more
+ * replication rules conflict. Amazon S3 will attempt to replicate objects
+ * according to all replication rules. However, if there are two or more rules with
+ * the same destination bucket, then objects will be replicated according to the
+ * rule with the highest priority. The higher the number, the higher the priority.
+ * </p> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
+ * in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline int GetPriority() const{ return m_priority; }
+
+ /**
+ * <p>The priority indicates which rule has precedence whenever two or more
+ * replication rules conflict. Amazon S3 will attempt to replicate objects
+ * according to all replication rules. However, if there are two or more rules with
+ * the same destination bucket, then objects will be replicated according to the
+ * rule with the highest priority. The higher the number, the higher the priority.
+ * </p> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
+ * in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline bool PriorityHasBeenSet() const { return m_priorityHasBeenSet; }
+
+ /**
+ * <p>The priority indicates which rule has precedence whenever two or more
+ * replication rules conflict. Amazon S3 will attempt to replicate objects
+ * according to all replication rules. However, if there are two or more rules with
+ * the same destination bucket, then objects will be replicated according to the
+ * rule with the highest priority. The higher the number, the higher the priority.
+ * </p> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
+ * in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetPriority(int value) { m_priorityHasBeenSet = true; m_priority = value; }
+
+ /**
+ * <p>The priority indicates which rule has precedence whenever two or more
+ * replication rules conflict. Amazon S3 will attempt to replicate objects
+ * according to all replication rules. However, if there are two or more rules with
+ * the same destination bucket, then objects will be replicated according to the
+ * rule with the highest priority. The higher the number, the higher the priority.
+ * </p> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html">Replication</a>
+ * in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline ReplicationRule& WithPriority(int value) { SetPriority(value); return *this;}
+
+
+
+ inline const ReplicationRuleFilter& GetFilter() const{ return m_filter; }
+
+
+ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
+
+
+ inline void SetFilter(const ReplicationRuleFilter& value) { m_filterHasBeenSet = true; m_filter = value; }
+
+
+ inline void SetFilter(ReplicationRuleFilter&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
+
+
+ inline ReplicationRule& WithFilter(const ReplicationRuleFilter& value) { SetFilter(value); return *this;}
+
+
+ inline ReplicationRule& WithFilter(ReplicationRuleFilter&& value) { SetFilter(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether the rule is enabled.</p>
+ */
+ inline const ReplicationRuleStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>Specifies whether the rule is enabled.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>Specifies whether the rule is enabled.</p>
+ */
+ inline void SetStatus(const ReplicationRuleStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>Specifies whether the rule is enabled.</p>
+ */
+ inline void SetStatus(ReplicationRuleStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>Specifies whether the rule is enabled.</p>
+ */
+ inline ReplicationRule& WithStatus(const ReplicationRuleStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>Specifies whether the rule is enabled.</p>
+ */
+ inline ReplicationRule& WithStatus(ReplicationRuleStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A container that describes additional filters for identifying the source
+ * objects that you want to replicate. You can choose to enable or disable the
+ * replication of these objects. Currently, Amazon S3 supports only the filter that
+ * you can specify for objects created with server-side encryption using a customer
+ * master key (CMK) stored in AWS Key Management Service (SSE-KMS).</p>
+ */
+ inline const SourceSelectionCriteria& GetSourceSelectionCriteria() const{ return m_sourceSelectionCriteria; }
+
+ /**
+ * <p>A container that describes additional filters for identifying the source
+ * objects that you want to replicate. You can choose to enable or disable the
+ * replication of these objects. Currently, Amazon S3 supports only the filter that
+ * you can specify for objects created with server-side encryption using a customer
+ * master key (CMK) stored in AWS Key Management Service (SSE-KMS).</p>
+ */
+ inline bool SourceSelectionCriteriaHasBeenSet() const { return m_sourceSelectionCriteriaHasBeenSet; }
+
+ /**
+ * <p>A container that describes additional filters for identifying the source
+ * objects that you want to replicate. You can choose to enable or disable the
+ * replication of these objects. Currently, Amazon S3 supports only the filter that
+ * you can specify for objects created with server-side encryption using a customer
+ * master key (CMK) stored in AWS Key Management Service (SSE-KMS).</p>
+ */
+ inline void SetSourceSelectionCriteria(const SourceSelectionCriteria& value) { m_sourceSelectionCriteriaHasBeenSet = true; m_sourceSelectionCriteria = value; }
+
+ /**
+ * <p>A container that describes additional filters for identifying the source
+ * objects that you want to replicate. You can choose to enable or disable the
+ * replication of these objects. Currently, Amazon S3 supports only the filter that
+ * you can specify for objects created with server-side encryption using a customer
+ * master key (CMK) stored in AWS Key Management Service (SSE-KMS).</p>
+ */
+ inline void SetSourceSelectionCriteria(SourceSelectionCriteria&& value) { m_sourceSelectionCriteriaHasBeenSet = true; m_sourceSelectionCriteria = std::move(value); }
+
+ /**
+ * <p>A container that describes additional filters for identifying the source
+ * objects that you want to replicate. You can choose to enable or disable the
+ * replication of these objects. Currently, Amazon S3 supports only the filter that
+ * you can specify for objects created with server-side encryption using a customer
+ * master key (CMK) stored in AWS Key Management Service (SSE-KMS).</p>
+ */
+ inline ReplicationRule& WithSourceSelectionCriteria(const SourceSelectionCriteria& value) { SetSourceSelectionCriteria(value); return *this;}
+
+ /**
+ * <p>A container that describes additional filters for identifying the source
+ * objects that you want to replicate. You can choose to enable or disable the
+ * replication of these objects. Currently, Amazon S3 supports only the filter that
+ * you can specify for objects created with server-side encryption using a customer
+ * master key (CMK) stored in AWS Key Management Service (SSE-KMS).</p>
+ */
+ inline ReplicationRule& WithSourceSelectionCriteria(SourceSelectionCriteria&& value) { SetSourceSelectionCriteria(std::move(value)); return *this;}
+
+
+ /**
+ * <p/>
+ */
+ inline const ExistingObjectReplication& GetExistingObjectReplication() const{ return m_existingObjectReplication; }
+
+ /**
+ * <p/>
+ */
+ inline bool ExistingObjectReplicationHasBeenSet() const { return m_existingObjectReplicationHasBeenSet; }
+
+ /**
+ * <p/>
+ */
+ inline void SetExistingObjectReplication(const ExistingObjectReplication& value) { m_existingObjectReplicationHasBeenSet = true; m_existingObjectReplication = value; }
+
+ /**
+ * <p/>
+ */
+ inline void SetExistingObjectReplication(ExistingObjectReplication&& value) { m_existingObjectReplicationHasBeenSet = true; m_existingObjectReplication = std::move(value); }
+
+ /**
+ * <p/>
+ */
+ inline ReplicationRule& WithExistingObjectReplication(const ExistingObjectReplication& value) { SetExistingObjectReplication(value); return *this;}
+
+ /**
+ * <p/>
+ */
+ inline ReplicationRule& WithExistingObjectReplication(ExistingObjectReplication&& value) { SetExistingObjectReplication(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A container for information about the replication destination and its
+ * configurations including enabling the S3 Replication Time Control (S3 RTC).</p>
+ */
+ inline const Destination& GetDestination() const{ return m_destination; }
+
+ /**
+ * <p>A container for information about the replication destination and its
+ * configurations including enabling the S3 Replication Time Control (S3 RTC).</p>
+ */
+ inline bool DestinationHasBeenSet() const { return m_destinationHasBeenSet; }
+
+ /**
+ * <p>A container for information about the replication destination and its
+ * configurations including enabling the S3 Replication Time Control (S3 RTC).</p>
+ */
+ inline void SetDestination(const Destination& value) { m_destinationHasBeenSet = true; m_destination = value; }
+
+ /**
+ * <p>A container for information about the replication destination and its
+ * configurations including enabling the S3 Replication Time Control (S3 RTC).</p>
+ */
+ inline void SetDestination(Destination&& value) { m_destinationHasBeenSet = true; m_destination = std::move(value); }
+
+ /**
+ * <p>A container for information about the replication destination and its
+ * configurations including enabling the S3 Replication Time Control (S3 RTC).</p>
+ */
+ inline ReplicationRule& WithDestination(const Destination& value) { SetDestination(value); return *this;}
+
+ /**
+ * <p>A container for information about the replication destination and its
+ * configurations including enabling the S3 Replication Time Control (S3 RTC).</p>
+ */
+ inline ReplicationRule& WithDestination(Destination&& value) { SetDestination(std::move(value)); return *this;}
+
+
+
+ inline const DeleteMarkerReplication& GetDeleteMarkerReplication() const{ return m_deleteMarkerReplication; }
+
+
+ inline bool DeleteMarkerReplicationHasBeenSet() const { return m_deleteMarkerReplicationHasBeenSet; }
+
+
+ inline void SetDeleteMarkerReplication(const DeleteMarkerReplication& value) { m_deleteMarkerReplicationHasBeenSet = true; m_deleteMarkerReplication = value; }
+
+
+ inline void SetDeleteMarkerReplication(DeleteMarkerReplication&& value) { m_deleteMarkerReplicationHasBeenSet = true; m_deleteMarkerReplication = std::move(value); }
+
+
+ inline ReplicationRule& WithDeleteMarkerReplication(const DeleteMarkerReplication& value) { SetDeleteMarkerReplication(value); return *this;}
+
+
+ inline ReplicationRule& WithDeleteMarkerReplication(DeleteMarkerReplication&& value) { SetDeleteMarkerReplication(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_iD;
+ bool m_iDHasBeenSet;
+
+ int m_priority;
+ bool m_priorityHasBeenSet;
+
+ ReplicationRuleFilter m_filter;
+ bool m_filterHasBeenSet;
+
+ ReplicationRuleStatus m_status;
+ bool m_statusHasBeenSet;
+
+ SourceSelectionCriteria m_sourceSelectionCriteria;
+ bool m_sourceSelectionCriteriaHasBeenSet;
+
+ ExistingObjectReplication m_existingObjectReplication;
+ bool m_existingObjectReplicationHasBeenSet;
+
+ Destination m_destination;
+ bool m_destinationHasBeenSet;
+
+ DeleteMarkerReplication m_deleteMarkerReplication;
+ bool m_deleteMarkerReplicationHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleAndOperator.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleAndOperator.h
new file mode 100644
index 00000000000..900e8738691
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleAndOperator.h
@@ -0,0 +1,148 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tag.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for specifying rule filters. The filters determine the subset of
+ * objects to which the rule applies. This element is required only if you specify
+ * more than one filter. </p> <p>For example:</p> <ul> <li> <p>If you specify both
+ * a <code>Prefix</code> and a <code>Tag</code> filter, wrap these filters in an
+ * <code>And</code> tag. </p> </li> <li> <p>If you specify a filter based on
+ * multiple tags, wrap the <code>Tag</code> elements in an <code>And</code> tag</p>
+ * </li> </ul><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ReplicationRuleAndOperator">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ReplicationRuleAndOperator
+ {
+ public:
+ ReplicationRuleAndOperator();
+ ReplicationRuleAndOperator(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ReplicationRuleAndOperator& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline ReplicationRuleAndOperator& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline ReplicationRuleAndOperator& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline ReplicationRuleAndOperator& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>An array of tags containing key and value pairs.</p>
+ */
+ inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
+
+ /**
+ * <p>An array of tags containing key and value pairs.</p>
+ */
+ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
+
+ /**
+ * <p>An array of tags containing key and value pairs.</p>
+ */
+ inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
+
+ /**
+ * <p>An array of tags containing key and value pairs.</p>
+ */
+ inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
+
+ /**
+ * <p>An array of tags containing key and value pairs.</p>
+ */
+ inline ReplicationRuleAndOperator& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
+
+ /**
+ * <p>An array of tags containing key and value pairs.</p>
+ */
+ inline ReplicationRuleAndOperator& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
+
+ /**
+ * <p>An array of tags containing key and value pairs.</p>
+ */
+ inline ReplicationRuleAndOperator& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
+
+ /**
+ * <p>An array of tags containing key and value pairs.</p>
+ */
+ inline ReplicationRuleAndOperator& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Aws::Vector<Tag> m_tags;
+ bool m_tagsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleFilter.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleFilter.h
new file mode 100644
index 00000000000..f8d7e698c09
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleFilter.h
@@ -0,0 +1,211 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Tag.h>
+#include <aws/s3/model/ReplicationRuleAndOperator.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A filter that identifies the subset of objects to which the replication rule
+ * applies. A <code>Filter</code> must specify exactly one <code>Prefix</code>,
+ * <code>Tag</code>, or an <code>And</code> child element.</p><p><h3>See Also:</h3>
+ * <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ReplicationRuleFilter">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ReplicationRuleFilter
+ {
+ public:
+ ReplicationRuleFilter();
+ ReplicationRuleFilter(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ReplicationRuleFilter& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline ReplicationRuleFilter& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline ReplicationRuleFilter& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>An object key name prefix that identifies the subset of objects to which the
+ * rule applies.</p>
+ */
+ inline ReplicationRuleFilter& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>A container for specifying a tag key and value. </p> <p>The rule applies only
+ * to objects that have the tag in their tag set.</p>
+ */
+ inline const Tag& GetTag() const{ return m_tag; }
+
+ /**
+ * <p>A container for specifying a tag key and value. </p> <p>The rule applies only
+ * to objects that have the tag in their tag set.</p>
+ */
+ inline bool TagHasBeenSet() const { return m_tagHasBeenSet; }
+
+ /**
+ * <p>A container for specifying a tag key and value. </p> <p>The rule applies only
+ * to objects that have the tag in their tag set.</p>
+ */
+ inline void SetTag(const Tag& value) { m_tagHasBeenSet = true; m_tag = value; }
+
+ /**
+ * <p>A container for specifying a tag key and value. </p> <p>The rule applies only
+ * to objects that have the tag in their tag set.</p>
+ */
+ inline void SetTag(Tag&& value) { m_tagHasBeenSet = true; m_tag = std::move(value); }
+
+ /**
+ * <p>A container for specifying a tag key and value. </p> <p>The rule applies only
+ * to objects that have the tag in their tag set.</p>
+ */
+ inline ReplicationRuleFilter& WithTag(const Tag& value) { SetTag(value); return *this;}
+
+ /**
+ * <p>A container for specifying a tag key and value. </p> <p>The rule applies only
+ * to objects that have the tag in their tag set.</p>
+ */
+ inline ReplicationRuleFilter& WithTag(Tag&& value) { SetTag(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A container for specifying rule filters. The filters determine the subset of
+ * objects to which the rule applies. This element is required only if you specify
+ * more than one filter. For example: </p> <ul> <li> <p>If you specify both a
+ * <code>Prefix</code> and a <code>Tag</code> filter, wrap these filters in an
+ * <code>And</code> tag.</p> </li> <li> <p>If you specify a filter based on
+ * multiple tags, wrap the <code>Tag</code> elements in an <code>And</code>
+ * tag.</p> </li> </ul>
+ */
+ inline const ReplicationRuleAndOperator& GetAnd() const{ return m_and; }
+
+ /**
+ * <p>A container for specifying rule filters. The filters determine the subset of
+ * objects to which the rule applies. This element is required only if you specify
+ * more than one filter. For example: </p> <ul> <li> <p>If you specify both a
+ * <code>Prefix</code> and a <code>Tag</code> filter, wrap these filters in an
+ * <code>And</code> tag.</p> </li> <li> <p>If you specify a filter based on
+ * multiple tags, wrap the <code>Tag</code> elements in an <code>And</code>
+ * tag.</p> </li> </ul>
+ */
+ inline bool AndHasBeenSet() const { return m_andHasBeenSet; }
+
+ /**
+ * <p>A container for specifying rule filters. The filters determine the subset of
+ * objects to which the rule applies. This element is required only if you specify
+ * more than one filter. For example: </p> <ul> <li> <p>If you specify both a
+ * <code>Prefix</code> and a <code>Tag</code> filter, wrap these filters in an
+ * <code>And</code> tag.</p> </li> <li> <p>If you specify a filter based on
+ * multiple tags, wrap the <code>Tag</code> elements in an <code>And</code>
+ * tag.</p> </li> </ul>
+ */
+ inline void SetAnd(const ReplicationRuleAndOperator& value) { m_andHasBeenSet = true; m_and = value; }
+
+ /**
+ * <p>A container for specifying rule filters. The filters determine the subset of
+ * objects to which the rule applies. This element is required only if you specify
+ * more than one filter. For example: </p> <ul> <li> <p>If you specify both a
+ * <code>Prefix</code> and a <code>Tag</code> filter, wrap these filters in an
+ * <code>And</code> tag.</p> </li> <li> <p>If you specify a filter based on
+ * multiple tags, wrap the <code>Tag</code> elements in an <code>And</code>
+ * tag.</p> </li> </ul>
+ */
+ inline void SetAnd(ReplicationRuleAndOperator&& value) { m_andHasBeenSet = true; m_and = std::move(value); }
+
+ /**
+ * <p>A container for specifying rule filters. The filters determine the subset of
+ * objects to which the rule applies. This element is required only if you specify
+ * more than one filter. For example: </p> <ul> <li> <p>If you specify both a
+ * <code>Prefix</code> and a <code>Tag</code> filter, wrap these filters in an
+ * <code>And</code> tag.</p> </li> <li> <p>If you specify a filter based on
+ * multiple tags, wrap the <code>Tag</code> elements in an <code>And</code>
+ * tag.</p> </li> </ul>
+ */
+ inline ReplicationRuleFilter& WithAnd(const ReplicationRuleAndOperator& value) { SetAnd(value); return *this;}
+
+ /**
+ * <p>A container for specifying rule filters. The filters determine the subset of
+ * objects to which the rule applies. This element is required only if you specify
+ * more than one filter. For example: </p> <ul> <li> <p>If you specify both a
+ * <code>Prefix</code> and a <code>Tag</code> filter, wrap these filters in an
+ * <code>And</code> tag.</p> </li> <li> <p>If you specify a filter based on
+ * multiple tags, wrap the <code>Tag</code> elements in an <code>And</code>
+ * tag.</p> </li> </ul>
+ */
+ inline ReplicationRuleFilter& WithAnd(ReplicationRuleAndOperator&& value) { SetAnd(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Tag m_tag;
+ bool m_tagHasBeenSet;
+
+ ReplicationRuleAndOperator m_and;
+ bool m_andHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleStatus.h
new file mode 100644
index 00000000000..a977fb6e3b5
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRuleStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ReplicationRuleStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace ReplicationRuleStatusMapper
+{
+AWS_S3_API ReplicationRuleStatus GetReplicationRuleStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForReplicationRuleStatus(ReplicationRuleStatus value);
+} // namespace ReplicationRuleStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationStatus.h
new file mode 100644
index 00000000000..ec89d045a5d
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationStatus.h
@@ -0,0 +1,33 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ReplicationStatus
+ {
+ NOT_SET,
+ COMPLETED,
+ PENDING,
+ FAILED,
+ REPLICA
+ };
+
+namespace ReplicationStatusMapper
+{
+AWS_S3_API ReplicationStatus GetReplicationStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForReplicationStatus(ReplicationStatus value);
+} // namespace ReplicationStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTime.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTime.h
new file mode 100644
index 00000000000..fa5cfd6008e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTime.h
@@ -0,0 +1,122 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ReplicationTimeStatus.h>
+#include <aws/s3/model/ReplicationTimeValue.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p> A container specifying S3 Replication Time Control (S3 RTC) related
+ * information, including whether S3 RTC is enabled and the time when all objects
+ * and operations on objects must be replicated. Must be specified together with a
+ * <code>Metrics</code> block. </p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ReplicationTime">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ReplicationTime
+ {
+ public:
+ ReplicationTime();
+ ReplicationTime(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ReplicationTime& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p> Specifies whether the replication time is enabled. </p>
+ */
+ inline const ReplicationTimeStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p> Specifies whether the replication time is enabled. </p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p> Specifies whether the replication time is enabled. </p>
+ */
+ inline void SetStatus(const ReplicationTimeStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p> Specifies whether the replication time is enabled. </p>
+ */
+ inline void SetStatus(ReplicationTimeStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p> Specifies whether the replication time is enabled. </p>
+ */
+ inline ReplicationTime& WithStatus(const ReplicationTimeStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p> Specifies whether the replication time is enabled. </p>
+ */
+ inline ReplicationTime& WithStatus(ReplicationTimeStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p> A container specifying the time by which replication should be complete for
+ * all objects and operations on objects. </p>
+ */
+ inline const ReplicationTimeValue& GetTime() const{ return m_time; }
+
+ /**
+ * <p> A container specifying the time by which replication should be complete for
+ * all objects and operations on objects. </p>
+ */
+ inline bool TimeHasBeenSet() const { return m_timeHasBeenSet; }
+
+ /**
+ * <p> A container specifying the time by which replication should be complete for
+ * all objects and operations on objects. </p>
+ */
+ inline void SetTime(const ReplicationTimeValue& value) { m_timeHasBeenSet = true; m_time = value; }
+
+ /**
+ * <p> A container specifying the time by which replication should be complete for
+ * all objects and operations on objects. </p>
+ */
+ inline void SetTime(ReplicationTimeValue&& value) { m_timeHasBeenSet = true; m_time = std::move(value); }
+
+ /**
+ * <p> A container specifying the time by which replication should be complete for
+ * all objects and operations on objects. </p>
+ */
+ inline ReplicationTime& WithTime(const ReplicationTimeValue& value) { SetTime(value); return *this;}
+
+ /**
+ * <p> A container specifying the time by which replication should be complete for
+ * all objects and operations on objects. </p>
+ */
+ inline ReplicationTime& WithTime(ReplicationTimeValue&& value) { SetTime(std::move(value)); return *this;}
+
+ private:
+
+ ReplicationTimeStatus m_status;
+ bool m_statusHasBeenSet;
+
+ ReplicationTimeValue m_time;
+ bool m_timeHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTimeStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTimeStatus.h
new file mode 100644
index 00000000000..8a74cf56384
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTimeStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ReplicationTimeStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace ReplicationTimeStatusMapper
+{
+AWS_S3_API ReplicationTimeStatus GetReplicationTimeStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForReplicationTimeStatus(ReplicationTimeStatus value);
+} // namespace ReplicationTimeStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTimeValue.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTimeValue.h
new file mode 100644
index 00000000000..846b5f88b91
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationTimeValue.h
@@ -0,0 +1,72 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p> A container specifying the time value for S3 Replication Time Control (S3
+ * RTC) and replication metrics <code>EventThreshold</code>. </p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ReplicationTimeValue">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ReplicationTimeValue
+ {
+ public:
+ ReplicationTimeValue();
+ ReplicationTimeValue(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ReplicationTimeValue& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p> Contains an integer specifying time in minutes. </p> <p> Valid values: 15
+ * minutes. </p>
+ */
+ inline int GetMinutes() const{ return m_minutes; }
+
+ /**
+ * <p> Contains an integer specifying time in minutes. </p> <p> Valid values: 15
+ * minutes. </p>
+ */
+ inline bool MinutesHasBeenSet() const { return m_minutesHasBeenSet; }
+
+ /**
+ * <p> Contains an integer specifying time in minutes. </p> <p> Valid values: 15
+ * minutes. </p>
+ */
+ inline void SetMinutes(int value) { m_minutesHasBeenSet = true; m_minutes = value; }
+
+ /**
+ * <p> Contains an integer specifying time in minutes. </p> <p> Valid values: 15
+ * minutes. </p>
+ */
+ inline ReplicationTimeValue& WithMinutes(int value) { SetMinutes(value); return *this;}
+
+ private:
+
+ int m_minutes;
+ bool m_minutesHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestCharged.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestCharged.h
new file mode 100644
index 00000000000..6b8d9e93f85
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestCharged.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class RequestCharged
+ {
+ NOT_SET,
+ requester
+ };
+
+namespace RequestChargedMapper
+{
+AWS_S3_API RequestCharged GetRequestChargedForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForRequestCharged(RequestCharged value);
+} // namespace RequestChargedMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestPayer.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestPayer.h
new file mode 100644
index 00000000000..4c388c33814
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestPayer.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class RequestPayer
+ {
+ NOT_SET,
+ requester
+ };
+
+namespace RequestPayerMapper
+{
+AWS_S3_API RequestPayer GetRequestPayerForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForRequestPayer(RequestPayer value);
+} // namespace RequestPayerMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestPaymentConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestPaymentConfiguration.h
new file mode 100644
index 00000000000..72861dbe7bb
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestPaymentConfiguration.h
@@ -0,0 +1,78 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Payer.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for Payer.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RequestPaymentConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API RequestPaymentConfiguration
+ {
+ public:
+ RequestPaymentConfiguration();
+ RequestPaymentConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ RequestPaymentConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline const Payer& GetPayer() const{ return m_payer; }
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline bool PayerHasBeenSet() const { return m_payerHasBeenSet; }
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline void SetPayer(const Payer& value) { m_payerHasBeenSet = true; m_payer = value; }
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline void SetPayer(Payer&& value) { m_payerHasBeenSet = true; m_payer = std::move(value); }
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline RequestPaymentConfiguration& WithPayer(const Payer& value) { SetPayer(value); return *this;}
+
+ /**
+ * <p>Specifies who pays for the download and request fees.</p>
+ */
+ inline RequestPaymentConfiguration& WithPayer(Payer&& value) { SetPayer(std::move(value)); return *this;}
+
+ private:
+
+ Payer m_payer;
+ bool m_payerHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestProgress.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestProgress.h
new file mode 100644
index 00000000000..717ad47c6f9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RequestProgress.h
@@ -0,0 +1,71 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for specifying if periodic <code>QueryProgress</code> messages
+ * should be sent.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RequestProgress">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API RequestProgress
+ {
+ public:
+ RequestProgress();
+ RequestProgress(const Aws::Utils::Xml::XmlNode& xmlNode);
+ RequestProgress& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies whether periodic QueryProgress frames should be sent. Valid values:
+ * TRUE, FALSE. Default value: FALSE.</p>
+ */
+ inline bool GetEnabled() const{ return m_enabled; }
+
+ /**
+ * <p>Specifies whether periodic QueryProgress frames should be sent. Valid values:
+ * TRUE, FALSE. Default value: FALSE.</p>
+ */
+ inline bool EnabledHasBeenSet() const { return m_enabledHasBeenSet; }
+
+ /**
+ * <p>Specifies whether periodic QueryProgress frames should be sent. Valid values:
+ * TRUE, FALSE. Default value: FALSE.</p>
+ */
+ inline void SetEnabled(bool value) { m_enabledHasBeenSet = true; m_enabled = value; }
+
+ /**
+ * <p>Specifies whether periodic QueryProgress frames should be sent. Valid values:
+ * TRUE, FALSE. Default value: FALSE.</p>
+ */
+ inline RequestProgress& WithEnabled(bool value) { SetEnabled(value); return *this;}
+
+ private:
+
+ bool m_enabled;
+ bool m_enabledHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreObjectRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreObjectRequest.h
new file mode 100644
index 00000000000..157b6db7c39
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreObjectRequest.h
@@ -0,0 +1,473 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RestoreRequest.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API RestoreObjectRequest : public S3Request
+ {
+ public:
+ RestoreObjectRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "RestoreObject"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name containing the object to restore. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name containing the object to restore. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name containing the object to restore. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name containing the object to restore. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name containing the object to restore. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name containing the object to restore. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline RestoreObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name containing the object to restore. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline RestoreObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name containing the object to restore. </p> <p>When using this API
+ * with an access point, you must direct requests to the access point hostname. The
+ * access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline RestoreObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Object key for which the operation was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which the operation was initiated.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Object key for which the operation was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Object key for which the operation was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which the operation was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Object key for which the operation was initiated.</p>
+ */
+ inline RestoreObjectRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which the operation was initiated.</p>
+ */
+ inline RestoreObjectRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which the operation was initiated.</p>
+ */
+ inline RestoreObjectRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline const Aws::String& GetVersionId() const{ return m_versionId; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline bool VersionIdHasBeenSet() const { return m_versionIdHasBeenSet; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const Aws::String& value) { m_versionIdHasBeenSet = true; m_versionId = value; }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(Aws::String&& value) { m_versionIdHasBeenSet = true; m_versionId = std::move(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline void SetVersionId(const char* value) { m_versionIdHasBeenSet = true; m_versionId.assign(value); }
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline RestoreObjectRequest& WithVersionId(const Aws::String& value) { SetVersionId(value); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline RestoreObjectRequest& WithVersionId(Aws::String&& value) { SetVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>VersionId used to reference a specific version of the object.</p>
+ */
+ inline RestoreObjectRequest& WithVersionId(const char* value) { SetVersionId(value); return *this;}
+
+
+
+ inline const RestoreRequest& GetRestoreRequest() const{ return m_restoreRequest; }
+
+
+ inline bool RestoreRequestHasBeenSet() const { return m_restoreRequestHasBeenSet; }
+
+
+ inline void SetRestoreRequest(const RestoreRequest& value) { m_restoreRequestHasBeenSet = true; m_restoreRequest = value; }
+
+
+ inline void SetRestoreRequest(RestoreRequest&& value) { m_restoreRequestHasBeenSet = true; m_restoreRequest = std::move(value); }
+
+
+ inline RestoreObjectRequest& WithRestoreRequest(const RestoreRequest& value) { SetRestoreRequest(value); return *this;}
+
+
+ inline RestoreObjectRequest& WithRestoreRequest(RestoreRequest&& value) { SetRestoreRequest(std::move(value)); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline RestoreObjectRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline RestoreObjectRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline RestoreObjectRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline RestoreObjectRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline RestoreObjectRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline RestoreObjectRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline RestoreObjectRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline RestoreObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline RestoreObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline RestoreObjectRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline RestoreObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline RestoreObjectRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline RestoreObjectRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline RestoreObjectRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_versionId;
+ bool m_versionIdHasBeenSet;
+
+ RestoreRequest m_restoreRequest;
+ bool m_restoreRequestHasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreObjectResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreObjectResult.h
new file mode 100644
index 00000000000..2cadd53189e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreObjectResult.h
@@ -0,0 +1,103 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API RestoreObjectResult
+ {
+ public:
+ RestoreObjectResult();
+ RestoreObjectResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ RestoreObjectResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline RestoreObjectResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline RestoreObjectResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Indicates the path in the provided S3 output location where Select results
+ * will be restored to.</p>
+ */
+ inline const Aws::String& GetRestoreOutputPath() const{ return m_restoreOutputPath; }
+
+ /**
+ * <p>Indicates the path in the provided S3 output location where Select results
+ * will be restored to.</p>
+ */
+ inline void SetRestoreOutputPath(const Aws::String& value) { m_restoreOutputPath = value; }
+
+ /**
+ * <p>Indicates the path in the provided S3 output location where Select results
+ * will be restored to.</p>
+ */
+ inline void SetRestoreOutputPath(Aws::String&& value) { m_restoreOutputPath = std::move(value); }
+
+ /**
+ * <p>Indicates the path in the provided S3 output location where Select results
+ * will be restored to.</p>
+ */
+ inline void SetRestoreOutputPath(const char* value) { m_restoreOutputPath.assign(value); }
+
+ /**
+ * <p>Indicates the path in the provided S3 output location where Select results
+ * will be restored to.</p>
+ */
+ inline RestoreObjectResult& WithRestoreOutputPath(const Aws::String& value) { SetRestoreOutputPath(value); return *this;}
+
+ /**
+ * <p>Indicates the path in the provided S3 output location where Select results
+ * will be restored to.</p>
+ */
+ inline RestoreObjectResult& WithRestoreOutputPath(Aws::String&& value) { SetRestoreOutputPath(std::move(value)); return *this;}
+
+ /**
+ * <p>Indicates the path in the provided S3 output location where Select results
+ * will be restored to.</p>
+ */
+ inline RestoreObjectResult& WithRestoreOutputPath(const char* value) { SetRestoreOutputPath(value); return *this;}
+
+ private:
+
+ RequestCharged m_requestCharged;
+
+ Aws::String m_restoreOutputPath;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreRequest.h
new file mode 100644
index 00000000000..f2460fbc85b
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreRequest.h
@@ -0,0 +1,301 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/GlacierJobParameters.h>
+#include <aws/s3/model/RestoreRequestType.h>
+#include <aws/s3/model/Tier.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/SelectParameters.h>
+#include <aws/s3/model/OutputLocation.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for restore job parameters.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreRequest">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API RestoreRequest
+ {
+ public:
+ RestoreRequest();
+ RestoreRequest(const Aws::Utils::Xml::XmlNode& xmlNode);
+ RestoreRequest& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Lifetime of the active copy in days. Do not use with restores that specify
+ * <code>OutputLocation</code>.</p> <p>The Days element is required for regular
+ * restores, and must not be provided for select requests.</p>
+ */
+ inline int GetDays() const{ return m_days; }
+
+ /**
+ * <p>Lifetime of the active copy in days. Do not use with restores that specify
+ * <code>OutputLocation</code>.</p> <p>The Days element is required for regular
+ * restores, and must not be provided for select requests.</p>
+ */
+ inline bool DaysHasBeenSet() const { return m_daysHasBeenSet; }
+
+ /**
+ * <p>Lifetime of the active copy in days. Do not use with restores that specify
+ * <code>OutputLocation</code>.</p> <p>The Days element is required for regular
+ * restores, and must not be provided for select requests.</p>
+ */
+ inline void SetDays(int value) { m_daysHasBeenSet = true; m_days = value; }
+
+ /**
+ * <p>Lifetime of the active copy in days. Do not use with restores that specify
+ * <code>OutputLocation</code>.</p> <p>The Days element is required for regular
+ * restores, and must not be provided for select requests.</p>
+ */
+ inline RestoreRequest& WithDays(int value) { SetDays(value); return *this;}
+
+
+ /**
+ * <p>S3 Glacier related parameters pertaining to this job. Do not use with
+ * restores that specify <code>OutputLocation</code>.</p>
+ */
+ inline const GlacierJobParameters& GetGlacierJobParameters() const{ return m_glacierJobParameters; }
+
+ /**
+ * <p>S3 Glacier related parameters pertaining to this job. Do not use with
+ * restores that specify <code>OutputLocation</code>.</p>
+ */
+ inline bool GlacierJobParametersHasBeenSet() const { return m_glacierJobParametersHasBeenSet; }
+
+ /**
+ * <p>S3 Glacier related parameters pertaining to this job. Do not use with
+ * restores that specify <code>OutputLocation</code>.</p>
+ */
+ inline void SetGlacierJobParameters(const GlacierJobParameters& value) { m_glacierJobParametersHasBeenSet = true; m_glacierJobParameters = value; }
+
+ /**
+ * <p>S3 Glacier related parameters pertaining to this job. Do not use with
+ * restores that specify <code>OutputLocation</code>.</p>
+ */
+ inline void SetGlacierJobParameters(GlacierJobParameters&& value) { m_glacierJobParametersHasBeenSet = true; m_glacierJobParameters = std::move(value); }
+
+ /**
+ * <p>S3 Glacier related parameters pertaining to this job. Do not use with
+ * restores that specify <code>OutputLocation</code>.</p>
+ */
+ inline RestoreRequest& WithGlacierJobParameters(const GlacierJobParameters& value) { SetGlacierJobParameters(value); return *this;}
+
+ /**
+ * <p>S3 Glacier related parameters pertaining to this job. Do not use with
+ * restores that specify <code>OutputLocation</code>.</p>
+ */
+ inline RestoreRequest& WithGlacierJobParameters(GlacierJobParameters&& value) { SetGlacierJobParameters(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Type of restore request.</p>
+ */
+ inline const RestoreRequestType& GetType() const{ return m_type; }
+
+ /**
+ * <p>Type of restore request.</p>
+ */
+ inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; }
+
+ /**
+ * <p>Type of restore request.</p>
+ */
+ inline void SetType(const RestoreRequestType& value) { m_typeHasBeenSet = true; m_type = value; }
+
+ /**
+ * <p>Type of restore request.</p>
+ */
+ inline void SetType(RestoreRequestType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); }
+
+ /**
+ * <p>Type of restore request.</p>
+ */
+ inline RestoreRequest& WithType(const RestoreRequestType& value) { SetType(value); return *this;}
+
+ /**
+ * <p>Type of restore request.</p>
+ */
+ inline RestoreRequest& WithType(RestoreRequestType&& value) { SetType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline const Tier& GetTier() const{ return m_tier; }
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline bool TierHasBeenSet() const { return m_tierHasBeenSet; }
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline void SetTier(const Tier& value) { m_tierHasBeenSet = true; m_tier = value; }
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline void SetTier(Tier&& value) { m_tierHasBeenSet = true; m_tier = std::move(value); }
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline RestoreRequest& WithTier(const Tier& value) { SetTier(value); return *this;}
+
+ /**
+ * <p>Retrieval tier at which the restore will be processed.</p>
+ */
+ inline RestoreRequest& WithTier(Tier&& value) { SetTier(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The optional description for the job.</p>
+ */
+ inline const Aws::String& GetDescription() const{ return m_description; }
+
+ /**
+ * <p>The optional description for the job.</p>
+ */
+ inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; }
+
+ /**
+ * <p>The optional description for the job.</p>
+ */
+ inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; }
+
+ /**
+ * <p>The optional description for the job.</p>
+ */
+ inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); }
+
+ /**
+ * <p>The optional description for the job.</p>
+ */
+ inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); }
+
+ /**
+ * <p>The optional description for the job.</p>
+ */
+ inline RestoreRequest& WithDescription(const Aws::String& value) { SetDescription(value); return *this;}
+
+ /**
+ * <p>The optional description for the job.</p>
+ */
+ inline RestoreRequest& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;}
+
+ /**
+ * <p>The optional description for the job.</p>
+ */
+ inline RestoreRequest& WithDescription(const char* value) { SetDescription(value); return *this;}
+
+
+ /**
+ * <p>Describes the parameters for Select job types.</p>
+ */
+ inline const SelectParameters& GetSelectParameters() const{ return m_selectParameters; }
+
+ /**
+ * <p>Describes the parameters for Select job types.</p>
+ */
+ inline bool SelectParametersHasBeenSet() const { return m_selectParametersHasBeenSet; }
+
+ /**
+ * <p>Describes the parameters for Select job types.</p>
+ */
+ inline void SetSelectParameters(const SelectParameters& value) { m_selectParametersHasBeenSet = true; m_selectParameters = value; }
+
+ /**
+ * <p>Describes the parameters for Select job types.</p>
+ */
+ inline void SetSelectParameters(SelectParameters&& value) { m_selectParametersHasBeenSet = true; m_selectParameters = std::move(value); }
+
+ /**
+ * <p>Describes the parameters for Select job types.</p>
+ */
+ inline RestoreRequest& WithSelectParameters(const SelectParameters& value) { SetSelectParameters(value); return *this;}
+
+ /**
+ * <p>Describes the parameters for Select job types.</p>
+ */
+ inline RestoreRequest& WithSelectParameters(SelectParameters&& value) { SetSelectParameters(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Describes the location where the restore job's output is stored.</p>
+ */
+ inline const OutputLocation& GetOutputLocation() const{ return m_outputLocation; }
+
+ /**
+ * <p>Describes the location where the restore job's output is stored.</p>
+ */
+ inline bool OutputLocationHasBeenSet() const { return m_outputLocationHasBeenSet; }
+
+ /**
+ * <p>Describes the location where the restore job's output is stored.</p>
+ */
+ inline void SetOutputLocation(const OutputLocation& value) { m_outputLocationHasBeenSet = true; m_outputLocation = value; }
+
+ /**
+ * <p>Describes the location where the restore job's output is stored.</p>
+ */
+ inline void SetOutputLocation(OutputLocation&& value) { m_outputLocationHasBeenSet = true; m_outputLocation = std::move(value); }
+
+ /**
+ * <p>Describes the location where the restore job's output is stored.</p>
+ */
+ inline RestoreRequest& WithOutputLocation(const OutputLocation& value) { SetOutputLocation(value); return *this;}
+
+ /**
+ * <p>Describes the location where the restore job's output is stored.</p>
+ */
+ inline RestoreRequest& WithOutputLocation(OutputLocation&& value) { SetOutputLocation(std::move(value)); return *this;}
+
+ private:
+
+ int m_days;
+ bool m_daysHasBeenSet;
+
+ GlacierJobParameters m_glacierJobParameters;
+ bool m_glacierJobParametersHasBeenSet;
+
+ RestoreRequestType m_type;
+ bool m_typeHasBeenSet;
+
+ Tier m_tier;
+ bool m_tierHasBeenSet;
+
+ Aws::String m_description;
+ bool m_descriptionHasBeenSet;
+
+ SelectParameters m_selectParameters;
+ bool m_selectParametersHasBeenSet;
+
+ OutputLocation m_outputLocation;
+ bool m_outputLocationHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreRequestType.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreRequestType.h
new file mode 100644
index 00000000000..654c8c38a6f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RestoreRequestType.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class RestoreRequestType
+ {
+ NOT_SET,
+ SELECT
+ };
+
+namespace RestoreRequestTypeMapper
+{
+AWS_S3_API RestoreRequestType GetRestoreRequestTypeForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForRestoreRequestType(RestoreRequestType value);
+} // namespace RestoreRequestTypeMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RoutingRule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RoutingRule.h
new file mode 100644
index 00000000000..ff37fa473ec
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/RoutingRule.h
@@ -0,0 +1,153 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Condition.h>
+#include <aws/s3/model/Redirect.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the redirect behavior and when a redirect is applied. For more
+ * information about routing rules, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects">Configuring
+ * advanced conditional redirects</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RoutingRule">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API RoutingRule
+ {
+ public:
+ RoutingRule();
+ RoutingRule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ RoutingRule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>A container for describing a condition that must be met for the specified
+ * redirect to apply. For example, 1. If request is for pages in the
+ * <code>/docs</code> folder, redirect to the <code>/documents</code> folder. 2. If
+ * request results in HTTP error 4xx, redirect request to another host where you
+ * might process the error.</p>
+ */
+ inline const Condition& GetCondition() const{ return m_condition; }
+
+ /**
+ * <p>A container for describing a condition that must be met for the specified
+ * redirect to apply. For example, 1. If request is for pages in the
+ * <code>/docs</code> folder, redirect to the <code>/documents</code> folder. 2. If
+ * request results in HTTP error 4xx, redirect request to another host where you
+ * might process the error.</p>
+ */
+ inline bool ConditionHasBeenSet() const { return m_conditionHasBeenSet; }
+
+ /**
+ * <p>A container for describing a condition that must be met for the specified
+ * redirect to apply. For example, 1. If request is for pages in the
+ * <code>/docs</code> folder, redirect to the <code>/documents</code> folder. 2. If
+ * request results in HTTP error 4xx, redirect request to another host where you
+ * might process the error.</p>
+ */
+ inline void SetCondition(const Condition& value) { m_conditionHasBeenSet = true; m_condition = value; }
+
+ /**
+ * <p>A container for describing a condition that must be met for the specified
+ * redirect to apply. For example, 1. If request is for pages in the
+ * <code>/docs</code> folder, redirect to the <code>/documents</code> folder. 2. If
+ * request results in HTTP error 4xx, redirect request to another host where you
+ * might process the error.</p>
+ */
+ inline void SetCondition(Condition&& value) { m_conditionHasBeenSet = true; m_condition = std::move(value); }
+
+ /**
+ * <p>A container for describing a condition that must be met for the specified
+ * redirect to apply. For example, 1. If request is for pages in the
+ * <code>/docs</code> folder, redirect to the <code>/documents</code> folder. 2. If
+ * request results in HTTP error 4xx, redirect request to another host where you
+ * might process the error.</p>
+ */
+ inline RoutingRule& WithCondition(const Condition& value) { SetCondition(value); return *this;}
+
+ /**
+ * <p>A container for describing a condition that must be met for the specified
+ * redirect to apply. For example, 1. If request is for pages in the
+ * <code>/docs</code> folder, redirect to the <code>/documents</code> folder. 2. If
+ * request results in HTTP error 4xx, redirect request to another host where you
+ * might process the error.</p>
+ */
+ inline RoutingRule& WithCondition(Condition&& value) { SetCondition(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Container for redirect information. You can redirect requests to another
+ * host, to another page, or with another protocol. In the event of an error, you
+ * can specify a different error code to return.</p>
+ */
+ inline const Redirect& GetRedirect() const{ return m_redirect; }
+
+ /**
+ * <p>Container for redirect information. You can redirect requests to another
+ * host, to another page, or with another protocol. In the event of an error, you
+ * can specify a different error code to return.</p>
+ */
+ inline bool RedirectHasBeenSet() const { return m_redirectHasBeenSet; }
+
+ /**
+ * <p>Container for redirect information. You can redirect requests to another
+ * host, to another page, or with another protocol. In the event of an error, you
+ * can specify a different error code to return.</p>
+ */
+ inline void SetRedirect(const Redirect& value) { m_redirectHasBeenSet = true; m_redirect = value; }
+
+ /**
+ * <p>Container for redirect information. You can redirect requests to another
+ * host, to another page, or with another protocol. In the event of an error, you
+ * can specify a different error code to return.</p>
+ */
+ inline void SetRedirect(Redirect&& value) { m_redirectHasBeenSet = true; m_redirect = std::move(value); }
+
+ /**
+ * <p>Container for redirect information. You can redirect requests to another
+ * host, to another page, or with another protocol. In the event of an error, you
+ * can specify a different error code to return.</p>
+ */
+ inline RoutingRule& WithRedirect(const Redirect& value) { SetRedirect(value); return *this;}
+
+ /**
+ * <p>Container for redirect information. You can redirect requests to another
+ * host, to another page, or with another protocol. In the event of an error, you
+ * can specify a different error code to return.</p>
+ */
+ inline RoutingRule& WithRedirect(Redirect&& value) { SetRedirect(std::move(value)); return *this;}
+
+ private:
+
+ Condition m_condition;
+ bool m_conditionHasBeenSet;
+
+ Redirect m_redirect;
+ bool m_redirectHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Rule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Rule.h
new file mode 100644
index 00000000000..649d14ceb3f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Rule.h
@@ -0,0 +1,358 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/LifecycleExpiration.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ExpirationStatus.h>
+#include <aws/s3/model/Transition.h>
+#include <aws/s3/model/NoncurrentVersionTransition.h>
+#include <aws/s3/model/NoncurrentVersionExpiration.h>
+#include <aws/s3/model/AbortIncompleteMultipartUpload.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies lifecycle rules for an Amazon S3 bucket. For more information, see
+ * <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html">Put
+ * Bucket Lifecycle Configuration</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>. For examples, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html#API_PutBucketLifecycleConfiguration_Examples">Put
+ * Bucket Lifecycle Configuration Examples</a> </p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Rule">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Rule
+ {
+ public:
+ Rule();
+ Rule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Rule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object.</p>
+ */
+ inline const LifecycleExpiration& GetExpiration() const{ return m_expiration; }
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object.</p>
+ */
+ inline bool ExpirationHasBeenSet() const { return m_expirationHasBeenSet; }
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object.</p>
+ */
+ inline void SetExpiration(const LifecycleExpiration& value) { m_expirationHasBeenSet = true; m_expiration = value; }
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object.</p>
+ */
+ inline void SetExpiration(LifecycleExpiration&& value) { m_expirationHasBeenSet = true; m_expiration = std::move(value); }
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object.</p>
+ */
+ inline Rule& WithExpiration(const LifecycleExpiration& value) { SetExpiration(value); return *this;}
+
+ /**
+ * <p>Specifies the expiration for the lifecycle of the object.</p>
+ */
+ inline Rule& WithExpiration(LifecycleExpiration&& value) { SetExpiration(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Unique identifier for the rule. The value can't be longer than 255
+ * characters.</p>
+ */
+ inline const Aws::String& GetID() const{ return m_iD; }
+
+ /**
+ * <p>Unique identifier for the rule. The value can't be longer than 255
+ * characters.</p>
+ */
+ inline bool IDHasBeenSet() const { return m_iDHasBeenSet; }
+
+ /**
+ * <p>Unique identifier for the rule. The value can't be longer than 255
+ * characters.</p>
+ */
+ inline void SetID(const Aws::String& value) { m_iDHasBeenSet = true; m_iD = value; }
+
+ /**
+ * <p>Unique identifier for the rule. The value can't be longer than 255
+ * characters.</p>
+ */
+ inline void SetID(Aws::String&& value) { m_iDHasBeenSet = true; m_iD = std::move(value); }
+
+ /**
+ * <p>Unique identifier for the rule. The value can't be longer than 255
+ * characters.</p>
+ */
+ inline void SetID(const char* value) { m_iDHasBeenSet = true; m_iD.assign(value); }
+
+ /**
+ * <p>Unique identifier for the rule. The value can't be longer than 255
+ * characters.</p>
+ */
+ inline Rule& WithID(const Aws::String& value) { SetID(value); return *this;}
+
+ /**
+ * <p>Unique identifier for the rule. The value can't be longer than 255
+ * characters.</p>
+ */
+ inline Rule& WithID(Aws::String&& value) { SetID(std::move(value)); return *this;}
+
+ /**
+ * <p>Unique identifier for the rule. The value can't be longer than 255
+ * characters.</p>
+ */
+ inline Rule& WithID(const char* value) { SetID(value); return *this;}
+
+
+ /**
+ * <p>Object key prefix that identifies one or more objects to which this rule
+ * applies.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>Object key prefix that identifies one or more objects to which this rule
+ * applies.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>Object key prefix that identifies one or more objects to which this rule
+ * applies.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>Object key prefix that identifies one or more objects to which this rule
+ * applies.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>Object key prefix that identifies one or more objects to which this rule
+ * applies.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>Object key prefix that identifies one or more objects to which this rule
+ * applies.</p>
+ */
+ inline Rule& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>Object key prefix that identifies one or more objects to which this rule
+ * applies.</p>
+ */
+ inline Rule& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key prefix that identifies one or more objects to which this rule
+ * applies.</p>
+ */
+ inline Rule& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+ /**
+ * <p>If <code>Enabled</code>, the rule is currently being applied. If
+ * <code>Disabled</code>, the rule is not currently being applied.</p>
+ */
+ inline const ExpirationStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>If <code>Enabled</code>, the rule is currently being applied. If
+ * <code>Disabled</code>, the rule is not currently being applied.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>If <code>Enabled</code>, the rule is currently being applied. If
+ * <code>Disabled</code>, the rule is not currently being applied.</p>
+ */
+ inline void SetStatus(const ExpirationStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>If <code>Enabled</code>, the rule is currently being applied. If
+ * <code>Disabled</code>, the rule is not currently being applied.</p>
+ */
+ inline void SetStatus(ExpirationStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>If <code>Enabled</code>, the rule is currently being applied. If
+ * <code>Disabled</code>, the rule is not currently being applied.</p>
+ */
+ inline Rule& WithStatus(const ExpirationStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>If <code>Enabled</code>, the rule is currently being applied. If
+ * <code>Disabled</code>, the rule is not currently being applied.</p>
+ */
+ inline Rule& WithStatus(ExpirationStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies when an object transitions to a specified storage class. For more
+ * information about Amazon S3 lifecycle configuration rules, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html">Transitioning
+ * Objects Using Amazon S3 Lifecycle</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline const Transition& GetTransition() const{ return m_transition; }
+
+ /**
+ * <p>Specifies when an object transitions to a specified storage class. For more
+ * information about Amazon S3 lifecycle configuration rules, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html">Transitioning
+ * Objects Using Amazon S3 Lifecycle</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline bool TransitionHasBeenSet() const { return m_transitionHasBeenSet; }
+
+ /**
+ * <p>Specifies when an object transitions to a specified storage class. For more
+ * information about Amazon S3 lifecycle configuration rules, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html">Transitioning
+ * Objects Using Amazon S3 Lifecycle</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline void SetTransition(const Transition& value) { m_transitionHasBeenSet = true; m_transition = value; }
+
+ /**
+ * <p>Specifies when an object transitions to a specified storage class. For more
+ * information about Amazon S3 lifecycle configuration rules, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html">Transitioning
+ * Objects Using Amazon S3 Lifecycle</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline void SetTransition(Transition&& value) { m_transitionHasBeenSet = true; m_transition = std::move(value); }
+
+ /**
+ * <p>Specifies when an object transitions to a specified storage class. For more
+ * information about Amazon S3 lifecycle configuration rules, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html">Transitioning
+ * Objects Using Amazon S3 Lifecycle</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline Rule& WithTransition(const Transition& value) { SetTransition(value); return *this;}
+
+ /**
+ * <p>Specifies when an object transitions to a specified storage class. For more
+ * information about Amazon S3 lifecycle configuration rules, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html">Transitioning
+ * Objects Using Amazon S3 Lifecycle</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p>
+ */
+ inline Rule& WithTransition(Transition&& value) { SetTransition(std::move(value)); return *this;}
+
+
+
+ inline const NoncurrentVersionTransition& GetNoncurrentVersionTransition() const{ return m_noncurrentVersionTransition; }
+
+
+ inline bool NoncurrentVersionTransitionHasBeenSet() const { return m_noncurrentVersionTransitionHasBeenSet; }
+
+
+ inline void SetNoncurrentVersionTransition(const NoncurrentVersionTransition& value) { m_noncurrentVersionTransitionHasBeenSet = true; m_noncurrentVersionTransition = value; }
+
+
+ inline void SetNoncurrentVersionTransition(NoncurrentVersionTransition&& value) { m_noncurrentVersionTransitionHasBeenSet = true; m_noncurrentVersionTransition = std::move(value); }
+
+
+ inline Rule& WithNoncurrentVersionTransition(const NoncurrentVersionTransition& value) { SetNoncurrentVersionTransition(value); return *this;}
+
+
+ inline Rule& WithNoncurrentVersionTransition(NoncurrentVersionTransition&& value) { SetNoncurrentVersionTransition(std::move(value)); return *this;}
+
+
+
+ inline const NoncurrentVersionExpiration& GetNoncurrentVersionExpiration() const{ return m_noncurrentVersionExpiration; }
+
+
+ inline bool NoncurrentVersionExpirationHasBeenSet() const { return m_noncurrentVersionExpirationHasBeenSet; }
+
+
+ inline void SetNoncurrentVersionExpiration(const NoncurrentVersionExpiration& value) { m_noncurrentVersionExpirationHasBeenSet = true; m_noncurrentVersionExpiration = value; }
+
+
+ inline void SetNoncurrentVersionExpiration(NoncurrentVersionExpiration&& value) { m_noncurrentVersionExpirationHasBeenSet = true; m_noncurrentVersionExpiration = std::move(value); }
+
+
+ inline Rule& WithNoncurrentVersionExpiration(const NoncurrentVersionExpiration& value) { SetNoncurrentVersionExpiration(value); return *this;}
+
+
+ inline Rule& WithNoncurrentVersionExpiration(NoncurrentVersionExpiration&& value) { SetNoncurrentVersionExpiration(std::move(value)); return *this;}
+
+
+
+ inline const AbortIncompleteMultipartUpload& GetAbortIncompleteMultipartUpload() const{ return m_abortIncompleteMultipartUpload; }
+
+
+ inline bool AbortIncompleteMultipartUploadHasBeenSet() const { return m_abortIncompleteMultipartUploadHasBeenSet; }
+
+
+ inline void SetAbortIncompleteMultipartUpload(const AbortIncompleteMultipartUpload& value) { m_abortIncompleteMultipartUploadHasBeenSet = true; m_abortIncompleteMultipartUpload = value; }
+
+
+ inline void SetAbortIncompleteMultipartUpload(AbortIncompleteMultipartUpload&& value) { m_abortIncompleteMultipartUploadHasBeenSet = true; m_abortIncompleteMultipartUpload = std::move(value); }
+
+
+ inline Rule& WithAbortIncompleteMultipartUpload(const AbortIncompleteMultipartUpload& value) { SetAbortIncompleteMultipartUpload(value); return *this;}
+
+
+ inline Rule& WithAbortIncompleteMultipartUpload(AbortIncompleteMultipartUpload&& value) { SetAbortIncompleteMultipartUpload(std::move(value)); return *this;}
+
+ private:
+
+ LifecycleExpiration m_expiration;
+ bool m_expirationHasBeenSet;
+
+ Aws::String m_iD;
+ bool m_iDHasBeenSet;
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ ExpirationStatus m_status;
+ bool m_statusHasBeenSet;
+
+ Transition m_transition;
+ bool m_transitionHasBeenSet;
+
+ NoncurrentVersionTransition m_noncurrentVersionTransition;
+ bool m_noncurrentVersionTransitionHasBeenSet;
+
+ NoncurrentVersionExpiration m_noncurrentVersionExpiration;
+ bool m_noncurrentVersionExpirationHasBeenSet;
+
+ AbortIncompleteMultipartUpload m_abortIncompleteMultipartUpload;
+ bool m_abortIncompleteMultipartUploadHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/S3KeyFilter.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/S3KeyFilter.h
new file mode 100644
index 00000000000..0f22a9524e5
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/S3KeyFilter.h
@@ -0,0 +1,74 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/FilterRule.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for object key name prefix and suffix filtering
+ * rules.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/S3KeyFilter">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API S3KeyFilter
+ {
+ public:
+ S3KeyFilter();
+ S3KeyFilter(const Aws::Utils::Xml::XmlNode& xmlNode);
+ S3KeyFilter& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const Aws::Vector<FilterRule>& GetFilterRules() const{ return m_filterRules; }
+
+
+ inline bool FilterRulesHasBeenSet() const { return m_filterRulesHasBeenSet; }
+
+
+ inline void SetFilterRules(const Aws::Vector<FilterRule>& value) { m_filterRulesHasBeenSet = true; m_filterRules = value; }
+
+
+ inline void SetFilterRules(Aws::Vector<FilterRule>&& value) { m_filterRulesHasBeenSet = true; m_filterRules = std::move(value); }
+
+
+ inline S3KeyFilter& WithFilterRules(const Aws::Vector<FilterRule>& value) { SetFilterRules(value); return *this;}
+
+
+ inline S3KeyFilter& WithFilterRules(Aws::Vector<FilterRule>&& value) { SetFilterRules(std::move(value)); return *this;}
+
+
+ inline S3KeyFilter& AddFilterRules(const FilterRule& value) { m_filterRulesHasBeenSet = true; m_filterRules.push_back(value); return *this; }
+
+
+ inline S3KeyFilter& AddFilterRules(FilterRule&& value) { m_filterRulesHasBeenSet = true; m_filterRules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<FilterRule> m_filterRules;
+ bool m_filterRulesHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/S3Location.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/S3Location.h
new file mode 100644
index 00000000000..8f0eab338b5
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/S3Location.h
@@ -0,0 +1,352 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/Encryption.h>
+#include <aws/s3/model/ObjectCannedACL.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tagging.h>
+#include <aws/s3/model/StorageClass.h>
+#include <aws/s3/model/Grant.h>
+#include <aws/s3/model/MetadataEntry.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes an Amazon S3 location that will receive the results of the restore
+ * request.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/S3Location">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API S3Location
+ {
+ public:
+ S3Location();
+ S3Location(const Aws::Utils::Xml::XmlNode& xmlNode);
+ S3Location& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The name of the bucket where the restore results will be placed.</p>
+ */
+ inline const Aws::String& GetBucketName() const{ return m_bucketName; }
+
+ /**
+ * <p>The name of the bucket where the restore results will be placed.</p>
+ */
+ inline bool BucketNameHasBeenSet() const { return m_bucketNameHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket where the restore results will be placed.</p>
+ */
+ inline void SetBucketName(const Aws::String& value) { m_bucketNameHasBeenSet = true; m_bucketName = value; }
+
+ /**
+ * <p>The name of the bucket where the restore results will be placed.</p>
+ */
+ inline void SetBucketName(Aws::String&& value) { m_bucketNameHasBeenSet = true; m_bucketName = std::move(value); }
+
+ /**
+ * <p>The name of the bucket where the restore results will be placed.</p>
+ */
+ inline void SetBucketName(const char* value) { m_bucketNameHasBeenSet = true; m_bucketName.assign(value); }
+
+ /**
+ * <p>The name of the bucket where the restore results will be placed.</p>
+ */
+ inline S3Location& WithBucketName(const Aws::String& value) { SetBucketName(value); return *this;}
+
+ /**
+ * <p>The name of the bucket where the restore results will be placed.</p>
+ */
+ inline S3Location& WithBucketName(Aws::String&& value) { SetBucketName(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket where the restore results will be placed.</p>
+ */
+ inline S3Location& WithBucketName(const char* value) { SetBucketName(value); return *this;}
+
+
+ /**
+ * <p>The prefix that is prepended to the restore results for this request.</p>
+ */
+ inline const Aws::String& GetPrefix() const{ return m_prefix; }
+
+ /**
+ * <p>The prefix that is prepended to the restore results for this request.</p>
+ */
+ inline bool PrefixHasBeenSet() const { return m_prefixHasBeenSet; }
+
+ /**
+ * <p>The prefix that is prepended to the restore results for this request.</p>
+ */
+ inline void SetPrefix(const Aws::String& value) { m_prefixHasBeenSet = true; m_prefix = value; }
+
+ /**
+ * <p>The prefix that is prepended to the restore results for this request.</p>
+ */
+ inline void SetPrefix(Aws::String&& value) { m_prefixHasBeenSet = true; m_prefix = std::move(value); }
+
+ /**
+ * <p>The prefix that is prepended to the restore results for this request.</p>
+ */
+ inline void SetPrefix(const char* value) { m_prefixHasBeenSet = true; m_prefix.assign(value); }
+
+ /**
+ * <p>The prefix that is prepended to the restore results for this request.</p>
+ */
+ inline S3Location& WithPrefix(const Aws::String& value) { SetPrefix(value); return *this;}
+
+ /**
+ * <p>The prefix that is prepended to the restore results for this request.</p>
+ */
+ inline S3Location& WithPrefix(Aws::String&& value) { SetPrefix(std::move(value)); return *this;}
+
+ /**
+ * <p>The prefix that is prepended to the restore results for this request.</p>
+ */
+ inline S3Location& WithPrefix(const char* value) { SetPrefix(value); return *this;}
+
+
+
+ inline const Encryption& GetEncryption() const{ return m_encryption; }
+
+
+ inline bool EncryptionHasBeenSet() const { return m_encryptionHasBeenSet; }
+
+
+ inline void SetEncryption(const Encryption& value) { m_encryptionHasBeenSet = true; m_encryption = value; }
+
+
+ inline void SetEncryption(Encryption&& value) { m_encryptionHasBeenSet = true; m_encryption = std::move(value); }
+
+
+ inline S3Location& WithEncryption(const Encryption& value) { SetEncryption(value); return *this;}
+
+
+ inline S3Location& WithEncryption(Encryption&& value) { SetEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The canned ACL to apply to the restore results.</p>
+ */
+ inline const ObjectCannedACL& GetCannedACL() const{ return m_cannedACL; }
+
+ /**
+ * <p>The canned ACL to apply to the restore results.</p>
+ */
+ inline bool CannedACLHasBeenSet() const { return m_cannedACLHasBeenSet; }
+
+ /**
+ * <p>The canned ACL to apply to the restore results.</p>
+ */
+ inline void SetCannedACL(const ObjectCannedACL& value) { m_cannedACLHasBeenSet = true; m_cannedACL = value; }
+
+ /**
+ * <p>The canned ACL to apply to the restore results.</p>
+ */
+ inline void SetCannedACL(ObjectCannedACL&& value) { m_cannedACLHasBeenSet = true; m_cannedACL = std::move(value); }
+
+ /**
+ * <p>The canned ACL to apply to the restore results.</p>
+ */
+ inline S3Location& WithCannedACL(const ObjectCannedACL& value) { SetCannedACL(value); return *this;}
+
+ /**
+ * <p>The canned ACL to apply to the restore results.</p>
+ */
+ inline S3Location& WithCannedACL(ObjectCannedACL&& value) { SetCannedACL(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A list of grants that control access to the staged results.</p>
+ */
+ inline const Aws::Vector<Grant>& GetAccessControlList() const{ return m_accessControlList; }
+
+ /**
+ * <p>A list of grants that control access to the staged results.</p>
+ */
+ inline bool AccessControlListHasBeenSet() const { return m_accessControlListHasBeenSet; }
+
+ /**
+ * <p>A list of grants that control access to the staged results.</p>
+ */
+ inline void SetAccessControlList(const Aws::Vector<Grant>& value) { m_accessControlListHasBeenSet = true; m_accessControlList = value; }
+
+ /**
+ * <p>A list of grants that control access to the staged results.</p>
+ */
+ inline void SetAccessControlList(Aws::Vector<Grant>&& value) { m_accessControlListHasBeenSet = true; m_accessControlList = std::move(value); }
+
+ /**
+ * <p>A list of grants that control access to the staged results.</p>
+ */
+ inline S3Location& WithAccessControlList(const Aws::Vector<Grant>& value) { SetAccessControlList(value); return *this;}
+
+ /**
+ * <p>A list of grants that control access to the staged results.</p>
+ */
+ inline S3Location& WithAccessControlList(Aws::Vector<Grant>&& value) { SetAccessControlList(std::move(value)); return *this;}
+
+ /**
+ * <p>A list of grants that control access to the staged results.</p>
+ */
+ inline S3Location& AddAccessControlList(const Grant& value) { m_accessControlListHasBeenSet = true; m_accessControlList.push_back(value); return *this; }
+
+ /**
+ * <p>A list of grants that control access to the staged results.</p>
+ */
+ inline S3Location& AddAccessControlList(Grant&& value) { m_accessControlListHasBeenSet = true; m_accessControlList.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>The tag-set that is applied to the restore results.</p>
+ */
+ inline const Tagging& GetTagging() const{ return m_tagging; }
+
+ /**
+ * <p>The tag-set that is applied to the restore results.</p>
+ */
+ inline bool TaggingHasBeenSet() const { return m_taggingHasBeenSet; }
+
+ /**
+ * <p>The tag-set that is applied to the restore results.</p>
+ */
+ inline void SetTagging(const Tagging& value) { m_taggingHasBeenSet = true; m_tagging = value; }
+
+ /**
+ * <p>The tag-set that is applied to the restore results.</p>
+ */
+ inline void SetTagging(Tagging&& value) { m_taggingHasBeenSet = true; m_tagging = std::move(value); }
+
+ /**
+ * <p>The tag-set that is applied to the restore results.</p>
+ */
+ inline S3Location& WithTagging(const Tagging& value) { SetTagging(value); return *this;}
+
+ /**
+ * <p>The tag-set that is applied to the restore results.</p>
+ */
+ inline S3Location& WithTagging(Tagging&& value) { SetTagging(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A list of metadata to store with the restore results in S3.</p>
+ */
+ inline const Aws::Vector<MetadataEntry>& GetUserMetadata() const{ return m_userMetadata; }
+
+ /**
+ * <p>A list of metadata to store with the restore results in S3.</p>
+ */
+ inline bool UserMetadataHasBeenSet() const { return m_userMetadataHasBeenSet; }
+
+ /**
+ * <p>A list of metadata to store with the restore results in S3.</p>
+ */
+ inline void SetUserMetadata(const Aws::Vector<MetadataEntry>& value) { m_userMetadataHasBeenSet = true; m_userMetadata = value; }
+
+ /**
+ * <p>A list of metadata to store with the restore results in S3.</p>
+ */
+ inline void SetUserMetadata(Aws::Vector<MetadataEntry>&& value) { m_userMetadataHasBeenSet = true; m_userMetadata = std::move(value); }
+
+ /**
+ * <p>A list of metadata to store with the restore results in S3.</p>
+ */
+ inline S3Location& WithUserMetadata(const Aws::Vector<MetadataEntry>& value) { SetUserMetadata(value); return *this;}
+
+ /**
+ * <p>A list of metadata to store with the restore results in S3.</p>
+ */
+ inline S3Location& WithUserMetadata(Aws::Vector<MetadataEntry>&& value) { SetUserMetadata(std::move(value)); return *this;}
+
+ /**
+ * <p>A list of metadata to store with the restore results in S3.</p>
+ */
+ inline S3Location& AddUserMetadata(const MetadataEntry& value) { m_userMetadataHasBeenSet = true; m_userMetadata.push_back(value); return *this; }
+
+ /**
+ * <p>A list of metadata to store with the restore results in S3.</p>
+ */
+ inline S3Location& AddUserMetadata(MetadataEntry&& value) { m_userMetadataHasBeenSet = true; m_userMetadata.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>The class of storage used to store the restore results.</p>
+ */
+ inline const StorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>The class of storage used to store the restore results.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p>The class of storage used to store the restore results.</p>
+ */
+ inline void SetStorageClass(const StorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p>The class of storage used to store the restore results.</p>
+ */
+ inline void SetStorageClass(StorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p>The class of storage used to store the restore results.</p>
+ */
+ inline S3Location& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>The class of storage used to store the restore results.</p>
+ */
+ inline S3Location& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_bucketName;
+ bool m_bucketNameHasBeenSet;
+
+ Aws::String m_prefix;
+ bool m_prefixHasBeenSet;
+
+ Encryption m_encryption;
+ bool m_encryptionHasBeenSet;
+
+ ObjectCannedACL m_cannedACL;
+ bool m_cannedACLHasBeenSet;
+
+ Aws::Vector<Grant> m_accessControlList;
+ bool m_accessControlListHasBeenSet;
+
+ Tagging m_tagging;
+ bool m_taggingHasBeenSet;
+
+ Aws::Vector<MetadataEntry> m_userMetadata;
+ bool m_userMetadataHasBeenSet;
+
+ StorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SSEKMS.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SSEKMS.h
new file mode 100644
index 00000000000..b7b1ac25bef
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SSEKMS.h
@@ -0,0 +1,105 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the use of SSE-KMS to encrypt delivered inventory
+ * reports.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SSEKMS">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API SSEKMS
+ {
+ public:
+ SSEKMS();
+ SSEKMS(const Aws::Utils::Xml::XmlNode& xmlNode);
+ SSEKMS& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric
+ * customer managed customer master key (CMK) to use for encrypting inventory
+ * reports.</p>
+ */
+ inline const Aws::String& GetKeyId() const{ return m_keyId; }
+
+ /**
+ * <p>Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric
+ * customer managed customer master key (CMK) to use for encrypting inventory
+ * reports.</p>
+ */
+ inline bool KeyIdHasBeenSet() const { return m_keyIdHasBeenSet; }
+
+ /**
+ * <p>Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric
+ * customer managed customer master key (CMK) to use for encrypting inventory
+ * reports.</p>
+ */
+ inline void SetKeyId(const Aws::String& value) { m_keyIdHasBeenSet = true; m_keyId = value; }
+
+ /**
+ * <p>Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric
+ * customer managed customer master key (CMK) to use for encrypting inventory
+ * reports.</p>
+ */
+ inline void SetKeyId(Aws::String&& value) { m_keyIdHasBeenSet = true; m_keyId = std::move(value); }
+
+ /**
+ * <p>Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric
+ * customer managed customer master key (CMK) to use for encrypting inventory
+ * reports.</p>
+ */
+ inline void SetKeyId(const char* value) { m_keyIdHasBeenSet = true; m_keyId.assign(value); }
+
+ /**
+ * <p>Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric
+ * customer managed customer master key (CMK) to use for encrypting inventory
+ * reports.</p>
+ */
+ inline SSEKMS& WithKeyId(const Aws::String& value) { SetKeyId(value); return *this;}
+
+ /**
+ * <p>Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric
+ * customer managed customer master key (CMK) to use for encrypting inventory
+ * reports.</p>
+ */
+ inline SSEKMS& WithKeyId(Aws::String&& value) { SetKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric
+ * customer managed customer master key (CMK) to use for encrypting inventory
+ * reports.</p>
+ */
+ inline SSEKMS& WithKeyId(const char* value) { SetKeyId(value); return *this;}
+
+ private:
+
+ Aws::String m_keyId;
+ bool m_keyIdHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SSES3.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SSES3.h
new file mode 100644
index 00000000000..7312fd29170
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SSES3.h
@@ -0,0 +1,42 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the use of SSE-S3 to encrypt delivered inventory
+ * reports.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SSES3">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API SSES3
+ {
+ public:
+ SSES3();
+ SSES3(const Aws::Utils::Xml::XmlNode& xmlNode);
+ SSES3& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ScanRange.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ScanRange.h
new file mode 100644
index 00000000000..dd964d0441f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ScanRange.h
@@ -0,0 +1,130 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the byte range of the object to get the records from. A record is
+ * processed when its first byte is contained by the range. This parameter is
+ * optional, but when specified, it must not be empty. See RFC 2616, Section
+ * 14.35.1 about how to specify the start and end of the range.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ScanRange">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API ScanRange
+ {
+ public:
+ ScanRange();
+ ScanRange(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ScanRange& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the start of the byte range. This parameter is optional. Valid
+ * values: non-negative integers. The default value is 0. If only start is
+ * supplied, it means scan from that point to the end of the file.For example;
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code>
+ * means scan from byte 50 until the end of the file.</p>
+ */
+ inline long long GetStart() const{ return m_start; }
+
+ /**
+ * <p>Specifies the start of the byte range. This parameter is optional. Valid
+ * values: non-negative integers. The default value is 0. If only start is
+ * supplied, it means scan from that point to the end of the file.For example;
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code>
+ * means scan from byte 50 until the end of the file.</p>
+ */
+ inline bool StartHasBeenSet() const { return m_startHasBeenSet; }
+
+ /**
+ * <p>Specifies the start of the byte range. This parameter is optional. Valid
+ * values: non-negative integers. The default value is 0. If only start is
+ * supplied, it means scan from that point to the end of the file.For example;
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code>
+ * means scan from byte 50 until the end of the file.</p>
+ */
+ inline void SetStart(long long value) { m_startHasBeenSet = true; m_start = value; }
+
+ /**
+ * <p>Specifies the start of the byte range. This parameter is optional. Valid
+ * values: non-negative integers. The default value is 0. If only start is
+ * supplied, it means scan from that point to the end of the file.For example;
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code>
+ * means scan from byte 50 until the end of the file.</p>
+ */
+ inline ScanRange& WithStart(long long value) { SetStart(value); return *this;}
+
+
+ /**
+ * <p>Specifies the end of the byte range. This parameter is optional. Valid
+ * values: non-negative integers. The default value is one less than the size of
+ * the object being queried. If only the End parameter is supplied, it is
+ * interpreted to mean scan the last N bytes of the file. For example,
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> means
+ * scan the last 50 bytes.</p>
+ */
+ inline long long GetEnd() const{ return m_end; }
+
+ /**
+ * <p>Specifies the end of the byte range. This parameter is optional. Valid
+ * values: non-negative integers. The default value is one less than the size of
+ * the object being queried. If only the End parameter is supplied, it is
+ * interpreted to mean scan the last N bytes of the file. For example,
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> means
+ * scan the last 50 bytes.</p>
+ */
+ inline bool EndHasBeenSet() const { return m_endHasBeenSet; }
+
+ /**
+ * <p>Specifies the end of the byte range. This parameter is optional. Valid
+ * values: non-negative integers. The default value is one less than the size of
+ * the object being queried. If only the End parameter is supplied, it is
+ * interpreted to mean scan the last N bytes of the file. For example,
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> means
+ * scan the last 50 bytes.</p>
+ */
+ inline void SetEnd(long long value) { m_endHasBeenSet = true; m_end = value; }
+
+ /**
+ * <p>Specifies the end of the byte range. This parameter is optional. Valid
+ * values: non-negative integers. The default value is one less than the size of
+ * the object being queried. If only the End parameter is supplied, it is
+ * interpreted to mean scan the last N bytes of the file. For example,
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> means
+ * scan the last 50 bytes.</p>
+ */
+ inline ScanRange& WithEnd(long long value) { SetEnd(value); return *this;}
+
+ private:
+
+ long long m_start;
+ bool m_startHasBeenSet;
+
+ long long m_end;
+ bool m_endHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectObjectContentHandler.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectObjectContentHandler.h
new file mode 100644
index 00000000000..3b04be1d0d9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectObjectContentHandler.h
@@ -0,0 +1,76 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/core/utils/HashingUtils.h>
+#include <aws/core/utils/event/EventStreamHandler.h>
+#include <aws/core/client/AWSError.h>
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Errors.h>
+
+#include <aws/s3/model/RecordsEvent.h>
+#include <aws/s3/model/StatsEvent.h>
+#include <aws/s3/model/ProgressEvent.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class SelectObjectContentEventType
+ {
+ RECORDS,
+ STATS,
+ PROGRESS,
+ CONT,
+ END,
+ UNKNOWN
+ };
+
+ class AWS_S3_API SelectObjectContentHandler : public Aws::Utils::Event::EventStreamHandler
+ {
+ typedef std::function<void(const RecordsEvent&)> RecordsEventCallback;
+ typedef std::function<void(const StatsEvent&)> StatsEventCallback;
+ typedef std::function<void(const ProgressEvent&)> ProgressEventCallback;
+ typedef std::function<void()> ContinuationEventCallback;
+ typedef std::function<void()> EndEventCallback;
+ typedef std::function<void(const Aws::Client::AWSError<S3Errors>& error)> ErrorCallback;
+
+ public:
+ SelectObjectContentHandler();
+ SelectObjectContentHandler& operator=(const SelectObjectContentHandler& handler) = default;
+
+ virtual void OnEvent() override;
+
+ inline void SetRecordsEventCallback(const RecordsEventCallback& callback) { m_onRecordsEvent = callback; }
+ inline void SetStatsEventCallback(const StatsEventCallback& callback) { m_onStatsEvent = callback; }
+ inline void SetProgressEventCallback(const ProgressEventCallback& callback) { m_onProgressEvent = callback; }
+ inline void SetContinuationEventCallback(const ContinuationEventCallback& callback) { m_onContinuationEvent = callback; }
+ inline void SetEndEventCallback(const EndEventCallback& callback) { m_onEndEvent = callback; }
+ inline void SetOnErrorCallback(const ErrorCallback& callback) { m_onError = callback; }
+
+ private:
+ void HandleEventInMessage();
+ void HandleErrorInMessage();
+ void MarshallError(const Aws::String& errorCode, const Aws::String& errorMessage);
+
+ RecordsEventCallback m_onRecordsEvent;
+ StatsEventCallback m_onStatsEvent;
+ ProgressEventCallback m_onProgressEvent;
+ ContinuationEventCallback m_onContinuationEvent;
+ EndEventCallback m_onEndEvent;
+ ErrorCallback m_onError;
+ };
+
+namespace SelectObjectContentEventMapper
+{
+ AWS_S3_API SelectObjectContentEventType GetSelectObjectContentEventTypeForName(const Aws::String& name);
+
+ AWS_S3_API Aws::String GetNameForSelectObjectContentEventType(SelectObjectContentEventType value);
+} // namespace SelectObjectContentEventMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectObjectContentRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectObjectContentRequest.h
new file mode 100644
index 00000000000..c10e515adfb
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectObjectContentRequest.h
@@ -0,0 +1,745 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/s3/model/SelectObjectContentHandler.h>
+#include <aws/core/utils/event/EventStreamDecoder.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/ExpressionType.h>
+#include <aws/s3/model/RequestProgress.h>
+#include <aws/s3/model/InputSerialization.h>
+#include <aws/s3/model/OutputSerialization.h>
+#include <aws/s3/model/ScanRange.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Request to filter the contents of an Amazon S3 object based on a simple
+ * Structured Query Language (SQL) statement. In the request, along with the SQL
+ * expression, you must specify a data serialization format (JSON or CSV) of the
+ * object. Amazon S3 uses this to parse object data into records. It returns only
+ * records that match the specified SQL expression. You must also specify the data
+ * serialization format for the response. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html">S3Select
+ * API Documentation</a>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContentRequest">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API SelectObjectContentRequest : public S3Request
+ {
+ public:
+ SelectObjectContentRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "SelectObjectContent"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+ /**
+ * Underlying Event Stream Decoder.
+ */
+ inline Aws::Utils::Event::EventStreamDecoder& GetEventStreamDecoder() { return m_decoder; }
+
+ /**
+ * Underlying Event Stream Handler which is used to define callback functions.
+ */
+ inline const SelectObjectContentHandler& GetEventStreamHandler() const { return m_handler; }
+
+ /**
+ * Underlying Event Stream Handler which is used to define callback functions.
+ */
+ inline void SetEventStreamHandler(const SelectObjectContentHandler& value) { m_handler = value; m_decoder.ResetEventStreamHandler(&m_handler); }
+
+ /**
+ * Underlying Event Stream Handler which is used to define callback functions.
+ */
+ inline SelectObjectContentRequest& WithEventStreamHandler(const SelectObjectContentHandler& value) { SetEventStreamHandler(value); return *this; }
+
+
+ /**
+ * <p>The S3 bucket.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The S3 bucket.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The S3 bucket.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The S3 bucket.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The S3 bucket.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The S3 bucket.</p>
+ */
+ inline SelectObjectContentRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The S3 bucket.</p>
+ */
+ inline SelectObjectContentRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The S3 bucket.</p>
+ */
+ inline SelectObjectContentRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline SelectObjectContentRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline SelectObjectContentRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The object key.</p>
+ */
+ inline SelectObjectContentRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>The SSE Algorithm used to encrypt the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>The SSE Algorithm used to encrypt the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline bool SSECustomerAlgorithmHasBeenSet() const { return m_sSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>The SSE Algorithm used to encrypt the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>The SSE Algorithm used to encrypt the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>The SSE Algorithm used to encrypt the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>The SSE Algorithm used to encrypt the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline SelectObjectContentRequest& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>The SSE Algorithm used to encrypt the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline SelectObjectContentRequest& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>The SSE Algorithm used to encrypt the object. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline SelectObjectContentRequest& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>The SSE Customer Key. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline const Aws::String& GetSSECustomerKey() const{ return m_sSECustomerKey; }
+
+ /**
+ * <p>The SSE Customer Key. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline bool SSECustomerKeyHasBeenSet() const { return m_sSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>The SSE Customer Key. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline void SetSSECustomerKey(const Aws::String& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = value; }
+
+ /**
+ * <p>The SSE Customer Key. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline void SetSSECustomerKey(Aws::String&& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = std::move(value); }
+
+ /**
+ * <p>The SSE Customer Key. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline void SetSSECustomerKey(const char* value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey.assign(value); }
+
+ /**
+ * <p>The SSE Customer Key. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline SelectObjectContentRequest& WithSSECustomerKey(const Aws::String& value) { SetSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>The SSE Customer Key. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline SelectObjectContentRequest& WithSSECustomerKey(Aws::String&& value) { SetSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>The SSE Customer Key. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline SelectObjectContentRequest& WithSSECustomerKey(const char* value) { SetSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>The SSE Customer Key MD5. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>The SSE Customer Key MD5. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline bool SSECustomerKeyMD5HasBeenSet() const { return m_sSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>The SSE Customer Key MD5. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>The SSE Customer Key MD5. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>The SSE Customer Key MD5. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>The SSE Customer Key MD5. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline SelectObjectContentRequest& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>The SSE Customer Key MD5. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline SelectObjectContentRequest& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The SSE Customer Key MD5. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
+ * Encryption (Using Customer-Provided Encryption Keys</a>. </p>
+ */
+ inline SelectObjectContentRequest& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline const Aws::String& GetExpression() const{ return m_expression; }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline bool ExpressionHasBeenSet() const { return m_expressionHasBeenSet; }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline void SetExpression(const Aws::String& value) { m_expressionHasBeenSet = true; m_expression = value; }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline void SetExpression(Aws::String&& value) { m_expressionHasBeenSet = true; m_expression = std::move(value); }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline void SetExpression(const char* value) { m_expressionHasBeenSet = true; m_expression.assign(value); }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline SelectObjectContentRequest& WithExpression(const Aws::String& value) { SetExpression(value); return *this;}
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline SelectObjectContentRequest& WithExpression(Aws::String&& value) { SetExpression(std::move(value)); return *this;}
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline SelectObjectContentRequest& WithExpression(const char* value) { SetExpression(value); return *this;}
+
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline const ExpressionType& GetExpressionType() const{ return m_expressionType; }
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline bool ExpressionTypeHasBeenSet() const { return m_expressionTypeHasBeenSet; }
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline void SetExpressionType(const ExpressionType& value) { m_expressionTypeHasBeenSet = true; m_expressionType = value; }
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline void SetExpressionType(ExpressionType&& value) { m_expressionTypeHasBeenSet = true; m_expressionType = std::move(value); }
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline SelectObjectContentRequest& WithExpressionType(const ExpressionType& value) { SetExpressionType(value); return *this;}
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline SelectObjectContentRequest& WithExpressionType(ExpressionType&& value) { SetExpressionType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies if periodic request progress information should be enabled.</p>
+ */
+ inline const RequestProgress& GetRequestProgress() const{ return m_requestProgress; }
+
+ /**
+ * <p>Specifies if periodic request progress information should be enabled.</p>
+ */
+ inline bool RequestProgressHasBeenSet() const { return m_requestProgressHasBeenSet; }
+
+ /**
+ * <p>Specifies if periodic request progress information should be enabled.</p>
+ */
+ inline void SetRequestProgress(const RequestProgress& value) { m_requestProgressHasBeenSet = true; m_requestProgress = value; }
+
+ /**
+ * <p>Specifies if periodic request progress information should be enabled.</p>
+ */
+ inline void SetRequestProgress(RequestProgress&& value) { m_requestProgressHasBeenSet = true; m_requestProgress = std::move(value); }
+
+ /**
+ * <p>Specifies if periodic request progress information should be enabled.</p>
+ */
+ inline SelectObjectContentRequest& WithRequestProgress(const RequestProgress& value) { SetRequestProgress(value); return *this;}
+
+ /**
+ * <p>Specifies if periodic request progress information should be enabled.</p>
+ */
+ inline SelectObjectContentRequest& WithRequestProgress(RequestProgress&& value) { SetRequestProgress(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Describes the format of the data in the object that is being queried.</p>
+ */
+ inline const InputSerialization& GetInputSerialization() const{ return m_inputSerialization; }
+
+ /**
+ * <p>Describes the format of the data in the object that is being queried.</p>
+ */
+ inline bool InputSerializationHasBeenSet() const { return m_inputSerializationHasBeenSet; }
+
+ /**
+ * <p>Describes the format of the data in the object that is being queried.</p>
+ */
+ inline void SetInputSerialization(const InputSerialization& value) { m_inputSerializationHasBeenSet = true; m_inputSerialization = value; }
+
+ /**
+ * <p>Describes the format of the data in the object that is being queried.</p>
+ */
+ inline void SetInputSerialization(InputSerialization&& value) { m_inputSerializationHasBeenSet = true; m_inputSerialization = std::move(value); }
+
+ /**
+ * <p>Describes the format of the data in the object that is being queried.</p>
+ */
+ inline SelectObjectContentRequest& WithInputSerialization(const InputSerialization& value) { SetInputSerialization(value); return *this;}
+
+ /**
+ * <p>Describes the format of the data in the object that is being queried.</p>
+ */
+ inline SelectObjectContentRequest& WithInputSerialization(InputSerialization&& value) { SetInputSerialization(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Describes the format of the data that you want Amazon S3 to return in
+ * response.</p>
+ */
+ inline const OutputSerialization& GetOutputSerialization() const{ return m_outputSerialization; }
+
+ /**
+ * <p>Describes the format of the data that you want Amazon S3 to return in
+ * response.</p>
+ */
+ inline bool OutputSerializationHasBeenSet() const { return m_outputSerializationHasBeenSet; }
+
+ /**
+ * <p>Describes the format of the data that you want Amazon S3 to return in
+ * response.</p>
+ */
+ inline void SetOutputSerialization(const OutputSerialization& value) { m_outputSerializationHasBeenSet = true; m_outputSerialization = value; }
+
+ /**
+ * <p>Describes the format of the data that you want Amazon S3 to return in
+ * response.</p>
+ */
+ inline void SetOutputSerialization(OutputSerialization&& value) { m_outputSerializationHasBeenSet = true; m_outputSerialization = std::move(value); }
+
+ /**
+ * <p>Describes the format of the data that you want Amazon S3 to return in
+ * response.</p>
+ */
+ inline SelectObjectContentRequest& WithOutputSerialization(const OutputSerialization& value) { SetOutputSerialization(value); return *this;}
+
+ /**
+ * <p>Describes the format of the data that you want Amazon S3 to return in
+ * response.</p>
+ */
+ inline SelectObjectContentRequest& WithOutputSerialization(OutputSerialization&& value) { SetOutputSerialization(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies the byte range of the object to get the records from. A record is
+ * processed when its first byte is contained by the range. This parameter is
+ * optional, but when specified, it must not be empty. See RFC 2616, Section
+ * 14.35.1 about how to specify the start and end of the range.</p> <p>
+ * <code>ScanRange</code>may be used in the following ways:</p> <ul> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;end&gt;100&lt;/end&gt;&lt;/scanrange&gt;</code>
+ * - process only the records starting between the bytes 50 and 100 (inclusive,
+ * counting from zero)</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code> -
+ * process only the records starting after the byte 50</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> -
+ * process only the records within the last 50 bytes of the file.</p> </li> </ul>
+ */
+ inline const ScanRange& GetScanRange() const{ return m_scanRange; }
+
+ /**
+ * <p>Specifies the byte range of the object to get the records from. A record is
+ * processed when its first byte is contained by the range. This parameter is
+ * optional, but when specified, it must not be empty. See RFC 2616, Section
+ * 14.35.1 about how to specify the start and end of the range.</p> <p>
+ * <code>ScanRange</code>may be used in the following ways:</p> <ul> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;end&gt;100&lt;/end&gt;&lt;/scanrange&gt;</code>
+ * - process only the records starting between the bytes 50 and 100 (inclusive,
+ * counting from zero)</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code> -
+ * process only the records starting after the byte 50</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> -
+ * process only the records within the last 50 bytes of the file.</p> </li> </ul>
+ */
+ inline bool ScanRangeHasBeenSet() const { return m_scanRangeHasBeenSet; }
+
+ /**
+ * <p>Specifies the byte range of the object to get the records from. A record is
+ * processed when its first byte is contained by the range. This parameter is
+ * optional, but when specified, it must not be empty. See RFC 2616, Section
+ * 14.35.1 about how to specify the start and end of the range.</p> <p>
+ * <code>ScanRange</code>may be used in the following ways:</p> <ul> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;end&gt;100&lt;/end&gt;&lt;/scanrange&gt;</code>
+ * - process only the records starting between the bytes 50 and 100 (inclusive,
+ * counting from zero)</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code> -
+ * process only the records starting after the byte 50</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> -
+ * process only the records within the last 50 bytes of the file.</p> </li> </ul>
+ */
+ inline void SetScanRange(const ScanRange& value) { m_scanRangeHasBeenSet = true; m_scanRange = value; }
+
+ /**
+ * <p>Specifies the byte range of the object to get the records from. A record is
+ * processed when its first byte is contained by the range. This parameter is
+ * optional, but when specified, it must not be empty. See RFC 2616, Section
+ * 14.35.1 about how to specify the start and end of the range.</p> <p>
+ * <code>ScanRange</code>may be used in the following ways:</p> <ul> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;end&gt;100&lt;/end&gt;&lt;/scanrange&gt;</code>
+ * - process only the records starting between the bytes 50 and 100 (inclusive,
+ * counting from zero)</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code> -
+ * process only the records starting after the byte 50</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> -
+ * process only the records within the last 50 bytes of the file.</p> </li> </ul>
+ */
+ inline void SetScanRange(ScanRange&& value) { m_scanRangeHasBeenSet = true; m_scanRange = std::move(value); }
+
+ /**
+ * <p>Specifies the byte range of the object to get the records from. A record is
+ * processed when its first byte is contained by the range. This parameter is
+ * optional, but when specified, it must not be empty. See RFC 2616, Section
+ * 14.35.1 about how to specify the start and end of the range.</p> <p>
+ * <code>ScanRange</code>may be used in the following ways:</p> <ul> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;end&gt;100&lt;/end&gt;&lt;/scanrange&gt;</code>
+ * - process only the records starting between the bytes 50 and 100 (inclusive,
+ * counting from zero)</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code> -
+ * process only the records starting after the byte 50</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> -
+ * process only the records within the last 50 bytes of the file.</p> </li> </ul>
+ */
+ inline SelectObjectContentRequest& WithScanRange(const ScanRange& value) { SetScanRange(value); return *this;}
+
+ /**
+ * <p>Specifies the byte range of the object to get the records from. A record is
+ * processed when its first byte is contained by the range. This parameter is
+ * optional, but when specified, it must not be empty. See RFC 2616, Section
+ * 14.35.1 about how to specify the start and end of the range.</p> <p>
+ * <code>ScanRange</code>may be used in the following ways:</p> <ul> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;end&gt;100&lt;/end&gt;&lt;/scanrange&gt;</code>
+ * - process only the records starting between the bytes 50 and 100 (inclusive,
+ * counting from zero)</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;start&gt;50&lt;/start&gt;&lt;/scanrange&gt;</code> -
+ * process only the records starting after the byte 50</p> </li> <li> <p>
+ * <code>&lt;scanrange&gt;&lt;end&gt;50&lt;/end&gt;&lt;/scanrange&gt;</code> -
+ * process only the records within the last 50 bytes of the file.</p> </li> </ul>
+ */
+ inline SelectObjectContentRequest& WithScanRange(ScanRange&& value) { SetScanRange(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline SelectObjectContentRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline SelectObjectContentRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline SelectObjectContentRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline SelectObjectContentRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline SelectObjectContentRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline SelectObjectContentRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline SelectObjectContentRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline SelectObjectContentRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline SelectObjectContentRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline SelectObjectContentRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline SelectObjectContentRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline SelectObjectContentRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_sSECustomerAlgorithm;
+ bool m_sSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_sSECustomerKey;
+ bool m_sSECustomerKeyHasBeenSet;
+
+ Aws::String m_sSECustomerKeyMD5;
+ bool m_sSECustomerKeyMD5HasBeenSet;
+
+ Aws::String m_expression;
+ bool m_expressionHasBeenSet;
+
+ ExpressionType m_expressionType;
+ bool m_expressionTypeHasBeenSet;
+
+ RequestProgress m_requestProgress;
+ bool m_requestProgressHasBeenSet;
+
+ InputSerialization m_inputSerialization;
+ bool m_inputSerializationHasBeenSet;
+
+ OutputSerialization m_outputSerialization;
+ bool m_outputSerializationHasBeenSet;
+
+ ScanRange m_scanRange;
+ bool m_scanRangeHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ Aws::Utils::Event::EventStreamDecoder m_decoder;
+ SelectObjectContentHandler m_handler;
+
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectParameters.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectParameters.h
new file mode 100644
index 00000000000..b9ddc3073df
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SelectParameters.h
@@ -0,0 +1,193 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/InputSerialization.h>
+#include <aws/s3/model/ExpressionType.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/OutputSerialization.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes the parameters for Select job types.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectParameters">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API SelectParameters
+ {
+ public:
+ SelectParameters();
+ SelectParameters(const Aws::Utils::Xml::XmlNode& xmlNode);
+ SelectParameters& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Describes the serialization format of the object.</p>
+ */
+ inline const InputSerialization& GetInputSerialization() const{ return m_inputSerialization; }
+
+ /**
+ * <p>Describes the serialization format of the object.</p>
+ */
+ inline bool InputSerializationHasBeenSet() const { return m_inputSerializationHasBeenSet; }
+
+ /**
+ * <p>Describes the serialization format of the object.</p>
+ */
+ inline void SetInputSerialization(const InputSerialization& value) { m_inputSerializationHasBeenSet = true; m_inputSerialization = value; }
+
+ /**
+ * <p>Describes the serialization format of the object.</p>
+ */
+ inline void SetInputSerialization(InputSerialization&& value) { m_inputSerializationHasBeenSet = true; m_inputSerialization = std::move(value); }
+
+ /**
+ * <p>Describes the serialization format of the object.</p>
+ */
+ inline SelectParameters& WithInputSerialization(const InputSerialization& value) { SetInputSerialization(value); return *this;}
+
+ /**
+ * <p>Describes the serialization format of the object.</p>
+ */
+ inline SelectParameters& WithInputSerialization(InputSerialization&& value) { SetInputSerialization(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline const ExpressionType& GetExpressionType() const{ return m_expressionType; }
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline bool ExpressionTypeHasBeenSet() const { return m_expressionTypeHasBeenSet; }
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline void SetExpressionType(const ExpressionType& value) { m_expressionTypeHasBeenSet = true; m_expressionType = value; }
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline void SetExpressionType(ExpressionType&& value) { m_expressionTypeHasBeenSet = true; m_expressionType = std::move(value); }
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline SelectParameters& WithExpressionType(const ExpressionType& value) { SetExpressionType(value); return *this;}
+
+ /**
+ * <p>The type of the provided expression (for example, SQL).</p>
+ */
+ inline SelectParameters& WithExpressionType(ExpressionType&& value) { SetExpressionType(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline const Aws::String& GetExpression() const{ return m_expression; }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline bool ExpressionHasBeenSet() const { return m_expressionHasBeenSet; }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline void SetExpression(const Aws::String& value) { m_expressionHasBeenSet = true; m_expression = value; }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline void SetExpression(Aws::String&& value) { m_expressionHasBeenSet = true; m_expression = std::move(value); }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline void SetExpression(const char* value) { m_expressionHasBeenSet = true; m_expression.assign(value); }
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline SelectParameters& WithExpression(const Aws::String& value) { SetExpression(value); return *this;}
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline SelectParameters& WithExpression(Aws::String&& value) { SetExpression(std::move(value)); return *this;}
+
+ /**
+ * <p>The expression that is used to query the object.</p>
+ */
+ inline SelectParameters& WithExpression(const char* value) { SetExpression(value); return *this;}
+
+
+ /**
+ * <p>Describes how the results of the Select job are serialized.</p>
+ */
+ inline const OutputSerialization& GetOutputSerialization() const{ return m_outputSerialization; }
+
+ /**
+ * <p>Describes how the results of the Select job are serialized.</p>
+ */
+ inline bool OutputSerializationHasBeenSet() const { return m_outputSerializationHasBeenSet; }
+
+ /**
+ * <p>Describes how the results of the Select job are serialized.</p>
+ */
+ inline void SetOutputSerialization(const OutputSerialization& value) { m_outputSerializationHasBeenSet = true; m_outputSerialization = value; }
+
+ /**
+ * <p>Describes how the results of the Select job are serialized.</p>
+ */
+ inline void SetOutputSerialization(OutputSerialization&& value) { m_outputSerializationHasBeenSet = true; m_outputSerialization = std::move(value); }
+
+ /**
+ * <p>Describes how the results of the Select job are serialized.</p>
+ */
+ inline SelectParameters& WithOutputSerialization(const OutputSerialization& value) { SetOutputSerialization(value); return *this;}
+
+ /**
+ * <p>Describes how the results of the Select job are serialized.</p>
+ */
+ inline SelectParameters& WithOutputSerialization(OutputSerialization&& value) { SetOutputSerialization(std::move(value)); return *this;}
+
+ private:
+
+ InputSerialization m_inputSerialization;
+ bool m_inputSerializationHasBeenSet;
+
+ ExpressionType m_expressionType;
+ bool m_expressionTypeHasBeenSet;
+
+ Aws::String m_expression;
+ bool m_expressionHasBeenSet;
+
+ OutputSerialization m_outputSerialization;
+ bool m_outputSerializationHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryption.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryption.h
new file mode 100644
index 00000000000..24c5073561f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryption.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class ServerSideEncryption
+ {
+ NOT_SET,
+ AES256,
+ aws_kms
+ };
+
+namespace ServerSideEncryptionMapper
+{
+AWS_S3_API ServerSideEncryption GetServerSideEncryptionForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForServerSideEncryption(ServerSideEncryption value);
+} // namespace ServerSideEncryptionMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionByDefault.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionByDefault.h
new file mode 100644
index 00000000000..273cb34fbe9
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionByDefault.h
@@ -0,0 +1,248 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes the default server-side encryption to apply to new objects in the
+ * bucket. If a PUT Object request doesn't specify any server-side encryption, this
+ * default encryption will be applied. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html">PUT
+ * Bucket encryption</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ServerSideEncryptionByDefault">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ServerSideEncryptionByDefault
+ {
+ public:
+ ServerSideEncryptionByDefault();
+ ServerSideEncryptionByDefault(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ServerSideEncryptionByDefault& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Server-side encryption algorithm to use for the default encryption.</p>
+ */
+ inline const ServerSideEncryption& GetSSEAlgorithm() const{ return m_sSEAlgorithm; }
+
+ /**
+ * <p>Server-side encryption algorithm to use for the default encryption.</p>
+ */
+ inline bool SSEAlgorithmHasBeenSet() const { return m_sSEAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Server-side encryption algorithm to use for the default encryption.</p>
+ */
+ inline void SetSSEAlgorithm(const ServerSideEncryption& value) { m_sSEAlgorithmHasBeenSet = true; m_sSEAlgorithm = value; }
+
+ /**
+ * <p>Server-side encryption algorithm to use for the default encryption.</p>
+ */
+ inline void SetSSEAlgorithm(ServerSideEncryption&& value) { m_sSEAlgorithmHasBeenSet = true; m_sSEAlgorithm = std::move(value); }
+
+ /**
+ * <p>Server-side encryption algorithm to use for the default encryption.</p>
+ */
+ inline ServerSideEncryptionByDefault& WithSSEAlgorithm(const ServerSideEncryption& value) { SetSSEAlgorithm(value); return *this;}
+
+ /**
+ * <p>Server-side encryption algorithm to use for the default encryption.</p>
+ */
+ inline ServerSideEncryptionByDefault& WithSSEAlgorithm(ServerSideEncryption&& value) { SetSSEAlgorithm(std::move(value)); return *this;}
+
+
+ /**
+ * <p>AWS Key Management Service (KMS) customer master key ID to use for the
+ * default encryption. This parameter is allowed if and only if
+ * <code>SSEAlgorithm</code> is set to <code>aws:kms</code>.</p> <p>You can specify
+ * the key ID or the Amazon Resource Name (ARN) of the CMK. However, if you are
+ * using encryption with cross-account operations, you must use a fully qualified
+ * CMK ARN. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy">Using
+ * encryption for cross-account operations</a>. </p> <p> <b>For example:</b> </p>
+ * <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p>
+ * </li> <li> <p>Key ARN:
+ * <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>
+ * </p> </li> </ul> <p>Amazon S3 only supports symmetric CMKs and not
+ * asymmetric CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetKMSMasterKeyID() const{ return m_kMSMasterKeyID; }
+
+ /**
+ * <p>AWS Key Management Service (KMS) customer master key ID to use for the
+ * default encryption. This parameter is allowed if and only if
+ * <code>SSEAlgorithm</code> is set to <code>aws:kms</code>.</p> <p>You can specify
+ * the key ID or the Amazon Resource Name (ARN) of the CMK. However, if you are
+ * using encryption with cross-account operations, you must use a fully qualified
+ * CMK ARN. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy">Using
+ * encryption for cross-account operations</a>. </p> <p> <b>For example:</b> </p>
+ * <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p>
+ * </li> <li> <p>Key ARN:
+ * <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>
+ * </p> </li> </ul> <p>Amazon S3 only supports symmetric CMKs and not
+ * asymmetric CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool KMSMasterKeyIDHasBeenSet() const { return m_kMSMasterKeyIDHasBeenSet; }
+
+ /**
+ * <p>AWS Key Management Service (KMS) customer master key ID to use for the
+ * default encryption. This parameter is allowed if and only if
+ * <code>SSEAlgorithm</code> is set to <code>aws:kms</code>.</p> <p>You can specify
+ * the key ID or the Amazon Resource Name (ARN) of the CMK. However, if you are
+ * using encryption with cross-account operations, you must use a fully qualified
+ * CMK ARN. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy">Using
+ * encryption for cross-account operations</a>. </p> <p> <b>For example:</b> </p>
+ * <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p>
+ * </li> <li> <p>Key ARN:
+ * <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>
+ * </p> </li> </ul> <p>Amazon S3 only supports symmetric CMKs and not
+ * asymmetric CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetKMSMasterKeyID(const Aws::String& value) { m_kMSMasterKeyIDHasBeenSet = true; m_kMSMasterKeyID = value; }
+
+ /**
+ * <p>AWS Key Management Service (KMS) customer master key ID to use for the
+ * default encryption. This parameter is allowed if and only if
+ * <code>SSEAlgorithm</code> is set to <code>aws:kms</code>.</p> <p>You can specify
+ * the key ID or the Amazon Resource Name (ARN) of the CMK. However, if you are
+ * using encryption with cross-account operations, you must use a fully qualified
+ * CMK ARN. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy">Using
+ * encryption for cross-account operations</a>. </p> <p> <b>For example:</b> </p>
+ * <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p>
+ * </li> <li> <p>Key ARN:
+ * <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>
+ * </p> </li> </ul> <p>Amazon S3 only supports symmetric CMKs and not
+ * asymmetric CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetKMSMasterKeyID(Aws::String&& value) { m_kMSMasterKeyIDHasBeenSet = true; m_kMSMasterKeyID = std::move(value); }
+
+ /**
+ * <p>AWS Key Management Service (KMS) customer master key ID to use for the
+ * default encryption. This parameter is allowed if and only if
+ * <code>SSEAlgorithm</code> is set to <code>aws:kms</code>.</p> <p>You can specify
+ * the key ID or the Amazon Resource Name (ARN) of the CMK. However, if you are
+ * using encryption with cross-account operations, you must use a fully qualified
+ * CMK ARN. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy">Using
+ * encryption for cross-account operations</a>. </p> <p> <b>For example:</b> </p>
+ * <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p>
+ * </li> <li> <p>Key ARN:
+ * <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>
+ * </p> </li> </ul> <p>Amazon S3 only supports symmetric CMKs and not
+ * asymmetric CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetKMSMasterKeyID(const char* value) { m_kMSMasterKeyIDHasBeenSet = true; m_kMSMasterKeyID.assign(value); }
+
+ /**
+ * <p>AWS Key Management Service (KMS) customer master key ID to use for the
+ * default encryption. This parameter is allowed if and only if
+ * <code>SSEAlgorithm</code> is set to <code>aws:kms</code>.</p> <p>You can specify
+ * the key ID or the Amazon Resource Name (ARN) of the CMK. However, if you are
+ * using encryption with cross-account operations, you must use a fully qualified
+ * CMK ARN. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy">Using
+ * encryption for cross-account operations</a>. </p> <p> <b>For example:</b> </p>
+ * <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p>
+ * </li> <li> <p>Key ARN:
+ * <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>
+ * </p> </li> </ul> <p>Amazon S3 only supports symmetric CMKs and not
+ * asymmetric CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline ServerSideEncryptionByDefault& WithKMSMasterKeyID(const Aws::String& value) { SetKMSMasterKeyID(value); return *this;}
+
+ /**
+ * <p>AWS Key Management Service (KMS) customer master key ID to use for the
+ * default encryption. This parameter is allowed if and only if
+ * <code>SSEAlgorithm</code> is set to <code>aws:kms</code>.</p> <p>You can specify
+ * the key ID or the Amazon Resource Name (ARN) of the CMK. However, if you are
+ * using encryption with cross-account operations, you must use a fully qualified
+ * CMK ARN. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy">Using
+ * encryption for cross-account operations</a>. </p> <p> <b>For example:</b> </p>
+ * <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p>
+ * </li> <li> <p>Key ARN:
+ * <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>
+ * </p> </li> </ul> <p>Amazon S3 only supports symmetric CMKs and not
+ * asymmetric CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline ServerSideEncryptionByDefault& WithKMSMasterKeyID(Aws::String&& value) { SetKMSMasterKeyID(std::move(value)); return *this;}
+
+ /**
+ * <p>AWS Key Management Service (KMS) customer master key ID to use for the
+ * default encryption. This parameter is allowed if and only if
+ * <code>SSEAlgorithm</code> is set to <code>aws:kms</code>.</p> <p>You can specify
+ * the key ID or the Amazon Resource Name (ARN) of the CMK. However, if you are
+ * using encryption with cross-account operations, you must use a fully qualified
+ * CMK ARN. For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy">Using
+ * encryption for cross-account operations</a>. </p> <p> <b>For example:</b> </p>
+ * <ul> <li> <p>Key ID: <code>1234abcd-12ab-34cd-56ef-1234567890ab</code> </p>
+ * </li> <li> <p>Key ARN:
+ * <code>arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>
+ * </p> </li> </ul> <p>Amazon S3 only supports symmetric CMKs and not
+ * asymmetric CMKs. For more information, see <a
+ * href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using
+ * Symmetric and Asymmetric Keys</a> in the <i>AWS Key Management Service Developer
+ * Guide</i>.</p>
+ */
+ inline ServerSideEncryptionByDefault& WithKMSMasterKeyID(const char* value) { SetKMSMasterKeyID(value); return *this;}
+
+ private:
+
+ ServerSideEncryption m_sSEAlgorithm;
+ bool m_sSEAlgorithmHasBeenSet;
+
+ Aws::String m_kMSMasterKeyID;
+ bool m_kMSMasterKeyIDHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionConfiguration.h
new file mode 100644
index 00000000000..7b96441c897
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionConfiguration.h
@@ -0,0 +1,98 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/ServerSideEncryptionRule.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the default server-side-encryption configuration.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ServerSideEncryptionConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ServerSideEncryptionConfiguration
+ {
+ public:
+ ServerSideEncryptionConfiguration();
+ ServerSideEncryptionConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ServerSideEncryptionConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Container for information about a particular server-side encryption
+ * configuration rule.</p>
+ */
+ inline const Aws::Vector<ServerSideEncryptionRule>& GetRules() const{ return m_rules; }
+
+ /**
+ * <p>Container for information about a particular server-side encryption
+ * configuration rule.</p>
+ */
+ inline bool RulesHasBeenSet() const { return m_rulesHasBeenSet; }
+
+ /**
+ * <p>Container for information about a particular server-side encryption
+ * configuration rule.</p>
+ */
+ inline void SetRules(const Aws::Vector<ServerSideEncryptionRule>& value) { m_rulesHasBeenSet = true; m_rules = value; }
+
+ /**
+ * <p>Container for information about a particular server-side encryption
+ * configuration rule.</p>
+ */
+ inline void SetRules(Aws::Vector<ServerSideEncryptionRule>&& value) { m_rulesHasBeenSet = true; m_rules = std::move(value); }
+
+ /**
+ * <p>Container for information about a particular server-side encryption
+ * configuration rule.</p>
+ */
+ inline ServerSideEncryptionConfiguration& WithRules(const Aws::Vector<ServerSideEncryptionRule>& value) { SetRules(value); return *this;}
+
+ /**
+ * <p>Container for information about a particular server-side encryption
+ * configuration rule.</p>
+ */
+ inline ServerSideEncryptionConfiguration& WithRules(Aws::Vector<ServerSideEncryptionRule>&& value) { SetRules(std::move(value)); return *this;}
+
+ /**
+ * <p>Container for information about a particular server-side encryption
+ * configuration rule.</p>
+ */
+ inline ServerSideEncryptionConfiguration& AddRules(const ServerSideEncryptionRule& value) { m_rulesHasBeenSet = true; m_rules.push_back(value); return *this; }
+
+ /**
+ * <p>Container for information about a particular server-side encryption
+ * configuration rule.</p>
+ */
+ inline ServerSideEncryptionConfiguration& AddRules(ServerSideEncryptionRule&& value) { m_rulesHasBeenSet = true; m_rules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<ServerSideEncryptionRule> m_rules;
+ bool m_rulesHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionRule.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionRule.h
new file mode 100644
index 00000000000..75505b8a520
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionRule.h
@@ -0,0 +1,139 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ServerSideEncryptionByDefault.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies the default server-side encryption configuration.</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ServerSideEncryptionRule">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API ServerSideEncryptionRule
+ {
+ public:
+ ServerSideEncryptionRule();
+ ServerSideEncryptionRule(const Aws::Utils::Xml::XmlNode& xmlNode);
+ ServerSideEncryptionRule& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies the default server-side encryption to apply to new objects in the
+ * bucket. If a PUT Object request doesn't specify any server-side encryption, this
+ * default encryption will be applied.</p>
+ */
+ inline const ServerSideEncryptionByDefault& GetApplyServerSideEncryptionByDefault() const{ return m_applyServerSideEncryptionByDefault; }
+
+ /**
+ * <p>Specifies the default server-side encryption to apply to new objects in the
+ * bucket. If a PUT Object request doesn't specify any server-side encryption, this
+ * default encryption will be applied.</p>
+ */
+ inline bool ApplyServerSideEncryptionByDefaultHasBeenSet() const { return m_applyServerSideEncryptionByDefaultHasBeenSet; }
+
+ /**
+ * <p>Specifies the default server-side encryption to apply to new objects in the
+ * bucket. If a PUT Object request doesn't specify any server-side encryption, this
+ * default encryption will be applied.</p>
+ */
+ inline void SetApplyServerSideEncryptionByDefault(const ServerSideEncryptionByDefault& value) { m_applyServerSideEncryptionByDefaultHasBeenSet = true; m_applyServerSideEncryptionByDefault = value; }
+
+ /**
+ * <p>Specifies the default server-side encryption to apply to new objects in the
+ * bucket. If a PUT Object request doesn't specify any server-side encryption, this
+ * default encryption will be applied.</p>
+ */
+ inline void SetApplyServerSideEncryptionByDefault(ServerSideEncryptionByDefault&& value) { m_applyServerSideEncryptionByDefaultHasBeenSet = true; m_applyServerSideEncryptionByDefault = std::move(value); }
+
+ /**
+ * <p>Specifies the default server-side encryption to apply to new objects in the
+ * bucket. If a PUT Object request doesn't specify any server-side encryption, this
+ * default encryption will be applied.</p>
+ */
+ inline ServerSideEncryptionRule& WithApplyServerSideEncryptionByDefault(const ServerSideEncryptionByDefault& value) { SetApplyServerSideEncryptionByDefault(value); return *this;}
+
+ /**
+ * <p>Specifies the default server-side encryption to apply to new objects in the
+ * bucket. If a PUT Object request doesn't specify any server-side encryption, this
+ * default encryption will be applied.</p>
+ */
+ inline ServerSideEncryptionRule& WithApplyServerSideEncryptionByDefault(ServerSideEncryptionByDefault&& value) { SetApplyServerSideEncryptionByDefault(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key with server-side
+ * encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects
+ * are not affected. Setting the <code>BucketKeyEnabled</code> element to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key. By default, S3
+ * Bucket Key is not enabled.</p> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html">Amazon S3
+ * Bucket Keys</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key with server-side
+ * encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects
+ * are not affected. Setting the <code>BucketKeyEnabled</code> element to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key. By default, S3
+ * Bucket Key is not enabled.</p> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html">Amazon S3
+ * Bucket Keys</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key with server-side
+ * encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects
+ * are not affected. Setting the <code>BucketKeyEnabled</code> element to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key. By default, S3
+ * Bucket Key is not enabled.</p> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html">Amazon S3
+ * Bucket Keys</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabledHasBeenSet = true; m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 should use an S3 Bucket Key with server-side
+ * encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects
+ * are not affected. Setting the <code>BucketKeyEnabled</code> element to
+ * <code>true</code> causes Amazon S3 to use an S3 Bucket Key. By default, S3
+ * Bucket Key is not enabled.</p> <p>For more information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html">Amazon S3
+ * Bucket Keys</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline ServerSideEncryptionRule& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+ private:
+
+ ServerSideEncryptionByDefault m_applyServerSideEncryptionByDefault;
+ bool m_applyServerSideEncryptionByDefaultHasBeenSet;
+
+ bool m_bucketKeyEnabled;
+ bool m_bucketKeyEnabledHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SourceSelectionCriteria.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SourceSelectionCriteria.h
new file mode 100644
index 00000000000..0395f9089bf
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SourceSelectionCriteria.h
@@ -0,0 +1,172 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/SseKmsEncryptedObjects.h>
+#include <aws/s3/model/ReplicaModifications.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container that describes additional filters for identifying the source
+ * objects that you want to replicate. You can choose to enable or disable the
+ * replication of these objects. Currently, Amazon S3 supports only the filter that
+ * you can specify for objects created with server-side encryption using a customer
+ * master key (CMK) stored in AWS Key Management Service (SSE-KMS).</p><p><h3>See
+ * Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SourceSelectionCriteria">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API SourceSelectionCriteria
+ {
+ public:
+ SourceSelectionCriteria();
+ SourceSelectionCriteria(const Aws::Utils::Xml::XmlNode& xmlNode);
+ SourceSelectionCriteria& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p> A container for filter information for the selection of Amazon S3 objects
+ * encrypted with AWS KMS. If you include <code>SourceSelectionCriteria</code> in
+ * the replication configuration, this element is required. </p>
+ */
+ inline const SseKmsEncryptedObjects& GetSseKmsEncryptedObjects() const{ return m_sseKmsEncryptedObjects; }
+
+ /**
+ * <p> A container for filter information for the selection of Amazon S3 objects
+ * encrypted with AWS KMS. If you include <code>SourceSelectionCriteria</code> in
+ * the replication configuration, this element is required. </p>
+ */
+ inline bool SseKmsEncryptedObjectsHasBeenSet() const { return m_sseKmsEncryptedObjectsHasBeenSet; }
+
+ /**
+ * <p> A container for filter information for the selection of Amazon S3 objects
+ * encrypted with AWS KMS. If you include <code>SourceSelectionCriteria</code> in
+ * the replication configuration, this element is required. </p>
+ */
+ inline void SetSseKmsEncryptedObjects(const SseKmsEncryptedObjects& value) { m_sseKmsEncryptedObjectsHasBeenSet = true; m_sseKmsEncryptedObjects = value; }
+
+ /**
+ * <p> A container for filter information for the selection of Amazon S3 objects
+ * encrypted with AWS KMS. If you include <code>SourceSelectionCriteria</code> in
+ * the replication configuration, this element is required. </p>
+ */
+ inline void SetSseKmsEncryptedObjects(SseKmsEncryptedObjects&& value) { m_sseKmsEncryptedObjectsHasBeenSet = true; m_sseKmsEncryptedObjects = std::move(value); }
+
+ /**
+ * <p> A container for filter information for the selection of Amazon S3 objects
+ * encrypted with AWS KMS. If you include <code>SourceSelectionCriteria</code> in
+ * the replication configuration, this element is required. </p>
+ */
+ inline SourceSelectionCriteria& WithSseKmsEncryptedObjects(const SseKmsEncryptedObjects& value) { SetSseKmsEncryptedObjects(value); return *this;}
+
+ /**
+ * <p> A container for filter information for the selection of Amazon S3 objects
+ * encrypted with AWS KMS. If you include <code>SourceSelectionCriteria</code> in
+ * the replication configuration, this element is required. </p>
+ */
+ inline SourceSelectionCriteria& WithSseKmsEncryptedObjects(SseKmsEncryptedObjects&& value) { SetSseKmsEncryptedObjects(std::move(value)); return *this;}
+
+
+ /**
+ * <p>A filter that you can specify for selections for modifications on replicas.
+ * Amazon S3 doesn't replicate replica modifications by default. In the latest
+ * version of replication configuration (when <code>Filter</code> is specified),
+ * you can specify this element and set the status to <code>Enabled</code> to
+ * replicate modifications on replicas. </p> <p> If you don't specify the
+ * <code>Filter</code> element, Amazon S3 assumes that the replication
+ * configuration is the earlier version, V1. In the earlier version, this element
+ * is not allowed</p>
+ */
+ inline const ReplicaModifications& GetReplicaModifications() const{ return m_replicaModifications; }
+
+ /**
+ * <p>A filter that you can specify for selections for modifications on replicas.
+ * Amazon S3 doesn't replicate replica modifications by default. In the latest
+ * version of replication configuration (when <code>Filter</code> is specified),
+ * you can specify this element and set the status to <code>Enabled</code> to
+ * replicate modifications on replicas. </p> <p> If you don't specify the
+ * <code>Filter</code> element, Amazon S3 assumes that the replication
+ * configuration is the earlier version, V1. In the earlier version, this element
+ * is not allowed</p>
+ */
+ inline bool ReplicaModificationsHasBeenSet() const { return m_replicaModificationsHasBeenSet; }
+
+ /**
+ * <p>A filter that you can specify for selections for modifications on replicas.
+ * Amazon S3 doesn't replicate replica modifications by default. In the latest
+ * version of replication configuration (when <code>Filter</code> is specified),
+ * you can specify this element and set the status to <code>Enabled</code> to
+ * replicate modifications on replicas. </p> <p> If you don't specify the
+ * <code>Filter</code> element, Amazon S3 assumes that the replication
+ * configuration is the earlier version, V1. In the earlier version, this element
+ * is not allowed</p>
+ */
+ inline void SetReplicaModifications(const ReplicaModifications& value) { m_replicaModificationsHasBeenSet = true; m_replicaModifications = value; }
+
+ /**
+ * <p>A filter that you can specify for selections for modifications on replicas.
+ * Amazon S3 doesn't replicate replica modifications by default. In the latest
+ * version of replication configuration (when <code>Filter</code> is specified),
+ * you can specify this element and set the status to <code>Enabled</code> to
+ * replicate modifications on replicas. </p> <p> If you don't specify the
+ * <code>Filter</code> element, Amazon S3 assumes that the replication
+ * configuration is the earlier version, V1. In the earlier version, this element
+ * is not allowed</p>
+ */
+ inline void SetReplicaModifications(ReplicaModifications&& value) { m_replicaModificationsHasBeenSet = true; m_replicaModifications = std::move(value); }
+
+ /**
+ * <p>A filter that you can specify for selections for modifications on replicas.
+ * Amazon S3 doesn't replicate replica modifications by default. In the latest
+ * version of replication configuration (when <code>Filter</code> is specified),
+ * you can specify this element and set the status to <code>Enabled</code> to
+ * replicate modifications on replicas. </p> <p> If you don't specify the
+ * <code>Filter</code> element, Amazon S3 assumes that the replication
+ * configuration is the earlier version, V1. In the earlier version, this element
+ * is not allowed</p>
+ */
+ inline SourceSelectionCriteria& WithReplicaModifications(const ReplicaModifications& value) { SetReplicaModifications(value); return *this;}
+
+ /**
+ * <p>A filter that you can specify for selections for modifications on replicas.
+ * Amazon S3 doesn't replicate replica modifications by default. In the latest
+ * version of replication configuration (when <code>Filter</code> is specified),
+ * you can specify this element and set the status to <code>Enabled</code> to
+ * replicate modifications on replicas. </p> <p> If you don't specify the
+ * <code>Filter</code> element, Amazon S3 assumes that the replication
+ * configuration is the earlier version, V1. In the earlier version, this element
+ * is not allowed</p>
+ */
+ inline SourceSelectionCriteria& WithReplicaModifications(ReplicaModifications&& value) { SetReplicaModifications(std::move(value)); return *this;}
+
+ private:
+
+ SseKmsEncryptedObjects m_sseKmsEncryptedObjects;
+ bool m_sseKmsEncryptedObjectsHasBeenSet;
+
+ ReplicaModifications m_replicaModifications;
+ bool m_replicaModificationsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SseKmsEncryptedObjects.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SseKmsEncryptedObjects.h
new file mode 100644
index 00000000000..451d3b5e697
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SseKmsEncryptedObjects.h
@@ -0,0 +1,91 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/SseKmsEncryptedObjectsStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for filter information for the selection of S3 objects encrypted
+ * with AWS KMS.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SseKmsEncryptedObjects">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API SseKmsEncryptedObjects
+ {
+ public:
+ SseKmsEncryptedObjects();
+ SseKmsEncryptedObjects(const Aws::Utils::Xml::XmlNode& xmlNode);
+ SseKmsEncryptedObjects& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates objects created with server-side
+ * encryption using a customer master key (CMK) stored in AWS Key Management
+ * Service.</p>
+ */
+ inline const SseKmsEncryptedObjectsStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates objects created with server-side
+ * encryption using a customer master key (CMK) stored in AWS Key Management
+ * Service.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates objects created with server-side
+ * encryption using a customer master key (CMK) stored in AWS Key Management
+ * Service.</p>
+ */
+ inline void SetStatus(const SseKmsEncryptedObjectsStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates objects created with server-side
+ * encryption using a customer master key (CMK) stored in AWS Key Management
+ * Service.</p>
+ */
+ inline void SetStatus(SseKmsEncryptedObjectsStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates objects created with server-side
+ * encryption using a customer master key (CMK) stored in AWS Key Management
+ * Service.</p>
+ */
+ inline SseKmsEncryptedObjects& WithStatus(const SseKmsEncryptedObjectsStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>Specifies whether Amazon S3 replicates objects created with server-side
+ * encryption using a customer master key (CMK) stored in AWS Key Management
+ * Service.</p>
+ */
+ inline SseKmsEncryptedObjects& WithStatus(SseKmsEncryptedObjectsStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+ private:
+
+ SseKmsEncryptedObjectsStatus m_status;
+ bool m_statusHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SseKmsEncryptedObjectsStatus.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SseKmsEncryptedObjectsStatus.h
new file mode 100644
index 00000000000..c7790bf7030
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/SseKmsEncryptedObjectsStatus.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class SseKmsEncryptedObjectsStatus
+ {
+ NOT_SET,
+ Enabled,
+ Disabled
+ };
+
+namespace SseKmsEncryptedObjectsStatusMapper
+{
+AWS_S3_API SseKmsEncryptedObjectsStatus GetSseKmsEncryptedObjectsStatusForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForSseKmsEncryptedObjectsStatus(SseKmsEncryptedObjectsStatus value);
+} // namespace SseKmsEncryptedObjectsStatusMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Stats.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Stats.h
new file mode 100644
index 00000000000..fd077b88721
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Stats.h
@@ -0,0 +1,114 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for the stats details.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Stats">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Stats
+ {
+ public:
+ Stats();
+ Stats(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Stats& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The total number of object bytes scanned.</p>
+ */
+ inline long long GetBytesScanned() const{ return m_bytesScanned; }
+
+ /**
+ * <p>The total number of object bytes scanned.</p>
+ */
+ inline bool BytesScannedHasBeenSet() const { return m_bytesScannedHasBeenSet; }
+
+ /**
+ * <p>The total number of object bytes scanned.</p>
+ */
+ inline void SetBytesScanned(long long value) { m_bytesScannedHasBeenSet = true; m_bytesScanned = value; }
+
+ /**
+ * <p>The total number of object bytes scanned.</p>
+ */
+ inline Stats& WithBytesScanned(long long value) { SetBytesScanned(value); return *this;}
+
+
+ /**
+ * <p>The total number of uncompressed object bytes processed.</p>
+ */
+ inline long long GetBytesProcessed() const{ return m_bytesProcessed; }
+
+ /**
+ * <p>The total number of uncompressed object bytes processed.</p>
+ */
+ inline bool BytesProcessedHasBeenSet() const { return m_bytesProcessedHasBeenSet; }
+
+ /**
+ * <p>The total number of uncompressed object bytes processed.</p>
+ */
+ inline void SetBytesProcessed(long long value) { m_bytesProcessedHasBeenSet = true; m_bytesProcessed = value; }
+
+ /**
+ * <p>The total number of uncompressed object bytes processed.</p>
+ */
+ inline Stats& WithBytesProcessed(long long value) { SetBytesProcessed(value); return *this;}
+
+
+ /**
+ * <p>The total number of bytes of records payload data returned.</p>
+ */
+ inline long long GetBytesReturned() const{ return m_bytesReturned; }
+
+ /**
+ * <p>The total number of bytes of records payload data returned.</p>
+ */
+ inline bool BytesReturnedHasBeenSet() const { return m_bytesReturnedHasBeenSet; }
+
+ /**
+ * <p>The total number of bytes of records payload data returned.</p>
+ */
+ inline void SetBytesReturned(long long value) { m_bytesReturnedHasBeenSet = true; m_bytesReturned = value; }
+
+ /**
+ * <p>The total number of bytes of records payload data returned.</p>
+ */
+ inline Stats& WithBytesReturned(long long value) { SetBytesReturned(value); return *this;}
+
+ private:
+
+ long long m_bytesScanned;
+ bool m_bytesScannedHasBeenSet;
+
+ long long m_bytesProcessed;
+ bool m_bytesProcessedHasBeenSet;
+
+ long long m_bytesReturned;
+ bool m_bytesReturnedHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StatsEvent.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StatsEvent.h
new file mode 100644
index 00000000000..02674cafca2
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StatsEvent.h
@@ -0,0 +1,78 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Stats.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for the Stats Event.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/StatsEvent">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API StatsEvent
+ {
+ public:
+ StatsEvent();
+ StatsEvent(const Aws::Utils::Xml::XmlNode& xmlNode);
+ StatsEvent& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The Stats event details.</p>
+ */
+ inline const Stats& GetDetails() const{ return m_details; }
+
+ /**
+ * <p>The Stats event details.</p>
+ */
+ inline bool DetailsHasBeenSet() const { return m_detailsHasBeenSet; }
+
+ /**
+ * <p>The Stats event details.</p>
+ */
+ inline void SetDetails(const Stats& value) { m_detailsHasBeenSet = true; m_details = value; }
+
+ /**
+ * <p>The Stats event details.</p>
+ */
+ inline void SetDetails(Stats&& value) { m_detailsHasBeenSet = true; m_details = std::move(value); }
+
+ /**
+ * <p>The Stats event details.</p>
+ */
+ inline StatsEvent& WithDetails(const Stats& value) { SetDetails(value); return *this;}
+
+ /**
+ * <p>The Stats event details.</p>
+ */
+ inline StatsEvent& WithDetails(Stats&& value) { SetDetails(std::move(value)); return *this;}
+
+ private:
+
+ Stats m_details;
+ bool m_detailsHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClass.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClass.h
new file mode 100644
index 00000000000..b0cda25f4de
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClass.h
@@ -0,0 +1,37 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class StorageClass
+ {
+ NOT_SET,
+ STANDARD,
+ REDUCED_REDUNDANCY,
+ STANDARD_IA,
+ ONEZONE_IA,
+ INTELLIGENT_TIERING,
+ GLACIER,
+ DEEP_ARCHIVE,
+ OUTPOSTS
+ };
+
+namespace StorageClassMapper
+{
+AWS_S3_API StorageClass GetStorageClassForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForStorageClass(StorageClass value);
+} // namespace StorageClassMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysis.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysis.h
new file mode 100644
index 00000000000..741db0e5f17
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysis.h
@@ -0,0 +1,86 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/StorageClassAnalysisDataExport.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies data related to access patterns to be collected and made available
+ * to analyze the tradeoffs between different storage classes for an Amazon S3
+ * bucket.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/StorageClassAnalysis">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API StorageClassAnalysis
+ {
+ public:
+ StorageClassAnalysis();
+ StorageClassAnalysis(const Aws::Utils::Xml::XmlNode& xmlNode);
+ StorageClassAnalysis& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies how data related to the storage class analysis for an Amazon S3
+ * bucket should be exported.</p>
+ */
+ inline const StorageClassAnalysisDataExport& GetDataExport() const{ return m_dataExport; }
+
+ /**
+ * <p>Specifies how data related to the storage class analysis for an Amazon S3
+ * bucket should be exported.</p>
+ */
+ inline bool DataExportHasBeenSet() const { return m_dataExportHasBeenSet; }
+
+ /**
+ * <p>Specifies how data related to the storage class analysis for an Amazon S3
+ * bucket should be exported.</p>
+ */
+ inline void SetDataExport(const StorageClassAnalysisDataExport& value) { m_dataExportHasBeenSet = true; m_dataExport = value; }
+
+ /**
+ * <p>Specifies how data related to the storage class analysis for an Amazon S3
+ * bucket should be exported.</p>
+ */
+ inline void SetDataExport(StorageClassAnalysisDataExport&& value) { m_dataExportHasBeenSet = true; m_dataExport = std::move(value); }
+
+ /**
+ * <p>Specifies how data related to the storage class analysis for an Amazon S3
+ * bucket should be exported.</p>
+ */
+ inline StorageClassAnalysis& WithDataExport(const StorageClassAnalysisDataExport& value) { SetDataExport(value); return *this;}
+
+ /**
+ * <p>Specifies how data related to the storage class analysis for an Amazon S3
+ * bucket should be exported.</p>
+ */
+ inline StorageClassAnalysis& WithDataExport(StorageClassAnalysisDataExport&& value) { SetDataExport(std::move(value)); return *this;}
+
+ private:
+
+ StorageClassAnalysisDataExport m_dataExport;
+ bool m_dataExportHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysisDataExport.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysisDataExport.h
new file mode 100644
index 00000000000..4a6382b3ecf
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysisDataExport.h
@@ -0,0 +1,120 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/StorageClassAnalysisSchemaVersion.h>
+#include <aws/s3/model/AnalyticsExportDestination.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for data related to the storage class analysis for an Amazon S3
+ * bucket for export.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/StorageClassAnalysisDataExport">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API StorageClassAnalysisDataExport
+ {
+ public:
+ StorageClassAnalysisDataExport();
+ StorageClassAnalysisDataExport(const Aws::Utils::Xml::XmlNode& xmlNode);
+ StorageClassAnalysisDataExport& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The version of the output schema to use when exporting data. Must be
+ * <code>V_1</code>.</p>
+ */
+ inline const StorageClassAnalysisSchemaVersion& GetOutputSchemaVersion() const{ return m_outputSchemaVersion; }
+
+ /**
+ * <p>The version of the output schema to use when exporting data. Must be
+ * <code>V_1</code>.</p>
+ */
+ inline bool OutputSchemaVersionHasBeenSet() const { return m_outputSchemaVersionHasBeenSet; }
+
+ /**
+ * <p>The version of the output schema to use when exporting data. Must be
+ * <code>V_1</code>.</p>
+ */
+ inline void SetOutputSchemaVersion(const StorageClassAnalysisSchemaVersion& value) { m_outputSchemaVersionHasBeenSet = true; m_outputSchemaVersion = value; }
+
+ /**
+ * <p>The version of the output schema to use when exporting data. Must be
+ * <code>V_1</code>.</p>
+ */
+ inline void SetOutputSchemaVersion(StorageClassAnalysisSchemaVersion&& value) { m_outputSchemaVersionHasBeenSet = true; m_outputSchemaVersion = std::move(value); }
+
+ /**
+ * <p>The version of the output schema to use when exporting data. Must be
+ * <code>V_1</code>.</p>
+ */
+ inline StorageClassAnalysisDataExport& WithOutputSchemaVersion(const StorageClassAnalysisSchemaVersion& value) { SetOutputSchemaVersion(value); return *this;}
+
+ /**
+ * <p>The version of the output schema to use when exporting data. Must be
+ * <code>V_1</code>.</p>
+ */
+ inline StorageClassAnalysisDataExport& WithOutputSchemaVersion(StorageClassAnalysisSchemaVersion&& value) { SetOutputSchemaVersion(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The place to store the data for an analysis.</p>
+ */
+ inline const AnalyticsExportDestination& GetDestination() const{ return m_destination; }
+
+ /**
+ * <p>The place to store the data for an analysis.</p>
+ */
+ inline bool DestinationHasBeenSet() const { return m_destinationHasBeenSet; }
+
+ /**
+ * <p>The place to store the data for an analysis.</p>
+ */
+ inline void SetDestination(const AnalyticsExportDestination& value) { m_destinationHasBeenSet = true; m_destination = value; }
+
+ /**
+ * <p>The place to store the data for an analysis.</p>
+ */
+ inline void SetDestination(AnalyticsExportDestination&& value) { m_destinationHasBeenSet = true; m_destination = std::move(value); }
+
+ /**
+ * <p>The place to store the data for an analysis.</p>
+ */
+ inline StorageClassAnalysisDataExport& WithDestination(const AnalyticsExportDestination& value) { SetDestination(value); return *this;}
+
+ /**
+ * <p>The place to store the data for an analysis.</p>
+ */
+ inline StorageClassAnalysisDataExport& WithDestination(AnalyticsExportDestination&& value) { SetDestination(std::move(value)); return *this;}
+
+ private:
+
+ StorageClassAnalysisSchemaVersion m_outputSchemaVersion;
+ bool m_outputSchemaVersionHasBeenSet;
+
+ AnalyticsExportDestination m_destination;
+ bool m_destinationHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysisSchemaVersion.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysisSchemaVersion.h
new file mode 100644
index 00000000000..cdf61d3d12e
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/StorageClassAnalysisSchemaVersion.h
@@ -0,0 +1,30 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class StorageClassAnalysisSchemaVersion
+ {
+ NOT_SET,
+ V_1
+ };
+
+namespace StorageClassAnalysisSchemaVersionMapper
+{
+AWS_S3_API StorageClassAnalysisSchemaVersion GetStorageClassAnalysisSchemaVersionForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForStorageClassAnalysisSchemaVersion(StorageClassAnalysisSchemaVersion value);
+} // namespace StorageClassAnalysisSchemaVersionMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tag.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tag.h
new file mode 100644
index 00000000000..68d57a3ec04
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tag.h
@@ -0,0 +1,132 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container of a key value name pair.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Tag">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Tag
+ {
+ public:
+ Tag();
+ Tag(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Tag& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline Tag& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline Tag& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Name of the object key.</p>
+ */
+ inline Tag& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Value of the tag.</p>
+ */
+ inline const Aws::String& GetValue() const{ return m_value; }
+
+ /**
+ * <p>Value of the tag.</p>
+ */
+ inline bool ValueHasBeenSet() const { return m_valueHasBeenSet; }
+
+ /**
+ * <p>Value of the tag.</p>
+ */
+ inline void SetValue(const Aws::String& value) { m_valueHasBeenSet = true; m_value = value; }
+
+ /**
+ * <p>Value of the tag.</p>
+ */
+ inline void SetValue(Aws::String&& value) { m_valueHasBeenSet = true; m_value = std::move(value); }
+
+ /**
+ * <p>Value of the tag.</p>
+ */
+ inline void SetValue(const char* value) { m_valueHasBeenSet = true; m_value.assign(value); }
+
+ /**
+ * <p>Value of the tag.</p>
+ */
+ inline Tag& WithValue(const Aws::String& value) { SetValue(value); return *this;}
+
+ /**
+ * <p>Value of the tag.</p>
+ */
+ inline Tag& WithValue(Aws::String&& value) { SetValue(std::move(value)); return *this;}
+
+ /**
+ * <p>Value of the tag.</p>
+ */
+ inline Tag& WithValue(const char* value) { SetValue(value); return *this;}
+
+ private:
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ Aws::String m_value;
+ bool m_valueHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tagging.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tagging.h
new file mode 100644
index 00000000000..198cc2669bd
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tagging.h
@@ -0,0 +1,89 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Tag.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for <code>TagSet</code> elements.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Tagging">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Tagging
+ {
+ public:
+ Tagging();
+ Tagging(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Tagging& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>A collection for a set of tags</p>
+ */
+ inline const Aws::Vector<Tag>& GetTagSet() const{ return m_tagSet; }
+
+ /**
+ * <p>A collection for a set of tags</p>
+ */
+ inline bool TagSetHasBeenSet() const { return m_tagSetHasBeenSet; }
+
+ /**
+ * <p>A collection for a set of tags</p>
+ */
+ inline void SetTagSet(const Aws::Vector<Tag>& value) { m_tagSetHasBeenSet = true; m_tagSet = value; }
+
+ /**
+ * <p>A collection for a set of tags</p>
+ */
+ inline void SetTagSet(Aws::Vector<Tag>&& value) { m_tagSetHasBeenSet = true; m_tagSet = std::move(value); }
+
+ /**
+ * <p>A collection for a set of tags</p>
+ */
+ inline Tagging& WithTagSet(const Aws::Vector<Tag>& value) { SetTagSet(value); return *this;}
+
+ /**
+ * <p>A collection for a set of tags</p>
+ */
+ inline Tagging& WithTagSet(Aws::Vector<Tag>&& value) { SetTagSet(std::move(value)); return *this;}
+
+ /**
+ * <p>A collection for a set of tags</p>
+ */
+ inline Tagging& AddTagSet(const Tag& value) { m_tagSetHasBeenSet = true; m_tagSet.push_back(value); return *this; }
+
+ /**
+ * <p>A collection for a set of tags</p>
+ */
+ inline Tagging& AddTagSet(Tag&& value) { m_tagSetHasBeenSet = true; m_tagSet.push_back(std::move(value)); return *this; }
+
+ private:
+
+ Aws::Vector<Tag> m_tagSet;
+ bool m_tagSetHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TaggingDirective.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TaggingDirective.h
new file mode 100644
index 00000000000..b17bc80f2b7
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TaggingDirective.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class TaggingDirective
+ {
+ NOT_SET,
+ COPY,
+ REPLACE
+ };
+
+namespace TaggingDirectiveMapper
+{
+AWS_S3_API TaggingDirective GetTaggingDirectiveForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForTaggingDirective(TaggingDirective value);
+} // namespace TaggingDirectiveMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TargetGrant.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TargetGrant.h
new file mode 100644
index 00000000000..c8d1edafbde
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TargetGrant.h
@@ -0,0 +1,113 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/Grantee.h>
+#include <aws/s3/model/BucketLogsPermission.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Container for granting information.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/TargetGrant">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API TargetGrant
+ {
+ public:
+ TargetGrant();
+ TargetGrant(const Aws::Utils::Xml::XmlNode& xmlNode);
+ TargetGrant& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Container for the person being granted permissions.</p>
+ */
+ inline const Grantee& GetGrantee() const{ return m_grantee; }
+
+ /**
+ * <p>Container for the person being granted permissions.</p>
+ */
+ inline bool GranteeHasBeenSet() const { return m_granteeHasBeenSet; }
+
+ /**
+ * <p>Container for the person being granted permissions.</p>
+ */
+ inline void SetGrantee(const Grantee& value) { m_granteeHasBeenSet = true; m_grantee = value; }
+
+ /**
+ * <p>Container for the person being granted permissions.</p>
+ */
+ inline void SetGrantee(Grantee&& value) { m_granteeHasBeenSet = true; m_grantee = std::move(value); }
+
+ /**
+ * <p>Container for the person being granted permissions.</p>
+ */
+ inline TargetGrant& WithGrantee(const Grantee& value) { SetGrantee(value); return *this;}
+
+ /**
+ * <p>Container for the person being granted permissions.</p>
+ */
+ inline TargetGrant& WithGrantee(Grantee&& value) { SetGrantee(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Logging permissions assigned to the grantee for the bucket.</p>
+ */
+ inline const BucketLogsPermission& GetPermission() const{ return m_permission; }
+
+ /**
+ * <p>Logging permissions assigned to the grantee for the bucket.</p>
+ */
+ inline bool PermissionHasBeenSet() const { return m_permissionHasBeenSet; }
+
+ /**
+ * <p>Logging permissions assigned to the grantee for the bucket.</p>
+ */
+ inline void SetPermission(const BucketLogsPermission& value) { m_permissionHasBeenSet = true; m_permission = value; }
+
+ /**
+ * <p>Logging permissions assigned to the grantee for the bucket.</p>
+ */
+ inline void SetPermission(BucketLogsPermission&& value) { m_permissionHasBeenSet = true; m_permission = std::move(value); }
+
+ /**
+ * <p>Logging permissions assigned to the grantee for the bucket.</p>
+ */
+ inline TargetGrant& WithPermission(const BucketLogsPermission& value) { SetPermission(value); return *this;}
+
+ /**
+ * <p>Logging permissions assigned to the grantee for the bucket.</p>
+ */
+ inline TargetGrant& WithPermission(BucketLogsPermission&& value) { SetPermission(std::move(value)); return *this;}
+
+ private:
+
+ Grantee m_grantee;
+ bool m_granteeHasBeenSet;
+
+ BucketLogsPermission m_permission;
+ bool m_permissionHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tier.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tier.h
new file mode 100644
index 00000000000..6ca39feb442
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tier.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class Tier
+ {
+ NOT_SET,
+ Standard,
+ Bulk,
+ Expedited
+ };
+
+namespace TierMapper
+{
+AWS_S3_API Tier GetTierForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForTier(Tier value);
+} // namespace TierMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tiering.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tiering.h
new file mode 100644
index 00000000000..0d8f5b8802a
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Tiering.h
@@ -0,0 +1,144 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/IntelligentTieringAccessTier.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage
+ * costs by automatically moving data to the most cost-effective storage access
+ * tier, without additional operational overhead.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Tiering">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Tiering
+ {
+ public:
+ Tiering();
+ Tiering(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Tiering& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The number of consecutive days of no access after which an object will be
+ * eligible to be transitioned to the corresponding tier. The minimum number of
+ * days specified for Archive Access tier must be at least 90 days and Deep Archive
+ * Access tier must be at least 180 days. The maximum can be up to 2 years (730
+ * days).</p>
+ */
+ inline int GetDays() const{ return m_days; }
+
+ /**
+ * <p>The number of consecutive days of no access after which an object will be
+ * eligible to be transitioned to the corresponding tier. The minimum number of
+ * days specified for Archive Access tier must be at least 90 days and Deep Archive
+ * Access tier must be at least 180 days. The maximum can be up to 2 years (730
+ * days).</p>
+ */
+ inline bool DaysHasBeenSet() const { return m_daysHasBeenSet; }
+
+ /**
+ * <p>The number of consecutive days of no access after which an object will be
+ * eligible to be transitioned to the corresponding tier. The minimum number of
+ * days specified for Archive Access tier must be at least 90 days and Deep Archive
+ * Access tier must be at least 180 days. The maximum can be up to 2 years (730
+ * days).</p>
+ */
+ inline void SetDays(int value) { m_daysHasBeenSet = true; m_days = value; }
+
+ /**
+ * <p>The number of consecutive days of no access after which an object will be
+ * eligible to be transitioned to the corresponding tier. The minimum number of
+ * days specified for Archive Access tier must be at least 90 days and Deep Archive
+ * Access tier must be at least 180 days. The maximum can be up to 2 years (730
+ * days).</p>
+ */
+ inline Tiering& WithDays(int value) { SetDays(value); return *this;}
+
+
+ /**
+ * <p>S3 Intelligent-Tiering access tier. See <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
+ * class for automatically optimizing frequently and infrequently accessed
+ * objects</a> for a list of access tiers in the S3 Intelligent-Tiering storage
+ * class.</p>
+ */
+ inline const IntelligentTieringAccessTier& GetAccessTier() const{ return m_accessTier; }
+
+ /**
+ * <p>S3 Intelligent-Tiering access tier. See <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
+ * class for automatically optimizing frequently and infrequently accessed
+ * objects</a> for a list of access tiers in the S3 Intelligent-Tiering storage
+ * class.</p>
+ */
+ inline bool AccessTierHasBeenSet() const { return m_accessTierHasBeenSet; }
+
+ /**
+ * <p>S3 Intelligent-Tiering access tier. See <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
+ * class for automatically optimizing frequently and infrequently accessed
+ * objects</a> for a list of access tiers in the S3 Intelligent-Tiering storage
+ * class.</p>
+ */
+ inline void SetAccessTier(const IntelligentTieringAccessTier& value) { m_accessTierHasBeenSet = true; m_accessTier = value; }
+
+ /**
+ * <p>S3 Intelligent-Tiering access tier. See <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
+ * class for automatically optimizing frequently and infrequently accessed
+ * objects</a> for a list of access tiers in the S3 Intelligent-Tiering storage
+ * class.</p>
+ */
+ inline void SetAccessTier(IntelligentTieringAccessTier&& value) { m_accessTierHasBeenSet = true; m_accessTier = std::move(value); }
+
+ /**
+ * <p>S3 Intelligent-Tiering access tier. See <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
+ * class for automatically optimizing frequently and infrequently accessed
+ * objects</a> for a list of access tiers in the S3 Intelligent-Tiering storage
+ * class.</p>
+ */
+ inline Tiering& WithAccessTier(const IntelligentTieringAccessTier& value) { SetAccessTier(value); return *this;}
+
+ /**
+ * <p>S3 Intelligent-Tiering access tier. See <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage
+ * class for automatically optimizing frequently and infrequently accessed
+ * objects</a> for a list of access tiers in the S3 Intelligent-Tiering storage
+ * class.</p>
+ */
+ inline Tiering& WithAccessTier(IntelligentTieringAccessTier&& value) { SetAccessTier(std::move(value)); return *this;}
+
+ private:
+
+ int m_days;
+ bool m_daysHasBeenSet;
+
+ IntelligentTieringAccessTier m_accessTier;
+ bool m_accessTierHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TopicConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TopicConfiguration.h
new file mode 100644
index 00000000000..7a4f9d95363
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TopicConfiguration.h
@@ -0,0 +1,219 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/NotificationConfigurationFilter.h>
+#include <aws/s3/model/Event.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for specifying the configuration for publication of messages to
+ * an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3 detects
+ * specified events.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/TopicConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API TopicConfiguration
+ {
+ public:
+ TopicConfiguration();
+ TopicConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ TopicConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const Aws::String& GetId() const{ return m_id; }
+
+
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+
+ inline TopicConfiguration& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+
+ inline TopicConfiguration& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+
+ inline TopicConfiguration& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline const Aws::String& GetTopicArn() const{ return m_topicArn; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline bool TopicArnHasBeenSet() const { return m_topicArnHasBeenSet; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline void SetTopicArn(const Aws::String& value) { m_topicArnHasBeenSet = true; m_topicArn = value; }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline void SetTopicArn(Aws::String&& value) { m_topicArnHasBeenSet = true; m_topicArn = std::move(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline void SetTopicArn(const char* value) { m_topicArnHasBeenSet = true; m_topicArn.assign(value); }
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline TopicConfiguration& WithTopicArn(const Aws::String& value) { SetTopicArn(value); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline TopicConfiguration& WithTopicArn(Aws::String&& value) { SetTopicArn(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
+ * publishes a message when it detects events of the specified type.</p>
+ */
+ inline TopicConfiguration& WithTopicArn(const char* value) { SetTopicArn(value); return *this;}
+
+
+ /**
+ * <p>The Amazon S3 bucket event about which to send notifications. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline const Aws::Vector<Event>& GetEvents() const{ return m_events; }
+
+ /**
+ * <p>The Amazon S3 bucket event about which to send notifications. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline bool EventsHasBeenSet() const { return m_eventsHasBeenSet; }
+
+ /**
+ * <p>The Amazon S3 bucket event about which to send notifications. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetEvents(const Aws::Vector<Event>& value) { m_eventsHasBeenSet = true; m_events = value; }
+
+ /**
+ * <p>The Amazon S3 bucket event about which to send notifications. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline void SetEvents(Aws::Vector<Event>&& value) { m_eventsHasBeenSet = true; m_events = std::move(value); }
+
+ /**
+ * <p>The Amazon S3 bucket event about which to send notifications. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline TopicConfiguration& WithEvents(const Aws::Vector<Event>& value) { SetEvents(value); return *this;}
+
+ /**
+ * <p>The Amazon S3 bucket event about which to send notifications. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline TopicConfiguration& WithEvents(Aws::Vector<Event>&& value) { SetEvents(std::move(value)); return *this;}
+
+ /**
+ * <p>The Amazon S3 bucket event about which to send notifications. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline TopicConfiguration& AddEvents(const Event& value) { m_eventsHasBeenSet = true; m_events.push_back(value); return *this; }
+
+ /**
+ * <p>The Amazon S3 bucket event about which to send notifications. For more
+ * information, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html">Supported
+ * Event Types</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>
+ */
+ inline TopicConfiguration& AddEvents(Event&& value) { m_eventsHasBeenSet = true; m_events.push_back(std::move(value)); return *this; }
+
+
+
+ inline const NotificationConfigurationFilter& GetFilter() const{ return m_filter; }
+
+
+ inline bool FilterHasBeenSet() const { return m_filterHasBeenSet; }
+
+
+ inline void SetFilter(const NotificationConfigurationFilter& value) { m_filterHasBeenSet = true; m_filter = value; }
+
+
+ inline void SetFilter(NotificationConfigurationFilter&& value) { m_filterHasBeenSet = true; m_filter = std::move(value); }
+
+
+ inline TopicConfiguration& WithFilter(const NotificationConfigurationFilter& value) { SetFilter(value); return *this;}
+
+
+ inline TopicConfiguration& WithFilter(NotificationConfigurationFilter&& value) { SetFilter(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::String m_topicArn;
+ bool m_topicArnHasBeenSet;
+
+ Aws::Vector<Event> m_events;
+ bool m_eventsHasBeenSet;
+
+ NotificationConfigurationFilter m_filter;
+ bool m_filterHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TopicConfigurationDeprecated.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TopicConfigurationDeprecated.h
new file mode 100644
index 00000000000..23592ee28ea
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TopicConfigurationDeprecated.h
@@ -0,0 +1,174 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/Event.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>A container for specifying the configuration for publication of messages to
+ * an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3 detects
+ * specified events. This data type is deprecated. Use <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_TopicConfiguration.html">TopicConfiguration</a>
+ * instead.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/TopicConfigurationDeprecated">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API TopicConfigurationDeprecated
+ {
+ public:
+ TopicConfigurationDeprecated();
+ TopicConfigurationDeprecated(const Aws::Utils::Xml::XmlNode& xmlNode);
+ TopicConfigurationDeprecated& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+
+ inline const Aws::String& GetId() const{ return m_id; }
+
+
+ inline bool IdHasBeenSet() const { return m_idHasBeenSet; }
+
+
+ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; }
+
+
+ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); }
+
+
+ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); }
+
+
+ inline TopicConfigurationDeprecated& WithId(const Aws::String& value) { SetId(value); return *this;}
+
+
+ inline TopicConfigurationDeprecated& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;}
+
+
+ inline TopicConfigurationDeprecated& WithId(const char* value) { SetId(value); return *this;}
+
+
+ /**
+ * <p>A collection of events related to objects</p>
+ */
+ inline const Aws::Vector<Event>& GetEvents() const{ return m_events; }
+
+ /**
+ * <p>A collection of events related to objects</p>
+ */
+ inline bool EventsHasBeenSet() const { return m_eventsHasBeenSet; }
+
+ /**
+ * <p>A collection of events related to objects</p>
+ */
+ inline void SetEvents(const Aws::Vector<Event>& value) { m_eventsHasBeenSet = true; m_events = value; }
+
+ /**
+ * <p>A collection of events related to objects</p>
+ */
+ inline void SetEvents(Aws::Vector<Event>&& value) { m_eventsHasBeenSet = true; m_events = std::move(value); }
+
+ /**
+ * <p>A collection of events related to objects</p>
+ */
+ inline TopicConfigurationDeprecated& WithEvents(const Aws::Vector<Event>& value) { SetEvents(value); return *this;}
+
+ /**
+ * <p>A collection of events related to objects</p>
+ */
+ inline TopicConfigurationDeprecated& WithEvents(Aws::Vector<Event>&& value) { SetEvents(std::move(value)); return *this;}
+
+ /**
+ * <p>A collection of events related to objects</p>
+ */
+ inline TopicConfigurationDeprecated& AddEvents(const Event& value) { m_eventsHasBeenSet = true; m_events.push_back(value); return *this; }
+
+ /**
+ * <p>A collection of events related to objects</p>
+ */
+ inline TopicConfigurationDeprecated& AddEvents(Event&& value) { m_eventsHasBeenSet = true; m_events.push_back(std::move(value)); return *this; }
+
+
+ /**
+ * <p>Amazon SNS topic to which Amazon S3 will publish a message to report the
+ * specified events for the bucket.</p>
+ */
+ inline const Aws::String& GetTopic() const{ return m_topic; }
+
+ /**
+ * <p>Amazon SNS topic to which Amazon S3 will publish a message to report the
+ * specified events for the bucket.</p>
+ */
+ inline bool TopicHasBeenSet() const { return m_topicHasBeenSet; }
+
+ /**
+ * <p>Amazon SNS topic to which Amazon S3 will publish a message to report the
+ * specified events for the bucket.</p>
+ */
+ inline void SetTopic(const Aws::String& value) { m_topicHasBeenSet = true; m_topic = value; }
+
+ /**
+ * <p>Amazon SNS topic to which Amazon S3 will publish a message to report the
+ * specified events for the bucket.</p>
+ */
+ inline void SetTopic(Aws::String&& value) { m_topicHasBeenSet = true; m_topic = std::move(value); }
+
+ /**
+ * <p>Amazon SNS topic to which Amazon S3 will publish a message to report the
+ * specified events for the bucket.</p>
+ */
+ inline void SetTopic(const char* value) { m_topicHasBeenSet = true; m_topic.assign(value); }
+
+ /**
+ * <p>Amazon SNS topic to which Amazon S3 will publish a message to report the
+ * specified events for the bucket.</p>
+ */
+ inline TopicConfigurationDeprecated& WithTopic(const Aws::String& value) { SetTopic(value); return *this;}
+
+ /**
+ * <p>Amazon SNS topic to which Amazon S3 will publish a message to report the
+ * specified events for the bucket.</p>
+ */
+ inline TopicConfigurationDeprecated& WithTopic(Aws::String&& value) { SetTopic(std::move(value)); return *this;}
+
+ /**
+ * <p>Amazon SNS topic to which Amazon S3 will publish a message to report the
+ * specified events for the bucket.</p>
+ */
+ inline TopicConfigurationDeprecated& WithTopic(const char* value) { SetTopic(value); return *this;}
+
+ private:
+
+ Aws::String m_id;
+ bool m_idHasBeenSet;
+
+ Aws::Vector<Event> m_events;
+ bool m_eventsHasBeenSet;
+
+ Aws::String m_topic;
+ bool m_topicHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Transition.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Transition.h
new file mode 100644
index 00000000000..153b1e6e158
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Transition.h
@@ -0,0 +1,151 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/s3/model/TransitionStorageClass.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies when an object transitions to a specified storage class. For more
+ * information about Amazon S3 lifecycle configuration rules, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html">Transitioning
+ * Objects Using Amazon S3 Lifecycle</a> in the <i>Amazon Simple Storage Service
+ * Developer Guide</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/Transition">AWS API
+ * Reference</a></p>
+ */
+ class AWS_S3_API Transition
+ {
+ public:
+ Transition();
+ Transition(const Aws::Utils::Xml::XmlNode& xmlNode);
+ Transition& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Indicates when objects are transitioned to the specified storage class. The
+ * date value must be in ISO 8601 format. The time is always midnight UTC.</p>
+ */
+ inline const Aws::Utils::DateTime& GetDate() const{ return m_date; }
+
+ /**
+ * <p>Indicates when objects are transitioned to the specified storage class. The
+ * date value must be in ISO 8601 format. The time is always midnight UTC.</p>
+ */
+ inline bool DateHasBeenSet() const { return m_dateHasBeenSet; }
+
+ /**
+ * <p>Indicates when objects are transitioned to the specified storage class. The
+ * date value must be in ISO 8601 format. The time is always midnight UTC.</p>
+ */
+ inline void SetDate(const Aws::Utils::DateTime& value) { m_dateHasBeenSet = true; m_date = value; }
+
+ /**
+ * <p>Indicates when objects are transitioned to the specified storage class. The
+ * date value must be in ISO 8601 format. The time is always midnight UTC.</p>
+ */
+ inline void SetDate(Aws::Utils::DateTime&& value) { m_dateHasBeenSet = true; m_date = std::move(value); }
+
+ /**
+ * <p>Indicates when objects are transitioned to the specified storage class. The
+ * date value must be in ISO 8601 format. The time is always midnight UTC.</p>
+ */
+ inline Transition& WithDate(const Aws::Utils::DateTime& value) { SetDate(value); return *this;}
+
+ /**
+ * <p>Indicates when objects are transitioned to the specified storage class. The
+ * date value must be in ISO 8601 format. The time is always midnight UTC.</p>
+ */
+ inline Transition& WithDate(Aws::Utils::DateTime&& value) { SetDate(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Indicates the number of days after creation when objects are transitioned to
+ * the specified storage class. The value must be a positive integer.</p>
+ */
+ inline int GetDays() const{ return m_days; }
+
+ /**
+ * <p>Indicates the number of days after creation when objects are transitioned to
+ * the specified storage class. The value must be a positive integer.</p>
+ */
+ inline bool DaysHasBeenSet() const { return m_daysHasBeenSet; }
+
+ /**
+ * <p>Indicates the number of days after creation when objects are transitioned to
+ * the specified storage class. The value must be a positive integer.</p>
+ */
+ inline void SetDays(int value) { m_daysHasBeenSet = true; m_days = value; }
+
+ /**
+ * <p>Indicates the number of days after creation when objects are transitioned to
+ * the specified storage class. The value must be a positive integer.</p>
+ */
+ inline Transition& WithDays(int value) { SetDays(value); return *this;}
+
+
+ /**
+ * <p>The storage class to which you want the object to transition.</p>
+ */
+ inline const TransitionStorageClass& GetStorageClass() const{ return m_storageClass; }
+
+ /**
+ * <p>The storage class to which you want the object to transition.</p>
+ */
+ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; }
+
+ /**
+ * <p>The storage class to which you want the object to transition.</p>
+ */
+ inline void SetStorageClass(const TransitionStorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; }
+
+ /**
+ * <p>The storage class to which you want the object to transition.</p>
+ */
+ inline void SetStorageClass(TransitionStorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); }
+
+ /**
+ * <p>The storage class to which you want the object to transition.</p>
+ */
+ inline Transition& WithStorageClass(const TransitionStorageClass& value) { SetStorageClass(value); return *this;}
+
+ /**
+ * <p>The storage class to which you want the object to transition.</p>
+ */
+ inline Transition& WithStorageClass(TransitionStorageClass&& value) { SetStorageClass(std::move(value)); return *this;}
+
+ private:
+
+ Aws::Utils::DateTime m_date;
+ bool m_dateHasBeenSet;
+
+ int m_days;
+ bool m_daysHasBeenSet;
+
+ TransitionStorageClass m_storageClass;
+ bool m_storageClassHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TransitionStorageClass.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TransitionStorageClass.h
new file mode 100644
index 00000000000..7eb5efa762f
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/TransitionStorageClass.h
@@ -0,0 +1,34 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class TransitionStorageClass
+ {
+ NOT_SET,
+ GLACIER,
+ STANDARD_IA,
+ ONEZONE_IA,
+ INTELLIGENT_TIERING,
+ DEEP_ARCHIVE
+ };
+
+namespace TransitionStorageClassMapper
+{
+AWS_S3_API TransitionStorageClass GetTransitionStorageClassForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForTransitionStorageClass(TransitionStorageClass value);
+} // namespace TransitionStorageClassMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Type.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Type.h
new file mode 100644
index 00000000000..863af2bca69
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/Type.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+
+namespace Aws
+{
+namespace S3
+{
+namespace Model
+{
+ enum class Type
+ {
+ NOT_SET,
+ CanonicalUser,
+ AmazonCustomerByEmail,
+ Group
+ };
+
+namespace TypeMapper
+{
+AWS_S3_API Type GetTypeForName(const Aws::String& name);
+
+AWS_S3_API Aws::String GetNameForType(Type value);
+} // namespace TypeMapper
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyRequest.h
new file mode 100644
index 00000000000..def68dbeaa6
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyRequest.h
@@ -0,0 +1,1447 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/core/utils/DateTime.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API UploadPartCopyRequest : public S3Request
+ {
+ public:
+ UploadPartCopyRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "UploadPartCopy"; }
+
+ Aws::String SerializePayload() const override;
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline UploadPartCopyRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline UploadPartCopyRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The bucket name.</p> <p>When using this API with an access point, you must
+ * direct requests to the access point hostname. The access point hostname takes
+ * the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline UploadPartCopyRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and key of the source object, separated by
+ * a slash (/). For example, to copy the object <code>reports/january.pdf</code>
+ * from the bucket <code>awsexamplebucket</code>, use
+ * <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline const Aws::String& GetCopySource() const{ return m_copySource; }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and key of the source object, separated by
+ * a slash (/). For example, to copy the object <code>reports/january.pdf</code>
+ * from the bucket <code>awsexamplebucket</code>, use
+ * <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline bool CopySourceHasBeenSet() const { return m_copySourceHasBeenSet; }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and key of the source object, separated by
+ * a slash (/). For example, to copy the object <code>reports/january.pdf</code>
+ * from the bucket <code>awsexamplebucket</code>, use
+ * <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline void SetCopySource(const Aws::String& value) { m_copySourceHasBeenSet = true; m_copySource = value; }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and key of the source object, separated by
+ * a slash (/). For example, to copy the object <code>reports/january.pdf</code>
+ * from the bucket <code>awsexamplebucket</code>, use
+ * <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline void SetCopySource(Aws::String&& value) { m_copySourceHasBeenSet = true; m_copySource = std::move(value); }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and key of the source object, separated by
+ * a slash (/). For example, to copy the object <code>reports/january.pdf</code>
+ * from the bucket <code>awsexamplebucket</code>, use
+ * <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline void SetCopySource(const char* value) { m_copySourceHasBeenSet = true; m_copySource.assign(value); }
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and key of the source object, separated by
+ * a slash (/). For example, to copy the object <code>reports/january.pdf</code>
+ * from the bucket <code>awsexamplebucket</code>, use
+ * <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySource(const Aws::String& value) { SetCopySource(value); return *this;}
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and key of the source object, separated by
+ * a slash (/). For example, to copy the object <code>reports/january.pdf</code>
+ * from the bucket <code>awsexamplebucket</code>, use
+ * <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySource(Aws::String&& value) { SetCopySource(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the source object for the copy operation. You specify the value in
+ * one of two formats, depending on whether you want to access the source object
+ * through an <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html">access
+ * point</a>:</p> <ul> <li> <p>For objects not accessed through an access point,
+ * specify the name of the source bucket and key of the source object, separated by
+ * a slash (/). For example, to copy the object <code>reports/january.pdf</code>
+ * from the bucket <code>awsexamplebucket</code>, use
+ * <code>awsexamplebucket/reports/january.pdf</code>. The value must be URL
+ * encoded.</p> </li> <li> <p>For objects accessed through access points, specify
+ * the Amazon Resource Name (ARN) of the object as accessed through the access
+ * point, in the format
+ * <code>arn:aws:s3:&lt;Region&gt;:&lt;account-id&gt;:accesspoint/&lt;access-point-name&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through access
+ * point <code>my-access-point</code> owned by account <code>123456789012</code> in
+ * Region <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf</code>.
+ * The value must be URL encoded.</p> <p>Amazon S3 supports copy operations
+ * using access points only when the source and destination buckets are in the same
+ * AWS Region.</p> <p>Alternatively, for objects accessed through Amazon S3
+ * on Outposts, specify the ARN of the object as accessed in the format
+ * <code>arn:aws:s3-outposts:&lt;Region&gt;:&lt;account-id&gt;:outpost/&lt;outpost-id&gt;/object/&lt;key&gt;</code>.
+ * For example, to copy the object <code>reports/january.pdf</code> through outpost
+ * <code>my-outpost</code> owned by account <code>123456789012</code> in Region
+ * <code>us-west-2</code>, use the URL encoding of
+ * <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf</code>.
+ * The value must be URL encoded. </p> </li> </ul> <p>To copy a specific version of
+ * an object, append <code>?versionId=&lt;version-id&gt;</code> to the value (for
+ * example,
+ * <code>awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893</code>).
+ * If you don't specify a version ID, Amazon S3 copies the latest version of the
+ * source object.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySource(const char* value) { SetCopySource(value); return *this;}
+
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline const Aws::String& GetCopySourceIfMatch() const{ return m_copySourceIfMatch; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline bool CopySourceIfMatchHasBeenSet() const { return m_copySourceIfMatchHasBeenSet; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline void SetCopySourceIfMatch(const Aws::String& value) { m_copySourceIfMatchHasBeenSet = true; m_copySourceIfMatch = value; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline void SetCopySourceIfMatch(Aws::String&& value) { m_copySourceIfMatchHasBeenSet = true; m_copySourceIfMatch = std::move(value); }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline void SetCopySourceIfMatch(const char* value) { m_copySourceIfMatchHasBeenSet = true; m_copySourceIfMatch.assign(value); }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfMatch(const Aws::String& value) { SetCopySourceIfMatch(value); return *this;}
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfMatch(Aws::String&& value) { SetCopySourceIfMatch(std::move(value)); return *this;}
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) matches the specified tag.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfMatch(const char* value) { SetCopySourceIfMatch(value); return *this;}
+
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline const Aws::Utils::DateTime& GetCopySourceIfModifiedSince() const{ return m_copySourceIfModifiedSince; }
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline bool CopySourceIfModifiedSinceHasBeenSet() const { return m_copySourceIfModifiedSinceHasBeenSet; }
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline void SetCopySourceIfModifiedSince(const Aws::Utils::DateTime& value) { m_copySourceIfModifiedSinceHasBeenSet = true; m_copySourceIfModifiedSince = value; }
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline void SetCopySourceIfModifiedSince(Aws::Utils::DateTime&& value) { m_copySourceIfModifiedSinceHasBeenSet = true; m_copySourceIfModifiedSince = std::move(value); }
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfModifiedSince(const Aws::Utils::DateTime& value) { SetCopySourceIfModifiedSince(value); return *this;}
+
+ /**
+ * <p>Copies the object if it has been modified since the specified time.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfModifiedSince(Aws::Utils::DateTime&& value) { SetCopySourceIfModifiedSince(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline const Aws::String& GetCopySourceIfNoneMatch() const{ return m_copySourceIfNoneMatch; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline bool CopySourceIfNoneMatchHasBeenSet() const { return m_copySourceIfNoneMatchHasBeenSet; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline void SetCopySourceIfNoneMatch(const Aws::String& value) { m_copySourceIfNoneMatchHasBeenSet = true; m_copySourceIfNoneMatch = value; }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline void SetCopySourceIfNoneMatch(Aws::String&& value) { m_copySourceIfNoneMatchHasBeenSet = true; m_copySourceIfNoneMatch = std::move(value); }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline void SetCopySourceIfNoneMatch(const char* value) { m_copySourceIfNoneMatchHasBeenSet = true; m_copySourceIfNoneMatch.assign(value); }
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfNoneMatch(const Aws::String& value) { SetCopySourceIfNoneMatch(value); return *this;}
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfNoneMatch(Aws::String&& value) { SetCopySourceIfNoneMatch(std::move(value)); return *this;}
+
+ /**
+ * <p>Copies the object if its entity tag (ETag) is different than the specified
+ * ETag.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfNoneMatch(const char* value) { SetCopySourceIfNoneMatch(value); return *this;}
+
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline const Aws::Utils::DateTime& GetCopySourceIfUnmodifiedSince() const{ return m_copySourceIfUnmodifiedSince; }
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline bool CopySourceIfUnmodifiedSinceHasBeenSet() const { return m_copySourceIfUnmodifiedSinceHasBeenSet; }
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline void SetCopySourceIfUnmodifiedSince(const Aws::Utils::DateTime& value) { m_copySourceIfUnmodifiedSinceHasBeenSet = true; m_copySourceIfUnmodifiedSince = value; }
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline void SetCopySourceIfUnmodifiedSince(Aws::Utils::DateTime&& value) { m_copySourceIfUnmodifiedSinceHasBeenSet = true; m_copySourceIfUnmodifiedSince = std::move(value); }
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfUnmodifiedSince(const Aws::Utils::DateTime& value) { SetCopySourceIfUnmodifiedSince(value); return *this;}
+
+ /**
+ * <p>Copies the object if it hasn't been modified since the specified time.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceIfUnmodifiedSince(Aws::Utils::DateTime&& value) { SetCopySourceIfUnmodifiedSince(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The range of bytes to copy from the source object. The range value must use
+ * the form bytes=first-last, where the first and last are the zero-based byte
+ * offsets to copy. For example, bytes=0-9 indicates that you want to copy the
+ * first 10 bytes of the source. You can copy a range only if the source object is
+ * greater than 5 MB.</p>
+ */
+ inline const Aws::String& GetCopySourceRange() const{ return m_copySourceRange; }
+
+ /**
+ * <p>The range of bytes to copy from the source object. The range value must use
+ * the form bytes=first-last, where the first and last are the zero-based byte
+ * offsets to copy. For example, bytes=0-9 indicates that you want to copy the
+ * first 10 bytes of the source. You can copy a range only if the source object is
+ * greater than 5 MB.</p>
+ */
+ inline bool CopySourceRangeHasBeenSet() const { return m_copySourceRangeHasBeenSet; }
+
+ /**
+ * <p>The range of bytes to copy from the source object. The range value must use
+ * the form bytes=first-last, where the first and last are the zero-based byte
+ * offsets to copy. For example, bytes=0-9 indicates that you want to copy the
+ * first 10 bytes of the source. You can copy a range only if the source object is
+ * greater than 5 MB.</p>
+ */
+ inline void SetCopySourceRange(const Aws::String& value) { m_copySourceRangeHasBeenSet = true; m_copySourceRange = value; }
+
+ /**
+ * <p>The range of bytes to copy from the source object. The range value must use
+ * the form bytes=first-last, where the first and last are the zero-based byte
+ * offsets to copy. For example, bytes=0-9 indicates that you want to copy the
+ * first 10 bytes of the source. You can copy a range only if the source object is
+ * greater than 5 MB.</p>
+ */
+ inline void SetCopySourceRange(Aws::String&& value) { m_copySourceRangeHasBeenSet = true; m_copySourceRange = std::move(value); }
+
+ /**
+ * <p>The range of bytes to copy from the source object. The range value must use
+ * the form bytes=first-last, where the first and last are the zero-based byte
+ * offsets to copy. For example, bytes=0-9 indicates that you want to copy the
+ * first 10 bytes of the source. You can copy a range only if the source object is
+ * greater than 5 MB.</p>
+ */
+ inline void SetCopySourceRange(const char* value) { m_copySourceRangeHasBeenSet = true; m_copySourceRange.assign(value); }
+
+ /**
+ * <p>The range of bytes to copy from the source object. The range value must use
+ * the form bytes=first-last, where the first and last are the zero-based byte
+ * offsets to copy. For example, bytes=0-9 indicates that you want to copy the
+ * first 10 bytes of the source. You can copy a range only if the source object is
+ * greater than 5 MB.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceRange(const Aws::String& value) { SetCopySourceRange(value); return *this;}
+
+ /**
+ * <p>The range of bytes to copy from the source object. The range value must use
+ * the form bytes=first-last, where the first and last are the zero-based byte
+ * offsets to copy. For example, bytes=0-9 indicates that you want to copy the
+ * first 10 bytes of the source. You can copy a range only if the source object is
+ * greater than 5 MB.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceRange(Aws::String&& value) { SetCopySourceRange(std::move(value)); return *this;}
+
+ /**
+ * <p>The range of bytes to copy from the source object. The range value must use
+ * the form bytes=first-last, where the first and last are the zero-based byte
+ * offsets to copy. For example, bytes=0-9 indicates that you want to copy the
+ * first 10 bytes of the source. You can copy a range only if the source object is
+ * greater than 5 MB.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceRange(const char* value) { SetCopySourceRange(value); return *this;}
+
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline UploadPartCopyRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline UploadPartCopyRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline UploadPartCopyRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Part number of part being copied. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline int GetPartNumber() const{ return m_partNumber; }
+
+ /**
+ * <p>Part number of part being copied. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline bool PartNumberHasBeenSet() const { return m_partNumberHasBeenSet; }
+
+ /**
+ * <p>Part number of part being copied. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline void SetPartNumber(int value) { m_partNumberHasBeenSet = true; m_partNumber = value; }
+
+ /**
+ * <p>Part number of part being copied. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline UploadPartCopyRequest& WithPartNumber(int value) { SetPartNumber(value); return *this;}
+
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being copied.</p>
+ */
+ inline const Aws::String& GetUploadId() const{ return m_uploadId; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being copied.</p>
+ */
+ inline bool UploadIdHasBeenSet() const { return m_uploadIdHasBeenSet; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being copied.</p>
+ */
+ inline void SetUploadId(const Aws::String& value) { m_uploadIdHasBeenSet = true; m_uploadId = value; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being copied.</p>
+ */
+ inline void SetUploadId(Aws::String&& value) { m_uploadIdHasBeenSet = true; m_uploadId = std::move(value); }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being copied.</p>
+ */
+ inline void SetUploadId(const char* value) { m_uploadIdHasBeenSet = true; m_uploadId.assign(value); }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being copied.</p>
+ */
+ inline UploadPartCopyRequest& WithUploadId(const Aws::String& value) { SetUploadId(value); return *this;}
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being copied.</p>
+ */
+ inline UploadPartCopyRequest& WithUploadId(Aws::String&& value) { SetUploadId(std::move(value)); return *this;}
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being copied.</p>
+ */
+ inline UploadPartCopyRequest& WithUploadId(const char* value) { SetUploadId(value); return *this;}
+
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline bool SSECustomerAlgorithmHasBeenSet() const { return m_sSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline UploadPartCopyRequest& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline UploadPartCopyRequest& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline UploadPartCopyRequest& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline const Aws::String& GetSSECustomerKey() const{ return m_sSECustomerKey; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline bool SSECustomerKeyHasBeenSet() const { return m_sSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline void SetSSECustomerKey(const Aws::String& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = value; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline void SetSSECustomerKey(Aws::String&& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = std::move(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline void SetSSECustomerKey(const char* value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey.assign(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline UploadPartCopyRequest& WithSSECustomerKey(const Aws::String& value) { SetSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline UploadPartCopyRequest& WithSSECustomerKey(Aws::String&& value) { SetSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm</code> header. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline UploadPartCopyRequest& WithSSECustomerKey(const char* value) { SetSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline bool SSECustomerKeyMD5HasBeenSet() const { return m_sSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline UploadPartCopyRequest& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline UploadPartCopyRequest& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline UploadPartCopyRequest& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline const Aws::String& GetCopySourceSSECustomerAlgorithm() const{ return m_copySourceSSECustomerAlgorithm; }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline bool CopySourceSSECustomerAlgorithmHasBeenSet() const { return m_copySourceSSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline void SetCopySourceSSECustomerAlgorithm(const Aws::String& value) { m_copySourceSSECustomerAlgorithmHasBeenSet = true; m_copySourceSSECustomerAlgorithm = value; }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline void SetCopySourceSSECustomerAlgorithm(Aws::String&& value) { m_copySourceSSECustomerAlgorithmHasBeenSet = true; m_copySourceSSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline void SetCopySourceSSECustomerAlgorithm(const char* value) { m_copySourceSSECustomerAlgorithmHasBeenSet = true; m_copySourceSSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceSSECustomerAlgorithm(const Aws::String& value) { SetCopySourceSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceSSECustomerAlgorithm(Aws::String&& value) { SetCopySourceSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use when decrypting the source object (for
+ * example, AES256).</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceSSECustomerAlgorithm(const char* value) { SetCopySourceSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline const Aws::String& GetCopySourceSSECustomerKey() const{ return m_copySourceSSECustomerKey; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline bool CopySourceSSECustomerKeyHasBeenSet() const { return m_copySourceSSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline void SetCopySourceSSECustomerKey(const Aws::String& value) { m_copySourceSSECustomerKeyHasBeenSet = true; m_copySourceSSECustomerKey = value; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline void SetCopySourceSSECustomerKey(Aws::String&& value) { m_copySourceSSECustomerKeyHasBeenSet = true; m_copySourceSSECustomerKey = std::move(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline void SetCopySourceSSECustomerKey(const char* value) { m_copySourceSSECustomerKeyHasBeenSet = true; m_copySourceSSECustomerKey.assign(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceSSECustomerKey(const Aws::String& value) { SetCopySourceSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceSSECustomerKey(Aws::String&& value) { SetCopySourceSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use to
+ * decrypt the source object. The encryption key provided in this header must be
+ * one that was used when the source object was created.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceSSECustomerKey(const char* value) { SetCopySourceSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline const Aws::String& GetCopySourceSSECustomerKeyMD5() const{ return m_copySourceSSECustomerKeyMD5; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline bool CopySourceSSECustomerKeyMD5HasBeenSet() const { return m_copySourceSSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetCopySourceSSECustomerKeyMD5(const Aws::String& value) { m_copySourceSSECustomerKeyMD5HasBeenSet = true; m_copySourceSSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetCopySourceSSECustomerKeyMD5(Aws::String&& value) { m_copySourceSSECustomerKeyMD5HasBeenSet = true; m_copySourceSSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetCopySourceSSECustomerKeyMD5(const char* value) { m_copySourceSSECustomerKeyMD5HasBeenSet = true; m_copySourceSSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceSSECustomerKeyMD5(const Aws::String& value) { SetCopySourceSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceSSECustomerKeyMD5(Aws::String&& value) { SetCopySourceSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline UploadPartCopyRequest& WithCopySourceSSECustomerKeyMD5(const char* value) { SetCopySourceSSECustomerKeyMD5(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline UploadPartCopyRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline UploadPartCopyRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline UploadPartCopyRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline UploadPartCopyRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected destination bucket owner. If the destination
+ * bucket is owned by a different account, the request will fail with an HTTP
+ * <code>403 (Access Denied)</code> error.</p>
+ */
+ inline UploadPartCopyRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedSourceBucketOwner() const{ return m_expectedSourceBucketOwner; }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline bool ExpectedSourceBucketOwnerHasBeenSet() const { return m_expectedSourceBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedSourceBucketOwner(const Aws::String& value) { m_expectedSourceBucketOwnerHasBeenSet = true; m_expectedSourceBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedSourceBucketOwner(Aws::String&& value) { m_expectedSourceBucketOwnerHasBeenSet = true; m_expectedSourceBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline void SetExpectedSourceBucketOwner(const char* value) { m_expectedSourceBucketOwnerHasBeenSet = true; m_expectedSourceBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline UploadPartCopyRequest& WithExpectedSourceBucketOwner(const Aws::String& value) { SetExpectedSourceBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline UploadPartCopyRequest& WithExpectedSourceBucketOwner(Aws::String&& value) { SetExpectedSourceBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected source bucket owner. If the source bucket is
+ * owned by a different account, the request will fail with an HTTP <code>403
+ * (Access Denied)</code> error.</p>
+ */
+ inline UploadPartCopyRequest& WithExpectedSourceBucketOwner(const char* value) { SetExpectedSourceBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline UploadPartCopyRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline UploadPartCopyRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline UploadPartCopyRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline UploadPartCopyRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline UploadPartCopyRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline UploadPartCopyRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline UploadPartCopyRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline UploadPartCopyRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline UploadPartCopyRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ Aws::String m_copySource;
+ bool m_copySourceHasBeenSet;
+
+ Aws::String m_copySourceIfMatch;
+ bool m_copySourceIfMatchHasBeenSet;
+
+ Aws::Utils::DateTime m_copySourceIfModifiedSince;
+ bool m_copySourceIfModifiedSinceHasBeenSet;
+
+ Aws::String m_copySourceIfNoneMatch;
+ bool m_copySourceIfNoneMatchHasBeenSet;
+
+ Aws::Utils::DateTime m_copySourceIfUnmodifiedSince;
+ bool m_copySourceIfUnmodifiedSinceHasBeenSet;
+
+ Aws::String m_copySourceRange;
+ bool m_copySourceRangeHasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ int m_partNumber;
+ bool m_partNumberHasBeenSet;
+
+ Aws::String m_uploadId;
+ bool m_uploadIdHasBeenSet;
+
+ Aws::String m_sSECustomerAlgorithm;
+ bool m_sSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_sSECustomerKey;
+ bool m_sSECustomerKeyHasBeenSet;
+
+ Aws::String m_sSECustomerKeyMD5;
+ bool m_sSECustomerKeyMD5HasBeenSet;
+
+ Aws::String m_copySourceSSECustomerAlgorithm;
+ bool m_copySourceSSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_copySourceSSECustomerKey;
+ bool m_copySourceSSECustomerKeyHasBeenSet;
+
+ Aws::String m_copySourceSSECustomerKeyMD5;
+ bool m_copySourceSSECustomerKeyMD5HasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::String m_expectedSourceBucketOwner;
+ bool m_expectedSourceBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyResult.h
new file mode 100644
index 00000000000..ee8933482f3
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyResult.h
@@ -0,0 +1,343 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/CopyPartResult.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API UploadPartCopyResult
+ {
+ public:
+ UploadPartCopyResult();
+ UploadPartCopyResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ UploadPartCopyResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The version of the source object that was copied, if you have enabled
+ * versioning on the source bucket.</p>
+ */
+ inline const Aws::String& GetCopySourceVersionId() const{ return m_copySourceVersionId; }
+
+ /**
+ * <p>The version of the source object that was copied, if you have enabled
+ * versioning on the source bucket.</p>
+ */
+ inline void SetCopySourceVersionId(const Aws::String& value) { m_copySourceVersionId = value; }
+
+ /**
+ * <p>The version of the source object that was copied, if you have enabled
+ * versioning on the source bucket.</p>
+ */
+ inline void SetCopySourceVersionId(Aws::String&& value) { m_copySourceVersionId = std::move(value); }
+
+ /**
+ * <p>The version of the source object that was copied, if you have enabled
+ * versioning on the source bucket.</p>
+ */
+ inline void SetCopySourceVersionId(const char* value) { m_copySourceVersionId.assign(value); }
+
+ /**
+ * <p>The version of the source object that was copied, if you have enabled
+ * versioning on the source bucket.</p>
+ */
+ inline UploadPartCopyResult& WithCopySourceVersionId(const Aws::String& value) { SetCopySourceVersionId(value); return *this;}
+
+ /**
+ * <p>The version of the source object that was copied, if you have enabled
+ * versioning on the source bucket.</p>
+ */
+ inline UploadPartCopyResult& WithCopySourceVersionId(Aws::String&& value) { SetCopySourceVersionId(std::move(value)); return *this;}
+
+ /**
+ * <p>The version of the source object that was copied, if you have enabled
+ * versioning on the source bucket.</p>
+ */
+ inline UploadPartCopyResult& WithCopySourceVersionId(const char* value) { SetCopySourceVersionId(value); return *this;}
+
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline const CopyPartResult& GetCopyPartResult() const{ return m_copyPartResult; }
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline void SetCopyPartResult(const CopyPartResult& value) { m_copyPartResult = value; }
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline void SetCopyPartResult(CopyPartResult&& value) { m_copyPartResult = std::move(value); }
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline UploadPartCopyResult& WithCopyPartResult(const CopyPartResult& value) { SetCopyPartResult(value); return *this;}
+
+ /**
+ * <p>Container for all response elements.</p>
+ */
+ inline UploadPartCopyResult& WithCopyPartResult(CopyPartResult&& value) { SetCopyPartResult(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline UploadPartCopyResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline UploadPartCopyResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline UploadPartCopyResult& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline UploadPartCopyResult& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline UploadPartCopyResult& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline UploadPartCopyResult& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline UploadPartCopyResult& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline UploadPartCopyResult& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline UploadPartCopyResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline UploadPartCopyResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) that was used for the
+ * object.</p>
+ */
+ inline UploadPartCopyResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline UploadPartCopyResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline UploadPartCopyResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline UploadPartCopyResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ Aws::String m_copySourceVersionId;
+
+ CopyPartResult m_copyPartResult;
+
+ ServerSideEncryption m_serverSideEncryption;
+
+ Aws::String m_sSECustomerAlgorithm;
+
+ Aws::String m_sSECustomerKeyMD5;
+
+ Aws::String m_sSEKMSKeyId;
+
+ bool m_bucketKeyEnabled;
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartRequest.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartRequest.h
new file mode 100644
index 00000000000..ecdba22f401
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartRequest.h
@@ -0,0 +1,770 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/S3Request.h>
+#include <aws/core/utils/Array.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestPayer.h>
+#include <aws/core/utils/memory/stl/AWSMap.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Http
+{
+ class URI;
+} //namespace Http
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ */
+ class AWS_S3_API UploadPartRequest : public StreamingS3Request
+ {
+ public:
+ UploadPartRequest();
+
+ // Service request name is the Operation name which will send this request out,
+ // each operation should has unique request name, so that we can get operation's name from this request.
+ // Note: this is not true for response, multiple operations may have the same response name,
+ // so we can not get operation's name from response.
+ inline virtual const char* GetServiceRequestName() const override { return "UploadPart"; }
+
+ void AddQueryStringParameters(Aws::Http::URI& uri) const override;
+
+ Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
+
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline const Aws::String& GetBucket() const{ return m_bucket; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const Aws::String& value) { m_bucketHasBeenSet = true; m_bucket = value; }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(Aws::String&& value) { m_bucketHasBeenSet = true; m_bucket = std::move(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline void SetBucket(const char* value) { m_bucketHasBeenSet = true; m_bucket.assign(value); }
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline UploadPartRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline UploadPartRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
+
+ /**
+ * <p>The name of the bucket to which the multipart upload was initiated.</p>
+ * <p>When using this API with an access point, you must direct requests to the
+ * access point hostname. The access point hostname takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com.
+ * When using this operation with an access point through the AWS SDKs, you provide
+ * the access point ARN in place of the bucket name. For more information about
+ * access point ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html">Using
+ * Access Points</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p> <p>When using this API with Amazon S3 on Outposts, you must
+ * direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname
+ * takes the form
+ * <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com.
+ * When using this operation using S3 on Outposts through the AWS SDKs, you provide
+ * the Outposts bucket ARN in place of the bucket name. For more information about
+ * S3 on Outposts ARNs, see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html">Using
+ * S3 on Outposts</a> in the <i>Amazon Simple Storage Service Developer
+ * Guide</i>.</p>
+ */
+ inline UploadPartRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
+
+
+ /**
+ * <p>Size of the body in bytes. This parameter is useful when the size of the body
+ * cannot be determined automatically.</p>
+ */
+ inline long long GetContentLength() const{ return m_contentLength; }
+
+ /**
+ * <p>Size of the body in bytes. This parameter is useful when the size of the body
+ * cannot be determined automatically.</p>
+ */
+ inline bool ContentLengthHasBeenSet() const { return m_contentLengthHasBeenSet; }
+
+ /**
+ * <p>Size of the body in bytes. This parameter is useful when the size of the body
+ * cannot be determined automatically.</p>
+ */
+ inline void SetContentLength(long long value) { m_contentLengthHasBeenSet = true; m_contentLength = value; }
+
+ /**
+ * <p>Size of the body in bytes. This parameter is useful when the size of the body
+ * cannot be determined automatically.</p>
+ */
+ inline UploadPartRequest& WithContentLength(long long value) { SetContentLength(value); return *this;}
+
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the part data. This parameter is
+ * auto-populated when using the command from the CLI. This parameter is required
+ * if object lock parameters are specified.</p>
+ */
+ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the part data. This parameter is
+ * auto-populated when using the command from the CLI. This parameter is required
+ * if object lock parameters are specified.</p>
+ */
+ inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the part data. This parameter is
+ * auto-populated when using the command from the CLI. This parameter is required
+ * if object lock parameters are specified.</p>
+ */
+ inline void SetContentMD5(const Aws::String& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = value; }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the part data. This parameter is
+ * auto-populated when using the command from the CLI. This parameter is required
+ * if object lock parameters are specified.</p>
+ */
+ inline void SetContentMD5(Aws::String&& value) { m_contentMD5HasBeenSet = true; m_contentMD5 = std::move(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the part data. This parameter is
+ * auto-populated when using the command from the CLI. This parameter is required
+ * if object lock parameters are specified.</p>
+ */
+ inline void SetContentMD5(const char* value) { m_contentMD5HasBeenSet = true; m_contentMD5.assign(value); }
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the part data. This parameter is
+ * auto-populated when using the command from the CLI. This parameter is required
+ * if object lock parameters are specified.</p>
+ */
+ inline UploadPartRequest& WithContentMD5(const Aws::String& value) { SetContentMD5(value); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the part data. This parameter is
+ * auto-populated when using the command from the CLI. This parameter is required
+ * if object lock parameters are specified.</p>
+ */
+ inline UploadPartRequest& WithContentMD5(Aws::String&& value) { SetContentMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>The base64-encoded 128-bit MD5 digest of the part data. This parameter is
+ * auto-populated when using the command from the CLI. This parameter is required
+ * if object lock parameters are specified.</p>
+ */
+ inline UploadPartRequest& WithContentMD5(const char* value) { SetContentMD5(value); return *this;}
+
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline const Aws::String& GetKey() const{ return m_key; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline UploadPartRequest& WithKey(const Aws::String& value) { SetKey(value); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline UploadPartRequest& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Object key for which the multipart upload was initiated.</p>
+ */
+ inline UploadPartRequest& WithKey(const char* value) { SetKey(value); return *this;}
+
+
+ /**
+ * <p>Part number of part being uploaded. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline int GetPartNumber() const{ return m_partNumber; }
+
+ /**
+ * <p>Part number of part being uploaded. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline bool PartNumberHasBeenSet() const { return m_partNumberHasBeenSet; }
+
+ /**
+ * <p>Part number of part being uploaded. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline void SetPartNumber(int value) { m_partNumberHasBeenSet = true; m_partNumber = value; }
+
+ /**
+ * <p>Part number of part being uploaded. This is a positive integer between 1 and
+ * 10,000.</p>
+ */
+ inline UploadPartRequest& WithPartNumber(int value) { SetPartNumber(value); return *this;}
+
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being uploaded.</p>
+ */
+ inline const Aws::String& GetUploadId() const{ return m_uploadId; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being uploaded.</p>
+ */
+ inline bool UploadIdHasBeenSet() const { return m_uploadIdHasBeenSet; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being uploaded.</p>
+ */
+ inline void SetUploadId(const Aws::String& value) { m_uploadIdHasBeenSet = true; m_uploadId = value; }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being uploaded.</p>
+ */
+ inline void SetUploadId(Aws::String&& value) { m_uploadIdHasBeenSet = true; m_uploadId = std::move(value); }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being uploaded.</p>
+ */
+ inline void SetUploadId(const char* value) { m_uploadIdHasBeenSet = true; m_uploadId.assign(value); }
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being uploaded.</p>
+ */
+ inline UploadPartRequest& WithUploadId(const Aws::String& value) { SetUploadId(value); return *this;}
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being uploaded.</p>
+ */
+ inline UploadPartRequest& WithUploadId(Aws::String&& value) { SetUploadId(std::move(value)); return *this;}
+
+ /**
+ * <p>Upload ID identifying the multipart upload whose part is being uploaded.</p>
+ */
+ inline UploadPartRequest& WithUploadId(const char* value) { SetUploadId(value); return *this;}
+
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline bool SSECustomerAlgorithmHasBeenSet() const { return m_sSECustomerAlgorithmHasBeenSet; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithmHasBeenSet = true; m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline UploadPartRequest& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline UploadPartRequest& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the algorithm to use to when encrypting the object (for example,
+ * AES256).</p>
+ */
+ inline UploadPartRequest& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm header</code>. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline const Aws::String& GetSSECustomerKey() const{ return m_sSECustomerKey; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm header</code>. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline bool SSECustomerKeyHasBeenSet() const { return m_sSECustomerKeyHasBeenSet; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm header</code>. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline void SetSSECustomerKey(const Aws::String& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = value; }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm header</code>. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline void SetSSECustomerKey(Aws::String&& value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey = std::move(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm header</code>. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline void SetSSECustomerKey(const char* value) { m_sSECustomerKeyHasBeenSet = true; m_sSECustomerKey.assign(value); }
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm header</code>. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline UploadPartRequest& WithSSECustomerKey(const Aws::String& value) { SetSSECustomerKey(value); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm header</code>. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline UploadPartRequest& WithSSECustomerKey(Aws::String&& value) { SetSSECustomerKey(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the customer-provided encryption key for Amazon S3 to use in
+ * encrypting data. This value is used to store the object and then it is
+ * discarded; Amazon S3 does not store the encryption key. The key must be
+ * appropriate for use with the algorithm specified in the
+ * <code>x-amz-server-side-encryption-customer-algorithm header</code>. This must
+ * be the same encryption key specified in the initiate multipart upload
+ * request.</p>
+ */
+ inline UploadPartRequest& WithSSECustomerKey(const char* value) { SetSSECustomerKey(value); return *this;}
+
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline bool SSECustomerKeyMD5HasBeenSet() const { return m_sSECustomerKeyMD5HasBeenSet; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5HasBeenSet = true; m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline UploadPartRequest& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline UploadPartRequest& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
+ * Amazon S3 uses this header for a message integrity check to ensure that the
+ * encryption key was transmitted without error.</p>
+ */
+ inline UploadPartRequest& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+
+ inline const RequestPayer& GetRequestPayer() const{ return m_requestPayer; }
+
+
+ inline bool RequestPayerHasBeenSet() const { return m_requestPayerHasBeenSet; }
+
+
+ inline void SetRequestPayer(const RequestPayer& value) { m_requestPayerHasBeenSet = true; m_requestPayer = value; }
+
+
+ inline void SetRequestPayer(RequestPayer&& value) { m_requestPayerHasBeenSet = true; m_requestPayer = std::move(value); }
+
+
+ inline UploadPartRequest& WithRequestPayer(const RequestPayer& value) { SetRequestPayer(value); return *this;}
+
+
+ inline UploadPartRequest& WithRequestPayer(RequestPayer&& value) { SetRequestPayer(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const Aws::String& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = value; }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(Aws::String&& value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner = std::move(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline void SetExpectedBucketOwner(const char* value) { m_expectedBucketOwnerHasBeenSet = true; m_expectedBucketOwner.assign(value); }
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline UploadPartRequest& WithExpectedBucketOwner(const Aws::String& value) { SetExpectedBucketOwner(value); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline UploadPartRequest& WithExpectedBucketOwner(Aws::String&& value) { SetExpectedBucketOwner(std::move(value)); return *this;}
+
+ /**
+ * <p>The account id of the expected bucket owner. If the bucket is owned by a
+ * different account, the request will fail with an HTTP <code>403 (Access
+ * Denied)</code> error.</p>
+ */
+ inline UploadPartRequest& WithExpectedBucketOwner(const char* value) { SetExpectedBucketOwner(value); return *this;}
+
+
+
+ inline const Aws::Map<Aws::String, Aws::String>& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; }
+
+
+ inline bool CustomizedAccessLogTagHasBeenSet() const { return m_customizedAccessLogTagHasBeenSet; }
+
+
+ inline void SetCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = value; }
+
+
+ inline void SetCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag = std::move(value); }
+
+
+ inline UploadPartRequest& WithCustomizedAccessLogTag(const Aws::Map<Aws::String, Aws::String>& value) { SetCustomizedAccessLogTag(value); return *this;}
+
+
+ inline UploadPartRequest& WithCustomizedAccessLogTag(Aws::Map<Aws::String, Aws::String>&& value) { SetCustomizedAccessLogTag(std::move(value)); return *this;}
+
+
+ inline UploadPartRequest& AddCustomizedAccessLogTag(const Aws::String& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+
+ inline UploadPartRequest& AddCustomizedAccessLogTag(Aws::String&& key, const Aws::String& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline UploadPartRequest& AddCustomizedAccessLogTag(const Aws::String& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline UploadPartRequest& AddCustomizedAccessLogTag(Aws::String&& key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), std::move(value)); return *this; }
+
+
+ inline UploadPartRequest& AddCustomizedAccessLogTag(const char* key, Aws::String&& value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, std::move(value)); return *this; }
+
+
+ inline UploadPartRequest& AddCustomizedAccessLogTag(Aws::String&& key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(std::move(key), value); return *this; }
+
+
+ inline UploadPartRequest& AddCustomizedAccessLogTag(const char* key, const char* value) { m_customizedAccessLogTagHasBeenSet = true; m_customizedAccessLogTag.emplace(key, value); return *this; }
+
+ private:
+
+
+ Aws::String m_bucket;
+ bool m_bucketHasBeenSet;
+
+ long long m_contentLength;
+ bool m_contentLengthHasBeenSet;
+
+ Aws::String m_contentMD5;
+ bool m_contentMD5HasBeenSet;
+
+ Aws::String m_key;
+ bool m_keyHasBeenSet;
+
+ int m_partNumber;
+ bool m_partNumberHasBeenSet;
+
+ Aws::String m_uploadId;
+ bool m_uploadIdHasBeenSet;
+
+ Aws::String m_sSECustomerAlgorithm;
+ bool m_sSECustomerAlgorithmHasBeenSet;
+
+ Aws::String m_sSECustomerKey;
+ bool m_sSECustomerKeyHasBeenSet;
+
+ Aws::String m_sSECustomerKeyMD5;
+ bool m_sSECustomerKeyMD5HasBeenSet;
+
+ RequestPayer m_requestPayer;
+ bool m_requestPayerHasBeenSet;
+
+ Aws::String m_expectedBucketOwner;
+ bool m_expectedBucketOwnerHasBeenSet;
+
+ Aws::Map<Aws::String, Aws::String> m_customizedAccessLogTag;
+ bool m_customizedAccessLogTagHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartResult.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartResult.h
new file mode 100644
index 00000000000..146a25021b8
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartResult.h
@@ -0,0 +1,307 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ServerSideEncryption.h>
+#include <aws/core/utils/memory/stl/AWSString.h>
+#include <aws/s3/model/RequestCharged.h>
+#include <utility>
+
+namespace Aws
+{
+template<typename RESULT_TYPE>
+class AmazonWebServiceResult;
+
+namespace Utils
+{
+namespace Xml
+{
+ class XmlDocument;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+ class AWS_S3_API UploadPartResult
+ {
+ public:
+ UploadPartResult();
+ UploadPartResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+ UploadPartResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
+
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); }
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline UploadPartResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;}
+
+ /**
+ * <p>The server-side encryption algorithm used when storing this object in Amazon
+ * S3 (for example, AES256, aws:kms).</p>
+ */
+ inline UploadPartResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline const Aws::String& GetETag() const{ return m_eTag; }
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline void SetETag(const Aws::String& value) { m_eTag = value; }
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline void SetETag(Aws::String&& value) { m_eTag = std::move(value); }
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline void SetETag(const char* value) { m_eTag.assign(value); }
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline UploadPartResult& WithETag(const Aws::String& value) { SetETag(value); return *this;}
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline UploadPartResult& WithETag(Aws::String&& value) { SetETag(std::move(value)); return *this;}
+
+ /**
+ * <p>Entity tag for the uploaded object.</p>
+ */
+ inline UploadPartResult& WithETag(const char* value) { SetETag(value); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline const Aws::String& GetSSECustomerAlgorithm() const{ return m_sSECustomerAlgorithm; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const Aws::String& value) { m_sSECustomerAlgorithm = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(Aws::String&& value) { m_sSECustomerAlgorithm = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline void SetSSECustomerAlgorithm(const char* value) { m_sSECustomerAlgorithm.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline UploadPartResult& WithSSECustomerAlgorithm(const Aws::String& value) { SetSSECustomerAlgorithm(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline UploadPartResult& WithSSECustomerAlgorithm(Aws::String&& value) { SetSSECustomerAlgorithm(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header confirming the encryption
+ * algorithm used.</p>
+ */
+ inline UploadPartResult& WithSSECustomerAlgorithm(const char* value) { SetSSECustomerAlgorithm(value); return *this;}
+
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline const Aws::String& GetSSECustomerKeyMD5() const{ return m_sSECustomerKeyMD5; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const Aws::String& value) { m_sSECustomerKeyMD5 = value; }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(Aws::String&& value) { m_sSECustomerKeyMD5 = std::move(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline void SetSSECustomerKeyMD5(const char* value) { m_sSECustomerKeyMD5.assign(value); }
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline UploadPartResult& WithSSECustomerKeyMD5(const Aws::String& value) { SetSSECustomerKeyMD5(value); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline UploadPartResult& WithSSECustomerKeyMD5(Aws::String&& value) { SetSSECustomerKeyMD5(std::move(value)); return *this;}
+
+ /**
+ * <p>If server-side encryption with a customer-provided encryption key was
+ * requested, the response will include this header to provide round-trip message
+ * integrity verification of the customer-provided encryption key.</p>
+ */
+ inline UploadPartResult& WithSSECustomerKeyMD5(const char* value) { SetSSECustomerKeyMD5(value); return *this;}
+
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) was used for the
+ * object.</p>
+ */
+ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) was used for the
+ * object.</p>
+ */
+ inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); }
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) was used for the
+ * object.</p>
+ */
+ inline UploadPartResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) was used for the
+ * object.</p>
+ */
+ inline UploadPartResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;}
+
+ /**
+ * <p>If present, specifies the ID of the AWS Key Management Service (AWS KMS)
+ * symmetric customer managed customer master key (CMK) was used for the
+ * object.</p>
+ */
+ inline UploadPartResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;}
+
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; }
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; }
+
+ /**
+ * <p>Indicates whether the multipart upload uses an S3 Bucket Key for server-side
+ * encryption with AWS KMS (SSE-KMS).</p>
+ */
+ inline UploadPartResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;}
+
+
+
+ inline const RequestCharged& GetRequestCharged() const{ return m_requestCharged; }
+
+
+ inline void SetRequestCharged(const RequestCharged& value) { m_requestCharged = value; }
+
+
+ inline void SetRequestCharged(RequestCharged&& value) { m_requestCharged = std::move(value); }
+
+
+ inline UploadPartResult& WithRequestCharged(const RequestCharged& value) { SetRequestCharged(value); return *this;}
+
+
+ inline UploadPartResult& WithRequestCharged(RequestCharged&& value) { SetRequestCharged(std::move(value)); return *this;}
+
+ private:
+
+ ServerSideEncryption m_serverSideEncryption;
+
+ Aws::String m_eTag;
+
+ Aws::String m_sSECustomerAlgorithm;
+
+ Aws::String m_sSECustomerKeyMD5;
+
+ Aws::String m_sSEKMSKeyId;
+
+ bool m_bucketKeyEnabled;
+
+ RequestCharged m_requestCharged;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/VersioningConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/VersioningConfiguration.h
new file mode 100644
index 00000000000..b30cfbd698c
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/VersioningConfiguration.h
@@ -0,0 +1,135 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/MFADelete.h>
+#include <aws/s3/model/BucketVersioningStatus.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Describes the versioning state of an Amazon S3 bucket. For more information,
+ * see <a
+ * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html">PUT
+ * Bucket versioning</a> in the <i>Amazon Simple Storage Service API
+ * Reference</i>.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/VersioningConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API VersioningConfiguration
+ {
+ public:
+ VersioningConfiguration();
+ VersioningConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ VersioningConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline const MFADelete& GetMFADelete() const{ return m_mFADelete; }
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline bool MFADeleteHasBeenSet() const { return m_mFADeleteHasBeenSet; }
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline void SetMFADelete(const MFADelete& value) { m_mFADeleteHasBeenSet = true; m_mFADelete = value; }
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline void SetMFADelete(MFADelete&& value) { m_mFADeleteHasBeenSet = true; m_mFADelete = std::move(value); }
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline VersioningConfiguration& WithMFADelete(const MFADelete& value) { SetMFADelete(value); return *this;}
+
+ /**
+ * <p>Specifies whether MFA delete is enabled in the bucket versioning
+ * configuration. This element is only returned if the bucket has been configured
+ * with MFA delete. If the bucket has never been so configured, this element is not
+ * returned.</p>
+ */
+ inline VersioningConfiguration& WithMFADelete(MFADelete&& value) { SetMFADelete(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline const BucketVersioningStatus& GetStatus() const{ return m_status; }
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline void SetStatus(const BucketVersioningStatus& value) { m_statusHasBeenSet = true; m_status = value; }
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline void SetStatus(BucketVersioningStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline VersioningConfiguration& WithStatus(const BucketVersioningStatus& value) { SetStatus(value); return *this;}
+
+ /**
+ * <p>The versioning state of the bucket.</p>
+ */
+ inline VersioningConfiguration& WithStatus(BucketVersioningStatus&& value) { SetStatus(std::move(value)); return *this;}
+
+ private:
+
+ MFADelete m_mFADelete;
+ bool m_mFADeleteHasBeenSet;
+
+ BucketVersioningStatus m_status;
+ bool m_statusHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws
diff --git a/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/WebsiteConfiguration.h b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/WebsiteConfiguration.h
new file mode 100644
index 00000000000..d862c3e2304
--- /dev/null
+++ b/contrib/libs/aws-sdk-cpp/aws-cpp-sdk-s3/include/aws/s3/model/WebsiteConfiguration.h
@@ -0,0 +1,207 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include <aws/s3/S3_EXPORTS.h>
+#include <aws/s3/model/ErrorDocument.h>
+#include <aws/s3/model/IndexDocument.h>
+#include <aws/s3/model/RedirectAllRequestsTo.h>
+#include <aws/core/utils/memory/stl/AWSVector.h>
+#include <aws/s3/model/RoutingRule.h>
+#include <utility>
+
+namespace Aws
+{
+namespace Utils
+{
+namespace Xml
+{
+ class XmlNode;
+} // namespace Xml
+} // namespace Utils
+namespace S3
+{
+namespace Model
+{
+
+ /**
+ * <p>Specifies website configuration parameters for an Amazon S3
+ * bucket.</p><p><h3>See Also:</h3> <a
+ * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WebsiteConfiguration">AWS
+ * API Reference</a></p>
+ */
+ class AWS_S3_API WebsiteConfiguration
+ {
+ public:
+ WebsiteConfiguration();
+ WebsiteConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode);
+ WebsiteConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
+
+ void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
+
+
+ /**
+ * <p>The name of the error document for the website.</p>
+ */
+ inline const ErrorDocument& GetErrorDocument() const{ return m_errorDocument; }
+
+ /**
+ * <p>The name of the error document for the website.</p>
+ */
+ inline bool ErrorDocumentHasBeenSet() const { return m_errorDocumentHasBeenSet; }
+
+ /**
+ * <p>The name of the error document for the website.</p>
+ */
+ inline void SetErrorDocument(const ErrorDocument& value) { m_errorDocumentHasBeenSet = true; m_errorDocument = value; }
+
+ /**
+ * <p>The name of the error document for the website.</p>
+ */
+ inline void SetErrorDocument(ErrorDocument&& value) { m_errorDocumentHasBeenSet = true; m_errorDocument = std::move(value); }
+
+ /**
+ * <p>The name of the error document for the website.</p>
+ */
+ inline WebsiteConfiguration& WithErrorDocument(const ErrorDocument& value) { SetErrorDocument(value); return *this;}
+
+ /**
+ * <p>The name of the error document for the website.</p>
+ */
+ inline WebsiteConfiguration& WithErrorDocument(ErrorDocument&& value) { SetErrorDocument(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The name of the index document for the website.</p>
+ */
+ inline const IndexDocument& GetIndexDocument() const{ return m_indexDocument; }
+
+ /**
+ * <p>The name of the index document for the website.</p>
+ */
+ inline bool IndexDocumentHasBeenSet() const { return m_indexDocumentHasBeenSet; }
+
+ /**
+ * <p>The name of the index document for the website.</p>
+ */
+ inline void SetIndexDocument(const IndexDocument& value) { m_indexDocumentHasBeenSet = true; m_indexDocument = value; }
+
+ /**
+ * <p>The name of the index document for the website.</p>
+ */
+ inline void SetIndexDocument(IndexDocument&& value) { m_indexDocumentHasBeenSet = true; m_indexDocument = std::move(value); }
+
+ /**
+ * <p>The name of the index document for the website.</p>
+ */
+ inline WebsiteConfiguration& WithIndexDocument(const IndexDocument& value) { SetIndexDocument(value); return *this;}
+
+ /**
+ * <p>The name of the index document for the website.</p>
+ */
+ inline WebsiteConfiguration& WithIndexDocument(IndexDocument&& value) { SetIndexDocument(std::move(value)); return *this;}
+
+
+ /**
+ * <p>The redirect behavior for every request to this bucket's website
+ * endpoint.</p> <p>If you specify this property, you can't specify any
+ * other property.</p>
+ */
+ inline const RedirectAllRequestsTo& GetRedirectAllRequestsTo() const{ return m_redirectAllRequestsTo; }
+
+ /**
+ * <p>The redirect behavior for every request to this bucket's website
+ * endpoint.</p> <p>If you specify this property, you can't specify any
+ * other property.</p>
+ */
+ inline bool RedirectAllRequestsToHasBeenSet() const { return m_redirectAllRequestsToHasBeenSet; }
+
+ /**
+ * <p>The redirect behavior for every request to this bucket's website
+ * endpoint.</p> <p>If you specify this property, you can't specify any
+ * other property.</p>
+ */
+ inline void SetRedirectAllRequestsTo(const RedirectAllRequestsTo& value) { m_redirectAllRequestsToHasBeenSet = true; m_redirectAllRequestsTo = value; }
+
+ /**
+ * <p>The redirect behavior for every request to this bucket's website
+ * endpoint.</p> <p>If you specify this property, you can't specify any
+ * other property.</p>
+ */
+ inline void SetRedirectAllRequestsTo(RedirectAllRequestsTo&& value) { m_redirectAllRequestsToHasBeenSet = true; m_redirectAllRequestsTo = std::move(value); }
+
+ /**
+ * <p>The redirect behavior for every request to this bucket's website
+ * endpoint.</p> <p>If you specify this property, you can't specify any
+ * other property.</p>
+ */
+ inline WebsiteConfiguration& WithRedirectAllRequestsTo(const RedirectAllRequestsTo& value) { SetRedirectAllRequestsTo(value); return *this;}
+
+ /**
+ * <p>The redirect behavior for every request to this bucket's website
+ * endpoint.</p> <p>If you specify this property, you can't specify any
+ * other property.</p>
+ */
+ inline WebsiteConfiguration& WithRedirectAllRequestsTo(RedirectAllRequestsTo&& value) { SetRedirectAllRequestsTo(std::move(value)); return *this;}
+
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline const Aws::Vector<RoutingRule>& GetRoutingRules() const{ return m_routingRules; }
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline bool RoutingRulesHasBeenSet() const { return m_routingRulesHasBeenSet; }
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline void SetRoutingRules(const Aws::Vector<RoutingRule>& value) { m_routingRulesHasBeenSet = true; m_routingRules = value; }
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline void SetRoutingRules(Aws::Vector<RoutingRule>&& value) { m_routingRulesHasBeenSet = true; m_routingRules = std::move(value); }
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline WebsiteConfiguration& WithRoutingRules(const Aws::Vector<RoutingRule>& value) { SetRoutingRules(value); return *this;}
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline WebsiteConfiguration& WithRoutingRules(Aws::Vector<RoutingRule>&& value) { SetRoutingRules(std::move(value)); return *this;}
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline WebsiteConfiguration& AddRoutingRules(const RoutingRule& value) { m_routingRulesHasBeenSet = true; m_routingRules.push_back(value); return *this; }
+
+ /**
+ * <p>Rules that define when a redirect is applied and the redirect behavior.</p>
+ */
+ inline WebsiteConfiguration& AddRoutingRules(RoutingRule&& value) { m_routingRulesHasBeenSet = true; m_routingRules.push_back(std::move(value)); return *this; }
+
+ private:
+
+ ErrorDocument m_errorDocument;
+ bool m_errorDocumentHasBeenSet;
+
+ IndexDocument m_indexDocument;
+ bool m_indexDocumentHasBeenSet;
+
+ RedirectAllRequestsTo m_redirectAllRequestsTo;
+ bool m_redirectAllRequestsToHasBeenSet;
+
+ Aws::Vector<RoutingRule> m_routingRules;
+ bool m_routingRulesHasBeenSet;
+ };
+
+} // namespace Model
+} // namespace S3
+} // namespace Aws