{-# 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.Config.DescribeRetentionConfigurations
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns the details of one or more retention configurations. If the
-- retention configuration name is not specified, this action returns the
-- details for all the retention configurations for that account.
--
-- Currently, Config supports only one retention configuration per region
-- in your account.
--
-- This operation returns paginated results.
module Amazonka.Config.DescribeRetentionConfigurations
  ( -- * Creating a Request
    DescribeRetentionConfigurations (..),
    newDescribeRetentionConfigurations,

    -- * Request Lenses
    describeRetentionConfigurations_nextToken,
    describeRetentionConfigurations_retentionConfigurationNames,

    -- * Destructuring the Response
    DescribeRetentionConfigurationsResponse (..),
    newDescribeRetentionConfigurationsResponse,

    -- * Response Lenses
    describeRetentionConfigurationsResponse_nextToken,
    describeRetentionConfigurationsResponse_retentionConfigurations,
    describeRetentionConfigurationsResponse_httpStatus,
  )
where

import Amazonka.Config.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeRetentionConfigurations' smart constructor.
data DescribeRetentionConfigurations = DescribeRetentionConfigurations'
  { -- | The @nextToken@ string returned on a previous page that you use to get
    -- the next page of results in a paginated response.
    DescribeRetentionConfigurations -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of names of retention configurations for which you want details.
    -- If you do not specify a name, Config returns details for all the
    -- retention configurations for that account.
    --
    -- Currently, Config supports only one retention configuration per region
    -- in your account.
    DescribeRetentionConfigurations -> Maybe [Text]
retentionConfigurationNames :: Prelude.Maybe [Prelude.Text]
  }
  deriving (DescribeRetentionConfigurations
-> DescribeRetentionConfigurations -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeRetentionConfigurations
-> DescribeRetentionConfigurations -> Bool
$c/= :: DescribeRetentionConfigurations
-> DescribeRetentionConfigurations -> Bool
== :: DescribeRetentionConfigurations
-> DescribeRetentionConfigurations -> Bool
$c== :: DescribeRetentionConfigurations
-> DescribeRetentionConfigurations -> Bool
Prelude.Eq, ReadPrec [DescribeRetentionConfigurations]
ReadPrec DescribeRetentionConfigurations
Int -> ReadS DescribeRetentionConfigurations
ReadS [DescribeRetentionConfigurations]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeRetentionConfigurations]
$creadListPrec :: ReadPrec [DescribeRetentionConfigurations]
readPrec :: ReadPrec DescribeRetentionConfigurations
$creadPrec :: ReadPrec DescribeRetentionConfigurations
readList :: ReadS [DescribeRetentionConfigurations]
$creadList :: ReadS [DescribeRetentionConfigurations]
readsPrec :: Int -> ReadS DescribeRetentionConfigurations
$creadsPrec :: Int -> ReadS DescribeRetentionConfigurations
Prelude.Read, Int -> DescribeRetentionConfigurations -> ShowS
[DescribeRetentionConfigurations] -> ShowS
DescribeRetentionConfigurations -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeRetentionConfigurations] -> ShowS
$cshowList :: [DescribeRetentionConfigurations] -> ShowS
show :: DescribeRetentionConfigurations -> String
$cshow :: DescribeRetentionConfigurations -> String
showsPrec :: Int -> DescribeRetentionConfigurations -> ShowS
$cshowsPrec :: Int -> DescribeRetentionConfigurations -> ShowS
Prelude.Show, forall x.
Rep DescribeRetentionConfigurations x
-> DescribeRetentionConfigurations
forall x.
DescribeRetentionConfigurations
-> Rep DescribeRetentionConfigurations x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeRetentionConfigurations x
-> DescribeRetentionConfigurations
$cfrom :: forall x.
DescribeRetentionConfigurations
-> Rep DescribeRetentionConfigurations x
Prelude.Generic)

-- |
-- Create a value of 'DescribeRetentionConfigurations' 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:
--
-- 'nextToken', 'describeRetentionConfigurations_nextToken' - The @nextToken@ string returned on a previous page that you use to get
-- the next page of results in a paginated response.
--
-- 'retentionConfigurationNames', 'describeRetentionConfigurations_retentionConfigurationNames' - A list of names of retention configurations for which you want details.
-- If you do not specify a name, Config returns details for all the
-- retention configurations for that account.
--
-- Currently, Config supports only one retention configuration per region
-- in your account.
newDescribeRetentionConfigurations ::
  DescribeRetentionConfigurations
