{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.S3.PutBucketIntelligentTieringConfiguration
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Puts a S3 Intelligent-Tiering configuration to the specified bucket. You
-- can have up to 1,000 S3 Intelligent-Tiering configurations per bucket.
--
-- 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 performance impact or operational overhead. S3
-- Intelligent-Tiering delivers automatic cost savings in two low latency
-- and high throughput access tiers. For data that can be accessed
-- asynchronously, you can choose to activate automatic archiving
-- capabilities within the S3 Intelligent-Tiering storage class.
--
-- The S3 Intelligent-Tiering storage class is the ideal storage class for
-- data with unknown, changing, or unpredictable access patterns,
-- independent of object size or retention period. If the size of an object
-- is less than 128 KB, it is not eligible for auto-tiering. Smaller
-- objects can be stored, but they are always charged at the Frequent
-- Access tier rates in the S3 Intelligent-Tiering storage class.
--
-- For more information, see
-- <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>.
--
-- Operations related to @PutBucketIntelligentTieringConfiguration@
-- include:
--
-- -   <https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html DeleteBucketIntelligentTieringConfiguration>
--
-- -   <https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html GetBucketIntelligentTieringConfiguration>
--
-- -   <https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html ListBucketIntelligentTieringConfigurations>
--
-- You only need S3 Intelligent-Tiering enabled on a bucket if you want to
-- automatically move objects stored in the S3 Intelligent-Tiering storage
-- class to the Archive Access or Deep Archive Access tier.
--
-- __Special Errors__
--
-- -   __HTTP 400 Bad Request Error__
--
--     -   /Code:/ InvalidArgument
--
--     -   /Cause:/ Invalid Argument
--
-- -   __HTTP 400 Bad Request Error__
--
--     -   /Code:/ TooManyConfigurations
--
--     -   /Cause:/ You are attempting to create a new configuration but
--         have already reached the 1,000-configuration limit.
--
-- -   __HTTP 403 Forbidden Error__
--
--     -   /Code:/ AccessDenied
--
--     -   /Cause:/ You are not the owner of the specified bucket, or you
--         do not have the @s3:PutIntelligentTieringConfiguration@ bucket
--         permission to set the configuration on the bucket.
module Amazonka.S3.PutBucketIntelligentTieringConfiguration
  ( -- * Creating a Request
    PutBucketIntelligentTieringConfiguration (..),
    newPutBucketIntelligentTieringConfiguration,

    -- * Request Lenses
    putBucketIntelligentTieringConfiguration_bucket,
    putBucketIntelligentTieringConfiguration_id,
    putBucketIntelligentTieringConfiguration_intelligentTieringConfiguration,

    -- * Destructuring the Response
    PutBucketIntelligentTieringConfigurationResponse (..),
    newPutBucketIntelligentTieringConfigurationResponse,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.S3.Types

-- | /See:/ 'newPutBucketIntelligentTieringConfiguration' smart constructor.
data PutBucketIntelligentTieringConfiguration = PutBucketIntelligentTieringConfiguration'
  { -- | The name of the Amazon S3 bucket whose configuration you want to modify
    -- or retrieve.
    PutBucketIntelligentTieringConfiguration -> BucketName
bucket :: BucketName,
    -- | The ID used to identify the S3 Intelligent-Tiering configuration.
    PutBucketIntelligentTieringConfiguration -> Text
id :: Prelude.Text,
    -- | Container for S3 Intelligent-Tiering configuration.
    PutBucketIntelligentTieringConfiguration
-> IntelligentTieringConfiguration
intelligentTieringConfiguration :: IntelligentTieringConfiguration
  }
  deriving (PutBucketIntelligentTieringConfiguration
-> PutBucketIntelligentTieringConfiguration -> Bool
(PutBucketIntelligentTieringConfiguration
 -> PutBucketIntelligentTieringConfiguration -> Bool)
-> (PutBucketIntelligentTieringConfiguration
    -> PutBucketIntelligentTieringConfiguration -> Bool)
-> Eq PutBucketIntelligentTieringConfiguration
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PutBucketIntelligentTieringConfiguration
-> PutBucketIntelligentTieringConfiguration -> Bool
$c/= :: PutBucketIntelligentTieringConfiguration
-> PutBucketIntelligentTieringConfiguration -> Bool
== :: PutBucketIntelligentTieringConfiguration
-> PutBucketIntelligentTieringConfiguration -> Bool
$c== :: PutBucketIntelligentTieringConfiguration
-> PutBucketIntelligentTieringConfiguration -> Bool
Prelude.Eq, ReadPrec [PutBucketIntelligentTieringConfiguration]
ReadPrec PutBucketIntelligentTieringConfiguration
Int -> ReadS PutBucketIntelligentTieringConfiguration
ReadS [PutBucketIntelligentTieringConfiguration]
(Int -> ReadS PutBucketIntelligentTieringConfiguration)
-> ReadS [PutBucketIntelligentTieringConfiguration]
-> ReadPrec PutBucketIntelligentTieringConfiguration
-> ReadPrec [PutBucketIntelligentTieringConfiguration]
-> Read PutBucketIntelligentTieringConfiguration
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PutBucketIntelligentTieringConfiguration]
$creadListPrec :: ReadPrec [PutBucketIntelligentTieringConfiguration]
readPrec :: ReadPrec PutBucketIntelligentTieringConfiguration
$creadPrec :: ReadPrec PutBucketIntelligentTieringConfiguration
readList :: ReadS [PutBucketIntelligentTieringConfiguration]
$creadList :: ReadS [PutBucketIntelligentTieringConfiguration]
readsPrec :: Int -> ReadS PutBucketIntelligentTieringConfiguration
$creadsPrec :: Int -> ReadS PutBucketIntelligentTieringConfiguration
Prelude.Read, Int -> PutBucketIntelligentTieringConfiguration -> ShowS
[PutBucketIntelligentTieringConfiguration] -> ShowS
PutBucketIntelligentTieringConfiguration -> String
(Int -> PutBucketIntelligentTieringConfiguration -> ShowS)
-> (PutBucketIntelligentTieringConfiguration -> String)
-> ([PutBucketIntelligentTieringConfiguration] -> ShowS)
-> Show PutBucketIntelligentTieringConfiguration
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PutBucketIntelligentTieringConfiguration] -> ShowS
$cshowList :: [PutBucketIntelligentTieringConfiguration] -> ShowS
show :: PutBucketIntelligentTieringConfiguration -> String
$cshow :: PutBucketIntelligentTieringConfiguration -> String
showsPrec :: Int -> PutBucketIntelligentTieringConfiguration -> ShowS
$cshowsPrec :: Int -> PutBucketIntelligentTieringConfiguration -> ShowS
Prelude.Show, (forall x.
 PutBucketIntelligentTieringConfiguration
 -> Rep PutBucketIntelligentTieringConfiguration x)
-> (forall x.
    Rep PutBucketIntelligentTieringConfiguration x
    -> PutBucketIntelligentTieringConfiguration)
-> Generic PutBucketIntelligentTieringConfiguration
forall x.
Rep PutBucketIntelligentTieringConfiguration x
-> PutBucketIntelligentTieringConfiguration
forall x.
PutBucketIntelligentTieringConfiguration
-> Rep PutBucketIntelligentTieringConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PutBucketIntelligentTieringConfiguration x
-> PutBucketIntelligentTieringConfiguration
$cfrom :: forall x.
PutBucketIntelligentTieringConfiguration
-> Rep PutBucketIntelligentTieringConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'PutBucketIntelligentTieringConfiguration' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'bucket', 'putBucketIntelligentTieringConfiguration_bucket' - The name of the Amazon S3 bucket whose configuration you want to modify
-- or retrieve.
--
-- 'id', 'putBucketIntelligentTieringConfiguration_id' - The ID used to identify the S3 Intelligent-Tiering configuration.
--
-- 'intelligentTieringConfiguration', 'putBucketIntelligentTieringConfiguration_intelligentTieringConfiguration' - Container for S3 Intelligent-Tiering configuration.
newPutBucketIntelligentTieringConfiguration ::
  -- | 'bucket'
  BucketName ->
  -- | 'id'
  Prelude.Text ->
  -- | 'intelligentTieringConfiguration'
  IntelligentTieringConfiguration ->
  PutBucketIntelligentTieringConfiguration
newPutBucketIntelligentTieringConfiguration :: BucketName
-> Text
-> IntelligentTieringConfiguration
-> PutBucketIntelligentTieringConfiguration
newPutBucketIntelligentTieringConfiguration
  BucketName
pBucket_
  Text
pId_
  IntelligentTieringConfiguration
pIntelligentTieringConfiguration_ =
    PutBucketIntelligentTieringConfiguration' :: BucketName
-> Text
-> IntelligentTieringConfiguration
-> PutBucketIntelligentTieringConfiguration
PutBucketIntelligentTieringConfiguration'
      { $sel:bucket:PutBucketIntelligentTieringConfiguration' :: BucketName
bucket =
          BucketName
pBucket_,
        $sel:id:PutBucketIntelligentTieringConfiguration' :: Text
id = Text
pId_,
        $sel:intelligentTieringConfiguration:PutBucketIntelligentTieringConfiguration' :: IntelligentTieringConfiguration
intelligentTieringConfiguration =
          IntelligentTieringConfiguration
pIntelligentTieringConfiguration_
      }

-- | The name of the Amazon S3 bucket whose configuration you want to modify
-- or retrieve.
putBucketIntelligentTieringConfiguration_bucket :: Lens.Lens' PutBucketIntelligentTieringConfiguration BucketName
putBucketIntelligentTieringConfiguration_bucket :: (BucketName -> f BucketName)
-> PutBucketIntelligentTieringConfiguration
-> f PutBucketIntelligentTieringConfiguration
putBucketIntelligentTieringConfiguration_bucket = (PutBucketIntelligentTieringConfiguration -> BucketName)
-> (PutBucketIntelligentTieringConfiguration
    -> BucketName -> PutBucketIntelligentTieringConfiguration)
-> Lens
     PutBucketIntelligentTieringConfiguration
     PutBucketIntelligentTieringConfiguration
     BucketName
     BucketName
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutBucketIntelligentTieringConfiguration' {BucketName
bucket :: BucketName
$sel:bucket:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration -> BucketName
bucket} -> BucketName
bucket) (\s :: PutBucketIntelligentTieringConfiguration
s@PutBucketIntelligentTieringConfiguration' {} BucketName
a -> PutBucketIntelligentTieringConfiguration
s {$sel:bucket:PutBucketIntelligentTieringConfiguration' :: BucketName
bucket = BucketName
a} :: PutBucketIntelligentTieringConfiguration)

