import { Command as $Command } from "@smithy/smithy-client"; import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; import type { PutBucketVersioningRequest } from "../models/models_0"; import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; /** * @public */ export type { __MetadataBearer }; export { $Command }; /** * @public * * The input for {@link PutBucketVersioningCommand}. */ export interface PutBucketVersioningCommandInput extends PutBucketVersioningRequest { } /** * @public * * The output of {@link PutBucketVersioningCommand}. */ export interface PutBucketVersioningCommandOutput extends __MetadataBearer { } declare const PutBucketVersioningCommand_base: { new (input: PutBucketVersioningCommandInput): import("@smithy/smithy-client").CommandImpl; new (input: PutBucketVersioningCommandInput): import("@smithy/smithy-client").CommandImpl; getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; }; /** * *

This operation is not supported for directory buckets.

*
* *

When you enable versioning on a bucket for the first time, it might take a short amount of time * for the change to be fully propagated. While this change is propagating, you might encounter * intermittent HTTP 404 NoSuchKey errors for requests to objects created or updated after * enabling versioning. We recommend that you wait for 15 minutes after enabling versioning before * issuing write operations (PUT or DELETE) on objects in the bucket.

*
*

Sets the versioning state of an existing bucket.

*

You can set the versioning state with one of the following values:

*

* Enabled—Enables versioning for the objects in the bucket. All * objects added to the bucket receive a unique version ID.

*

* Suspended—Disables versioning for the objects in the bucket. All * objects added to the bucket receive the version ID null.

*

If the versioning state has never been set on a bucket, it has no versioning state; a GetBucketVersioning request does not return a versioning state value.

*

In order to enable MFA Delete, you must be the bucket owner. If you are the bucket owner and want to * enable MFA Delete in the bucket versioning configuration, you must include the x-amz-mfa * request header and the Status and the MfaDelete request elements in a * request to set the versioning state of the bucket.

* *

If you have an object expiration lifecycle configuration in your non-versioned bucket and you want * to maintain the same permanent delete behavior when you enable versioning, you must add a noncurrent * expiration policy. The noncurrent expiration lifecycle configuration will manage the deletes of the * noncurrent object versions in the version-enabled bucket. (A version-enabled bucket maintains one * current and zero or more noncurrent object versions.) For more information, see Lifecycle and * Versioning.

*
*

The following operations are related to PutBucketVersioning:

* * *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

*
* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript * import { S3Client, PutBucketVersioningCommand } from "@aws-sdk/client-s3"; // ES Modules import * // const { S3Client, PutBucketVersioningCommand } = require("@aws-sdk/client-s3"); // CommonJS import * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; * const config = {}; // type is S3ClientConfig * const client = new S3Client(config); * const input = { // PutBucketVersioningRequest * Bucket: "STRING_VALUE", // required * ContentMD5: "STRING_VALUE", * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", * MFA: "STRING_VALUE", * VersioningConfiguration: { // VersioningConfiguration * MFADelete: "Enabled" || "Disabled", * Status: "Enabled" || "Suspended", * }, * ExpectedBucketOwner: "STRING_VALUE", * }; * const command = new PutBucketVersioningCommand(input); * const response = await client.send(command); * // {}; * * ``` * * @param PutBucketVersioningCommandInput - {@link PutBucketVersioningCommandInput} * @returns {@link PutBucketVersioningCommandOutput} * @see {@link PutBucketVersioningCommandInput} for command's `input` shape. * @see {@link PutBucketVersioningCommandOutput} for command's `response` shape. * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. * * @throws {@link S3ServiceException} *

Base exception class for all service exceptions from S3 service.

* * * @example Set versioning configuration on a bucket * ```javascript * // The following example sets versioning configuration on bucket. The configuration enables versioning on the bucket. * const input = { * Bucket: "examplebucket", * VersioningConfiguration: { * MFADelete: "Disabled", * Status: "Enabled" * } * }; * const command = new PutBucketVersioningCommand(input); * const response = await client.send(command); * /* response is * { /* metadata only *\/ } * *\/ * ``` * * @public */ export declare class PutBucketVersioningCommand extends PutBucketVersioningCommand_base { /** @internal type navigation helper, not in runtime. */ protected static __types: { api: { input: PutBucketVersioningRequest; output: {}; }; sdk: { input: PutBucketVersioningCommandInput; output: PutBucketVersioningCommandOutput; }; }; }