newDescribeRetentionConfigurations :: DescribeRetentionConfigurations
newDescribeRetentionConfigurations =
  DescribeRetentionConfigurations'
    { $sel:nextToken:DescribeRetentionConfigurations' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:retentionConfigurationNames:DescribeRetentionConfigurations' :: Maybe [Text]
retentionConfigurationNames =
        forall a. Maybe a
Prelude.Nothing
    }

-- | The @nextToken@ string returned on a previous page that you use to get
-- the next page of results in a paginated response.
describeRetentionConfigurations_nextToken :: Lens.Lens' DescribeRetentionConfigurations (Prelude.Maybe Prelude.Text)
describeRetentionConfigurations_nextToken :: Lens' DescribeRetentionConfigurations (Maybe Text)
describeRetentionConfigurations_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRetentionConfigurations' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeRetentionConfigurations' :: DescribeRetentionConfigurations -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeRetentionConfigurations
s@DescribeRetentionConfigurations' {} Maybe Text
a -> DescribeRetentionConfigurations
s {$sel:nextToken:DescribeRetentionConfigurations' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeRetentionConfigurations)

-- | A list of names of retention configurations for which you want details.
-- If you do not specify a name, Config returns details for all the
-- retention configurations for that account.
--
-- Currently, Config supports only one retention configuration per region
-- in your account.
describeRetentionConfigurations_retentionConfigurationNames :: Lens.Lens' DescribeRetentionConfigurations (Prelude.Maybe [Prelude.Text])
describeRetentionConfigurations_retentionConfigurationNames :: Lens' DescribeRetentionConfigurations (Maybe [Text])
describeRetentionConfigurations_retentionConfigurationNames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRetentionConfigurations' {Maybe [Text]
retentionConfigurationNames :: Maybe [Text]
$sel:retentionConfigurationNames:DescribeRetentionConfigurations' :: DescribeRetentionConfigurations -> Maybe [Text]
retentionConfigurationNames} -> Maybe [Text]
retentionConfigurationNames) (\s :: DescribeRetentionConfigurations
s@DescribeRetentionConfigurations' {} Maybe [Text]
a -> DescribeRetentionConfigurations
s {$sel:retentionConfigurationNames:DescribeRetentionConfigurations' :: Maybe [Text]
retentionConfigurationNames = Maybe [Text]
a} :: DescribeRetentionConfigurations) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Core.AWSPager
    DescribeRetentionConfigurations
  where
  page :: DescribeRetentionConfigurations
-> AWSResponse DescribeRetentionConfigurations
-> Maybe DescribeRetentionConfigurations
page DescribeRetentionConfigurations
rq AWSResponse DescribeRetentionConfigurations
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeRetentionConfigurations
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRetentionConfigurationsResponse (Maybe Text)
describeRetentionConfigurationsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeRetentionConfigurations
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeRetentionConfigurationsResponse
  (Maybe [RetentionConfiguration])
describeRetentionConfigurationsResponse_retentionConfigurations
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeRetentionConfigurations
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeRetentionConfigurations (Maybe Text)
describeRetentionConfigurations_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeRetentionConfigurations
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeRetentionConfigurationsResponse (Maybe Text)
describeRetentionConfigurationsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance
  Core.AWSRequest
    DescribeRetentionConfigurations
  where
  type
    AWSResponse DescribeRetentionConfigurations =
      DescribeRetentionConfigurationsResponse
  request :: (Service -> Service)
-> DescribeRetentionConfigurations
-> Request DescribeRetentionConfigurations
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeRetentionConfigurations
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeRetentionConfigurations)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe [RetentionConfiguration]
-> Int
-> DescribeRetentionConfigurationsResponse
DescribeRetentionConfigurationsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"NextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"RetentionConfigurations"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    DescribeRetentionConfigurations
  where
  hashWithSalt :: Int -> DescribeRetentionConfigurations -> Int
hashWithSalt
    Int
_salt
    DescribeRetentionConfigurations' {Maybe [Text]
Maybe Text
retentionConfigurationNames :: Maybe [Text]
nextToken :: Maybe Text
$sel:retentionConfigurationNames:DescribeRetentionConfigurations' :: DescribeRetentionConfigurations -> Maybe [Text]
$sel:nextToken:DescribeRetentionConfigurations' :: DescribeRetentionConfigurations -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
retentionConfigurationNames

instance
  Prelude.NFData
    DescribeRetentionConfigurations
  where
  rnf :: DescribeRetentionConfigurations -> ()