-- | The ID used to identify the S3 Intelligent-Tiering configuration.
putBucketIntelligentTieringConfiguration_id :: Lens.Lens' PutBucketIntelligentTieringConfiguration Prelude.Text
putBucketIntelligentTieringConfiguration_id :: (Text -> f Text)
-> PutBucketIntelligentTieringConfiguration
-> f PutBucketIntelligentTieringConfiguration
putBucketIntelligentTieringConfiguration_id = (PutBucketIntelligentTieringConfiguration -> Text)
-> (PutBucketIntelligentTieringConfiguration
    -> Text -> PutBucketIntelligentTieringConfiguration)
-> Lens
     PutBucketIntelligentTieringConfiguration
     PutBucketIntelligentTieringConfiguration
     Text
     Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutBucketIntelligentTieringConfiguration' {Text
id :: Text
$sel:id:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration -> Text
id} -> Text
id) (\s :: PutBucketIntelligentTieringConfiguration
s@PutBucketIntelligentTieringConfiguration' {} Text
a -> PutBucketIntelligentTieringConfiguration
s {$sel:id:PutBucketIntelligentTieringConfiguration' :: Text
id = Text
a} :: PutBucketIntelligentTieringConfiguration)

-- | Container for S3 Intelligent-Tiering configuration.
putBucketIntelligentTieringConfiguration_intelligentTieringConfiguration :: Lens.Lens' PutBucketIntelligentTieringConfiguration IntelligentTieringConfiguration
putBucketIntelligentTieringConfiguration_intelligentTieringConfiguration :: (IntelligentTieringConfiguration
 -> f IntelligentTieringConfiguration)