rnf DescribeRetentionConfigurations' {Maybe [Text]
Maybe Text
retentionConfigurationNames :: Maybe [Text]
nextToken :: Maybe Text
$sel:retentionConfigurationNames:DescribeRetentionConfigurations' :: DescribeRetentionConfigurations -> Maybe [Text]
$sel:nextToken:DescribeRetentionConfigurations' :: DescribeRetentionConfigurations -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
retentionConfigurationNames

instance
  Data.ToHeaders
    DescribeRetentionConfigurations
  where
  toHeaders :: DescribeRetentionConfigurations -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"StarlingDoveService.DescribeRetentionConfigurations" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeRetentionConfigurations where
  toJSON :: DescribeRetentionConfigurations -> Value
toJSON DescribeRetentionConfigurations' {Maybe [Text]
Maybe Text
retentionConfigurationNames :: Maybe [Text]
nextToken :: Maybe Text
$sel:retentionConfigurationNames:DescribeRetentionConfigurations' :: DescribeRetentionConfigurations -> Maybe [Text]
$sel:nextToken:DescribeRetentionConfigurations' :: DescribeRetentionConfigurations -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"NextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            (Key
"RetentionConfigurationNames" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
retentionConfigurationNames
          ]
      )

instance Data.ToPath DescribeRetentionConfigurations where
  toPath :: DescribeRetentionConfigurations -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery DescribeRetentionConfigurations where
  toQuery :: DescribeRetentionConfigurations -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeRetentionConfigurationsResponse' smart constructor.
data DescribeRetentionConfigurationsResponse = DescribeRetentionConfigurationsResponse'
  { -- | The @nextToken@ string returned on a previous page that you use to get
    -- the next page of results in a paginated response.
    DescribeRetentionConfigurationsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Returns a retention configuration object.
    DescribeRetentionConfigurationsResponse
-> Maybe [RetentionConfiguration]
retentionConfigurations :: Prelude.Maybe [RetentionConfiguration],
    -- | The response's http status code.
    DescribeRetentionConfigurationsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeRetentionConfigurationsResponse
-> DescribeRetentionConfigurationsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeRetentionConfigurationsResponse
-> DescribeRetentionConfigurationsResponse -> Bool
$c/= :: DescribeRetentionConfigurationsResponse
-> DescribeRetentionConfigurationsResponse -> Bool
== :: DescribeRetentionConfigurationsResponse
-> DescribeRetentionConfigurationsResponse -> Bool
$c== :: DescribeRetentionConfigurationsResponse
-> DescribeRetentionConfigurationsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeRetentionConfigurationsResponse]
ReadPrec DescribeRetentionConfigurationsResponse
Int -> ReadS DescribeRetentionConfigurationsResponse
ReadS [DescribeRetentionConfigurationsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeRetentionConfigurationsResponse]
$creadListPrec :: ReadPrec [DescribeRetentionConfigurationsResponse]
readPrec :: ReadPrec DescribeRetentionConfigurationsResponse
$creadPrec :: ReadPrec DescribeRetentionConfigurationsResponse
readList :: ReadS [DescribeRetentionConfigurationsResponse]
$creadList :: ReadS [DescribeRetentionConfigurationsResponse]
readsPrec :: Int -> ReadS DescribeRetentionConfigurationsResponse
$creadsPrec :: Int -> ReadS DescribeRetentionConfigurationsResponse
Prelude.Read, Int -> DescribeRetentionConfigurationsResponse -> ShowS
[DescribeRetentionConfigurationsResponse] -> ShowS
DescribeRetentionConfigurationsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeRetentionConfigurationsResponse] -> ShowS
$cshowList :: [DescribeRetentionConfigurationsResponse] -> ShowS
show :: DescribeRetentionConfigurationsResponse -> String
$cshow :: DescribeRetentionConfigurationsResponse -> String
showsPrec :: Int -> DescribeRetentionConfigurationsResponse -> ShowS
$cshowsPrec :: Int -> DescribeRetentionConfigurationsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeRetentionConfigurationsResponse x
-> DescribeRetentionConfigurationsResponse
forall x.
DescribeRetentionConfigurationsResponse
-> Rep DescribeRetentionConfigurationsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeRetentionConfigurationsResponse x
-> DescribeRetentionConfigurationsResponse
$cfrom :: forall x.
DescribeRetentionConfigurationsResponse
-> Rep DescribeRetentionConfigurationsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeRetentionConfigurationsResponse' 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:
--
-- 'nextToken', 'describeRetentionConfigurationsResponse_nextToken' - The @nextToken@ string returned on a previous page that you use to get
-- the next page of results in a paginated response.
--
-- 'retentionConfigurations', 'describeRetentionConfigurationsResponse_retentionConfigurations' - Returns a retention configuration object.
--
-- 'httpStatus', 'describeRetentionConfigurationsResponse_httpStatus' - The response's http status code.
newDescribeRetentionConfigurationsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeRetentionConfigurationsResponse
newDescribeRetentionConfigurationsResponse :: Int -> DescribeRetentionConfigurationsResponse
newDescribeRetentionConfigurationsResponse
  Int