-> PutBucketIntelligentTieringConfiguration
-> f PutBucketIntelligentTieringConfiguration
putBucketIntelligentTieringConfiguration_intelligentTieringConfiguration = (PutBucketIntelligentTieringConfiguration
 -> IntelligentTieringConfiguration)
-> (PutBucketIntelligentTieringConfiguration
    -> IntelligentTieringConfiguration
    -> PutBucketIntelligentTieringConfiguration)
-> Lens
     PutBucketIntelligentTieringConfiguration
     PutBucketIntelligentTieringConfiguration
     IntelligentTieringConfiguration
     IntelligentTieringConfiguration
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutBucketIntelligentTieringConfiguration' {IntelligentTieringConfiguration
intelligentTieringConfiguration :: IntelligentTieringConfiguration
$sel:intelligentTieringConfiguration:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration
-> IntelligentTieringConfiguration
intelligentTieringConfiguration} -> IntelligentTieringConfiguration
intelligentTieringConfiguration) (\s :: PutBucketIntelligentTieringConfiguration
s@PutBucketIntelligentTieringConfiguration' {} IntelligentTieringConfiguration
a -> PutBucketIntelligentTieringConfiguration
s {$sel:intelligentTieringConfiguration:PutBucketIntelligentTieringConfiguration' :: IntelligentTieringConfiguration
intelligentTieringConfiguration = IntelligentTieringConfiguration
a} :: PutBucketIntelligentTieringConfiguration)

instance
  Core.AWSRequest
    PutBucketIntelligentTieringConfiguration
  where
  type
    AWSResponse
      PutBucketIntelligentTieringConfiguration =
      PutBucketIntelligentTieringConfigurationResponse
  request :: PutBucketIntelligentTieringConfiguration
-> Request PutBucketIntelligentTieringConfiguration
request =
    Request PutBucketIntelligentTieringConfiguration
-> Request PutBucketIntelligentTieringConfiguration
forall a. Request a -> Request a
Request.s3vhost
      (Request PutBucketIntelligentTieringConfiguration
 -> Request PutBucketIntelligentTieringConfiguration)
-> (PutBucketIntelligentTieringConfiguration
    -> Request PutBucketIntelligentTieringConfiguration)
-> PutBucketIntelligentTieringConfiguration
-> Request PutBucketIntelligentTieringConfiguration
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. Service
-> PutBucketIntelligentTieringConfiguration
-> Request PutBucketIntelligentTieringConfiguration
forall a. (ToRequest a, ToElement a) => Service -> a -> Request a
Request.putXML Service
defaultService
  response :: Logger
-> Service
-> Proxy PutBucketIntelligentTieringConfiguration
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse PutBucketIntelligentTieringConfiguration)))
response =
    AWSResponse PutBucketIntelligentTieringConfiguration
-> Logger
-> Service
-> Proxy PutBucketIntelligentTieringConfiguration
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse PutBucketIntelligentTieringConfiguration)))
forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull
      AWSResponse PutBucketIntelligentTieringConfiguration
PutBucketIntelligentTieringConfigurationResponse
PutBucketIntelligentTieringConfigurationResponse'

instance
  Prelude.Hashable
    PutBucketIntelligentTieringConfiguration

instance
  Prelude.NFData
    PutBucketIntelligentTieringConfiguration

instance
  Core.ToElement
    PutBucketIntelligentTieringConfiguration
  where
  toElement :: PutBucketIntelligentTieringConfiguration -> Element
toElement
    PutBucketIntelligentTieringConfiguration' {Text
BucketName
IntelligentTieringConfiguration
intelligentTieringConfiguration :: IntelligentTieringConfiguration
id :: Text
bucket :: BucketName
$sel:intelligentTieringConfiguration:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration
-> IntelligentTieringConfiguration
$sel:id:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration -> Text
$sel:bucket:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration -> BucketName
..} =
      Name -> IntelligentTieringConfiguration -> Element
forall a. ToXML a => Name -> a -> Element
Core.mkElement
        Name
"{http://s3.amazonaws.com/doc/2006-03-01/}IntelligentTieringConfiguration"
        IntelligentTieringConfiguration
intelligentTieringConfiguration

instance
  Core.ToHeaders
    PutBucketIntelligentTieringConfiguration
  where
  toHeaders :: PutBucketIntelligentTieringConfiguration -> [Header]
toHeaders = [Header] -> PutBucketIntelligentTieringConfiguration -> [Header]
forall a b. a -> b -> a
Prelude.const [Header]
forall a. Monoid a => a
Prelude.mempty

instance
  Core.ToPath
    PutBucketIntelligentTieringConfiguration
  where
  toPath :: PutBucketIntelligentTieringConfiguration -> ByteString
toPath PutBucketIntelligentTieringConfiguration' {Text
BucketName
IntelligentTieringConfiguration
intelligentTieringConfiguration :: IntelligentTieringConfiguration
id :: Text
bucket :: BucketName
$sel:intelligentTieringConfiguration:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration
-> IntelligentTieringConfiguration
$sel:id:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration -> Text
$sel:bucket:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration -> BucketName
..} =
    [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"/", BucketName -> ByteString
forall a. ToByteString a => a -> ByteString
Core.toBS BucketName
bucket]

instance
  Core.ToQuery
    PutBucketIntelligentTieringConfiguration
  where
  toQuery :: PutBucketIntelligentTieringConfiguration -> QueryString
toQuery PutBucketIntelligentTieringConfiguration' {Text
BucketName
IntelligentTieringConfiguration
intelligentTieringConfiguration :: IntelligentTieringConfiguration
id :: Text
bucket :: BucketName
$sel:intelligentTieringConfiguration:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration
-> IntelligentTieringConfiguration
$sel:id:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration -> Text
$sel:bucket:PutBucketIntelligentTieringConfiguration' :: PutBucketIntelligentTieringConfiguration -> BucketName
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"id" ByteString -> Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Text
id, QueryString
"intelligent-tiering"]

-- | /See:/ 'newPutBucketIntelligentTieringConfigurationResponse' smart constructor.
data PutBucketIntelligentTieringConfigurationResponse = PutBucketIntelligentTieringConfigurationResponse'
  {
  }
  deriving (PutBucketIntelligentTieringConfigurationResponse
-> PutBucketIntelligentTieringConfigurationResponse -> Bool
(PutBucketIntelligentTieringConfigurationResponse
 -> PutBucketIntelligentTieringConfigurationResponse -> Bool)
-> (PutBucketIntelligentTieringConfigurationResponse
    -> PutBucketIntelligentTieringConfigurationResponse -> Bool)
-> Eq PutBucketIntelligentTieringConfigurationResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PutBucketIntelligentTieringConfigurationResponse
-> PutBucketIntelligentTieringConfigurationResponse -> Bool
$c/= :: PutBucketIntelligentTieringConfigurationResponse
-> PutBucketIntelligentTieringConfigurationResponse -> Bool
== :: PutBucketIntelligentTieringConfigurationResponse
-> PutBucketIntelligentTieringConfigurationResponse -> Bool
$c== :: PutBucketIntelligentTieringConfigurationResponse
-> PutBucketIntelligentTieringConfigurationResponse -> Bool
Prelude.Eq, ReadPrec [PutBucketIntelligentTieringConfigurationResponse]
ReadPrec PutBucketIntelligentTieringConfigurationResponse
Int -> ReadS PutBucketIntelligentTieringConfigurationResponse
ReadS [PutBucketIntelligentTieringConfigurationResponse]
(Int -> ReadS PutBucketIntelligentTieringConfigurationResponse)
-> ReadS [PutBucketIntelligentTieringConfigurationResponse]
-> ReadPrec PutBucketIntelligentTieringConfigurationResponse
-> ReadPrec [PutBucketIntelligentTieringConfigurationResponse]
-> Read PutBucketIntelligentTieringConfigurationResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PutBucketIntelligentTieringConfigurationResponse]
$creadListPrec :: ReadPrec [PutBucketIntelligentTieringConfigurationResponse]
readPrec :: ReadPrec PutBucketIntelligentTieringConfigurationResponse
$creadPrec :: ReadPrec PutBucketIntelligentTieringConfigurationResponse
readList :: ReadS [PutBucketIntelligentTieringConfigurationResponse]
$creadList :: ReadS [PutBucketIntelligentTieringConfigurationResponse]
readsPrec :: Int -> ReadS PutBucketIntelligentTieringConfigurationResponse
$creadsPrec :: Int -> ReadS PutBucketIntelligentTieringConfigurationResponse
Prelude.Read, Int -> PutBucketIntelligentTieringConfigurationResponse -> ShowS
[PutBucketIntelligentTieringConfigurationResponse] -> ShowS
PutBucketIntelligentTieringConfigurationResponse -> String
(Int -> PutBucketIntelligentTieringConfigurationResponse -> ShowS)
-> (PutBucketIntelligentTieringConfigurationResponse -> String)
-> ([PutBucketIntelligentTieringConfigurationResponse] -> ShowS)
-> Show PutBucketIntelligentTieringConfigurationResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PutBucketIntelligentTieringConfigurationResponse] -> ShowS
$cshowList :: [PutBucketIntelligentTieringConfigurationResponse] -> ShowS
show :: PutBucketIntelligentTieringConfigurationResponse -> String
$cshow :: PutBucketIntelligentTieringConfigurationResponse -> String
showsPrec :: Int -> PutBucketIntelligentTieringConfigurationResponse -> ShowS
$cshowsPrec :: Int -> PutBucketIntelligentTieringConfigurationResponse -> ShowS
Prelude.Show, (forall x.
 PutBucketIntelligentTieringConfigurationResponse
 -> Rep PutBucketIntelligentTieringConfigurationResponse x)
-> (forall x.
    Rep PutBucketIntelligentTieringConfigurationResponse x
    -> PutBucketIntelligentTieringConfigurationResponse)
-> Generic PutBucketIntelligentTieringConfigurationResponse
forall x.
Rep PutBucketIntelligentTieringConfigurationResponse x
-> PutBucketIntelligentTieringConfigurationResponse
forall x.
PutBucketIntelligentTieringConfigurationResponse
-> Rep PutBucketIntelligentTieringConfigurationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PutBucketIntelligentTieringConfigurationResponse x
-> PutBucketIntelligentTieringConfigurationResponse
$cfrom :: forall x.
PutBucketIntelligentTieringConfigurationResponse
-> Rep PutBucketIntelligentTieringConfigurationResponse x
Prelude.Generic)

-- |
-- Create a value of 'PutBucketIntelligentTieringConfigurationResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
newPutBucketIntelligentTieringConfigurationResponse ::
  PutBucketIntelligentTieringConfigurationResponse
newPutBucketIntelligentTieringConfigurationResponse :: PutBucketIntelligentTieringConfigurationResponse
newPutBucketIntelligentTieringConfigurationResponse =
  PutBucketIntelligentTieringConfigurationResponse
PutBucketIntelligentTieringConfigurationResponse'

instance
  Prelude.NFData
    PutBucketIntelligentTieringConfigurationResponse