pHttpStatus_ =
    DescribeRetentionConfigurationsResponse'
      { $sel:nextToken:DescribeRetentionConfigurationsResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:retentionConfigurations:DescribeRetentionConfigurationsResponse' :: Maybe [RetentionConfiguration]
retentionConfigurations =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeRetentionConfigurationsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The @nextToken@ string returned on a previous page that you use to get
-- the next page of results in a paginated response.
describeRetentionConfigurationsResponse_nextToken :: Lens.Lens' DescribeRetentionConfigurationsResponse (Prelude.Maybe Prelude.Text)
describeRetentionConfigurationsResponse_nextToken :: Lens' DescribeRetentionConfigurationsResponse (Maybe Text)
describeRetentionConfigurationsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRetentionConfigurationsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeRetentionConfigurationsResponse' :: DescribeRetentionConfigurationsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeRetentionConfigurationsResponse
s@DescribeRetentionConfigurationsResponse' {} Maybe Text
a -> DescribeRetentionConfigurationsResponse
s {$sel:nextToken:DescribeRetentionConfigurationsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeRetentionConfigurationsResponse)

-- | Returns a retention configuration object.
describeRetentionConfigurationsResponse_retentionConfigurations :: Lens.Lens' DescribeRetentionConfigurationsResponse (Prelude.Maybe [RetentionConfiguration])
describeRetentionConfigurationsResponse_retentionConfigurations :: Lens'
  DescribeRetentionConfigurationsResponse
  (Maybe [RetentionConfiguration])
describeRetentionConfigurationsResponse_retentionConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRetentionConfigurationsResponse' {Maybe [RetentionConfiguration]
retentionConfigurations :: Maybe [RetentionConfiguration]
$sel:retentionConfigurations:DescribeRetentionConfigurationsResponse' :: DescribeRetentionConfigurationsResponse
-> Maybe [RetentionConfiguration]
retentionConfigurations} -> Maybe [RetentionConfiguration]
retentionConfigurations) (\s :: DescribeRetentionConfigurationsResponse
s@DescribeRetentionConfigurationsResponse' {} Maybe [RetentionConfiguration]
a -> DescribeRetentionConfigurationsResponse
s {$sel:retentionConfigurations:DescribeRetentionConfigurationsResponse' :: Maybe [RetentionConfiguration]
retentionConfigurations = Maybe [RetentionConfiguration]
a} :: DescribeRetentionConfigurationsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The response's http status code.
describeRetentionConfigurationsResponse_httpStatus :: Lens.Lens' DescribeRetentionConfigurationsResponse Prelude.Int
describeRetentionConfigurationsResponse_httpStatus :: Lens' DescribeRetentionConfigurationsResponse Int
describeRetentionConfigurationsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeRetentionConfigurationsResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeRetentionConfigurationsResponse' :: DescribeRetentionConfigurationsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeRetentionConfigurationsResponse
s@DescribeRetentionConfigurationsResponse' {} Int
a -> DescribeRetentionConfigurationsResponse
s {$sel:httpStatus:DescribeRetentionConfigurationsResponse' :: Int
httpStatus = Int
a} :: DescribeRetentionConfigurationsResponse)

instance
  Prelude.NFData
    DescribeRetentionConfigurationsResponse
  where
  rnf :: DescribeRetentionConfigurationsResponse -> ()
rnf DescribeRetentionConfigurationsResponse' {Int
Maybe [RetentionConfiguration]
Maybe Text
httpStatus :: Int
retentionConfigurations :: Maybe [RetentionConfiguration]
nextToken :: Maybe Text
$sel:httpStatus:DescribeRetentionConfigurationsResponse' :: DescribeRetentionConfigurationsResponse -> Int
$sel:retentionConfigurations:DescribeRetentionConfigurationsResponse' :: DescribeRetentionConfigurationsResponse
-> Maybe [RetentionConfiguration]
$sel:nextToken:DescribeRetentionConfigurationsResponse' :: DescribeRetentionConfigurationsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [RetentionConfiguration]
retentionConfigurations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus