{-# 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.DLM.GetLifecyclePolicies
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets summary information about all or the specified data lifecycle
-- policies.
--
-- To get complete information about a policy, use GetLifecyclePolicy.
module Amazonka.DLM.GetLifecyclePolicies
  ( -- * Creating a Request
    GetLifecyclePolicies (..),
    newGetLifecyclePolicies,

    -- * Request Lenses
    getLifecyclePolicies_policyIds,
    getLifecyclePolicies_resourceTypes,
    getLifecyclePolicies_state,
    getLifecyclePolicies_tagsToAdd,
    getLifecyclePolicies_targetTags,

    -- * Destructuring the Response
    GetLifecyclePoliciesResponse (..),
    newGetLifecyclePoliciesResponse,

    -- * Response Lenses
    getLifecyclePoliciesResponse_policies,
    getLifecyclePoliciesResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import Amazonka.DLM.Types
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:/ 'newGetLifecyclePolicies' smart constructor.
data GetLifecyclePolicies = GetLifecyclePolicies'
  { -- | The identifiers of the data lifecycle policies.
    GetLifecyclePolicies -> Maybe [Text]
policyIds :: Prelude.Maybe [Prelude.Text],
    -- | The resource type.
    GetLifecyclePolicies -> Maybe (NonEmpty ResourceTypeValues)
resourceTypes :: Prelude.Maybe (Prelude.NonEmpty ResourceTypeValues),
    -- | The activation state.
    GetLifecyclePolicies -> Maybe GettablePolicyStateValues
state :: Prelude.Maybe GettablePolicyStateValues,
    -- | The tags to add to objects created by the policy.
    --
    -- Tags are strings in the format @key=value@.
    --
    -- These user-defined tags are added in addition to the Amazon Web
    -- Services-added lifecycle tags.
    GetLifecyclePolicies -> Maybe [Text]
tagsToAdd :: Prelude.Maybe [Prelude.Text],
    -- | The target tag for a policy.
    --
    -- Tags are strings in the format @key=value@.
    GetLifecyclePolicies -> Maybe (NonEmpty Text)
targetTags :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
  }
  deriving (GetLifecyclePolicies -> GetLifecyclePolicies -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetLifecyclePolicies -> GetLifecyclePolicies -> Bool
$c/= :: GetLifecyclePolicies -> GetLifecyclePolicies -> Bool
== :: GetLifecyclePolicies -> GetLifecyclePolicies -> Bool
$c== :: GetLifecyclePolicies -> GetLifecyclePolicies -> Bool
Prelude.Eq, ReadPrec [GetLifecyclePolicies]
ReadPrec GetLifecyclePolicies
Int -> ReadS GetLifecyclePolicies
ReadS [GetLifecyclePolicies]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetLifecyclePolicies]
$creadListPrec :: ReadPrec [GetLifecyclePolicies]
readPrec :: ReadPrec GetLifecyclePolicies
$creadPrec :: ReadPrec GetLifecyclePolicies
readList :: ReadS [GetLifecyclePolicies]
$creadList :: ReadS [GetLifecyclePolicies]
readsPrec :: Int -> ReadS GetLifecyclePolicies
$creadsPrec :: Int -> ReadS GetLifecyclePolicies
Prelude.Read, Int -> GetLifecyclePolicies -> ShowS
[GetLifecyclePolicies] -> ShowS
GetLifecyclePolicies -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetLifecyclePolicies] -> ShowS
$cshowList :: [GetLifecyclePolicies] -> ShowS
show :: GetLifecyclePolicies -> String
$cshow :: GetLifecyclePolicies -> String
showsPrec :: Int -> GetLifecyclePolicies -> ShowS
$cshowsPrec :: Int -> GetLifecyclePolicies -> ShowS
Prelude.Show, forall x. Rep GetLifecyclePolicies x -> GetLifecyclePolicies
forall x. GetLifecyclePolicies -> Rep GetLifecyclePolicies x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetLifecyclePolicies x -> GetLifecyclePolicies
$cfrom :: forall x. GetLifecyclePolicies -> Rep GetLifecyclePolicies x
Prelude.Generic)

-- |
-- Create a value of 'GetLifecyclePolicies' 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:
--
-- 'policyIds', 'getLifecyclePolicies_policyIds' - The identifiers of the data lifecycle policies.
--
-- 'resourceTypes', 'getLifecyclePolicies_resourceTypes' - The resource type.
--
-- 'state', 'getLifecyclePolicies_state' - The activation state.
--
-- 'tagsToAdd', 'getLifecyclePolicies_tagsToAdd' - The tags to add to objects created by the policy.
--
-- Tags are strings in the format @key=value@.
--
-- These user-defined tags are added in addition to the Amazon Web
-- Services-added lifecycle tags.
--
-- 'targetTags', 'getLifecyclePolicies_targetTags' - The target tag for a policy.
--
-- Tags are strings in the format @key=value@.
newGetLifecyclePolicies ::
  GetLifecyclePolicies
newGetLifecyclePolicies :: GetLifecyclePolicies
newGetLifecyclePolicies =
  GetLifecyclePolicies'
    { $sel:policyIds:GetLifecyclePolicies' :: Maybe [Text]
policyIds = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceTypes:GetLifecyclePolicies' :: Maybe (NonEmpty ResourceTypeValues)
resourceTypes = forall a. Maybe a
Prelude.Nothing,
      $sel:state:GetLifecyclePolicies' :: Maybe GettablePolicyStateValues
state = forall a. Maybe a
Prelude.Nothing,
      $sel:tagsToAdd:GetLifecyclePolicies' :: Maybe [Text]
tagsToAdd = forall a. Maybe a
Prelude.Nothing,
      $sel:targetTags:GetLifecyclePolicies' :: Maybe (NonEmpty Text)
targetTags = forall a. Maybe a
Prelude.Nothing
    }

-- | The identifiers of the data lifecycle policies.
getLifecyclePolicies_policyIds :: Lens.Lens' GetLifecyclePolicies (Prelude.Maybe [Prelude.Text])
getLifecyclePolicies_policyIds :: Lens' GetLifecyclePolicies (Maybe [Text])
getLifecyclePolicies_policyIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLifecyclePolicies' {Maybe [Text]
policyIds :: Maybe [Text]
$sel:policyIds:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe [Text]
policyIds} -> Maybe [Text]
policyIds) (\s :: GetLifecyclePolicies
s@GetLifecyclePolicies' {} Maybe [Text]
a -> GetLifecyclePolicies
s {$sel:policyIds:GetLifecyclePolicies' :: Maybe [Text]
policyIds = Maybe [Text]
a} :: GetLifecyclePolicies) 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 resource type.
getLifecyclePolicies_resourceTypes :: Lens.Lens' GetLifecyclePolicies (Prelude.Maybe (Prelude.NonEmpty ResourceTypeValues))
getLifecyclePolicies_resourceTypes :: Lens' GetLifecyclePolicies (Maybe (NonEmpty ResourceTypeValues))
getLifecyclePolicies_resourceTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLifecyclePolicies' {Maybe (NonEmpty ResourceTypeValues)
resourceTypes :: Maybe (NonEmpty ResourceTypeValues)
$sel:resourceTypes:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe (NonEmpty ResourceTypeValues)
resourceTypes} -> Maybe (NonEmpty ResourceTypeValues)
resourceTypes) (\s :: GetLifecyclePolicies
s@GetLifecyclePolicies' {} Maybe (NonEmpty ResourceTypeValues)
a -> GetLifecyclePolicies
s {$sel:resourceTypes:GetLifecyclePolicies' :: Maybe (NonEmpty ResourceTypeValues)
resourceTypes = Maybe (NonEmpty ResourceTypeValues)
a} :: GetLifecyclePolicies) 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 activation state.
getLifecyclePolicies_state :: Lens.Lens' GetLifecyclePolicies (Prelude.Maybe GettablePolicyStateValues)
getLifecyclePolicies_state :: Lens' GetLifecyclePolicies (Maybe GettablePolicyStateValues)
getLifecyclePolicies_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLifecyclePolicies' {Maybe GettablePolicyStateValues
state :: Maybe GettablePolicyStateValues
$sel:state:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe GettablePolicyStateValues
state} -> Maybe GettablePolicyStateValues
state) (\s :: GetLifecyclePolicies
s@GetLifecyclePolicies' {} Maybe GettablePolicyStateValues
a -> GetLifecyclePolicies
s {$sel:state:GetLifecyclePolicies' :: Maybe GettablePolicyStateValues
state = Maybe GettablePolicyStateValues
a} :: GetLifecyclePolicies)

-- | The tags to add to objects created by the policy.
--
-- Tags are strings in the format @key=value@.
--
-- These user-defined tags are added in addition to the Amazon Web
-- Services-added lifecycle tags.
getLifecyclePolicies_tagsToAdd :: Lens.Lens' GetLifecyclePolicies (Prelude.Maybe [Prelude.Text])
getLifecyclePolicies_tagsToAdd :: Lens' GetLifecyclePolicies (Maybe [Text])
getLifecyclePolicies_tagsToAdd = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLifecyclePolicies' {Maybe [Text]
tagsToAdd :: Maybe [Text]
$sel:tagsToAdd:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe [Text]
tagsToAdd} -> Maybe [Text]
tagsToAdd) (\s :: GetLifecyclePolicies
s@GetLifecyclePolicies' {} Maybe [Text]
a -> GetLifecyclePolicies
s {$sel:tagsToAdd:GetLifecyclePolicies' :: Maybe [Text]
tagsToAdd = Maybe [Text]
a} :: GetLifecyclePolicies) 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 target tag for a policy.
--
-- Tags are strings in the format @key=value@.
getLifecyclePolicies_targetTags :: Lens.Lens' GetLifecyclePolicies (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
getLifecyclePolicies_targetTags :: Lens' GetLifecyclePolicies (Maybe (NonEmpty Text))
getLifecyclePolicies_targetTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLifecyclePolicies' {Maybe (NonEmpty Text)
targetTags :: Maybe (NonEmpty Text)
$sel:targetTags:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe (NonEmpty Text)
targetTags} -> Maybe (NonEmpty Text)
targetTags) (\s :: GetLifecyclePolicies
s@GetLifecyclePolicies' {} Maybe (NonEmpty Text)
a -> GetLifecyclePolicies
s {$sel:targetTags:GetLifecyclePolicies' :: Maybe (NonEmpty Text)
targetTags = Maybe (NonEmpty Text)
a} :: GetLifecyclePolicies) 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.AWSRequest GetLifecyclePolicies where
  type
    AWSResponse GetLifecyclePolicies =
      GetLifecyclePoliciesResponse
  request :: (Service -> Service)
-> GetLifecyclePolicies -> Request GetLifecyclePolicies
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetLifecyclePolicies
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetLifecyclePolicies)))
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 [LifecyclePolicySummary]
-> Int -> GetLifecyclePoliciesResponse
GetLifecyclePoliciesResponse'
            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
"Policies" 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 GetLifecyclePolicies where
  hashWithSalt :: Int -> GetLifecyclePolicies -> Int
hashWithSalt Int
_salt GetLifecyclePolicies' {Maybe [Text]
Maybe (NonEmpty Text)
Maybe (NonEmpty ResourceTypeValues)
Maybe GettablePolicyStateValues
targetTags :: Maybe (NonEmpty Text)
tagsToAdd :: Maybe [Text]
state :: Maybe GettablePolicyStateValues
resourceTypes :: Maybe (NonEmpty ResourceTypeValues)
policyIds :: Maybe [Text]
$sel:targetTags:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe (NonEmpty Text)
$sel:tagsToAdd:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe [Text]
$sel:state:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe GettablePolicyStateValues
$sel:resourceTypes:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe (NonEmpty ResourceTypeValues)
$sel:policyIds:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
policyIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ResourceTypeValues)
resourceTypes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe GettablePolicyStateValues
state
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
tagsToAdd
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
targetTags

instance Prelude.NFData GetLifecyclePolicies where
  rnf :: GetLifecyclePolicies -> ()
rnf GetLifecyclePolicies' {Maybe [Text]
Maybe (NonEmpty Text)
Maybe (NonEmpty ResourceTypeValues)
Maybe GettablePolicyStateValues
targetTags :: Maybe (NonEmpty Text)
tagsToAdd :: Maybe [Text]
state :: Maybe GettablePolicyStateValues
resourceTypes :: Maybe (NonEmpty ResourceTypeValues)
policyIds :: Maybe [Text]
$sel:targetTags:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe (NonEmpty Text)
$sel:tagsToAdd:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe [Text]
$sel:state:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe GettablePolicyStateValues
$sel:resourceTypes:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe (NonEmpty ResourceTypeValues)
$sel:policyIds:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
policyIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ResourceTypeValues)
resourceTypes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe GettablePolicyStateValues
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
tagsToAdd
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
targetTags

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

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

instance Data.ToQuery GetLifecyclePolicies where
  toQuery :: GetLifecyclePolicies -> QueryString
toQuery GetLifecyclePolicies' {Maybe [Text]
Maybe (NonEmpty Text)
Maybe (NonEmpty ResourceTypeValues)
Maybe GettablePolicyStateValues
targetTags :: Maybe (NonEmpty Text)
tagsToAdd :: Maybe [Text]
state :: Maybe GettablePolicyStateValues
resourceTypes :: Maybe (NonEmpty ResourceTypeValues)
policyIds :: Maybe [Text]
$sel:targetTags:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe (NonEmpty Text)
$sel:tagsToAdd:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe [Text]
$sel:state:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe GettablePolicyStateValues
$sel:resourceTypes:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe (NonEmpty ResourceTypeValues)
$sel:policyIds:GetLifecyclePolicies' :: GetLifecyclePolicies -> Maybe [Text]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"policyIds"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
policyIds),
        ByteString
"resourceTypes"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty ResourceTypeValues)
resourceTypes
            ),
        ByteString
"state" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe GettablePolicyStateValues
state,
        ByteString
"tagsToAdd"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
tagsToAdd),
        ByteString
"targetTags"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
targetTags)
      ]

-- | /See:/ 'newGetLifecyclePoliciesResponse' smart constructor.
data GetLifecyclePoliciesResponse = GetLifecyclePoliciesResponse'
  { -- | Summary information about the lifecycle policies.
    GetLifecyclePoliciesResponse -> Maybe [LifecyclePolicySummary]
policies :: Prelude.Maybe [LifecyclePolicySummary],
    -- | The response's http status code.
    GetLifecyclePoliciesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetLifecyclePoliciesResponse
-> GetLifecyclePoliciesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetLifecyclePoliciesResponse
-> GetLifecyclePoliciesResponse -> Bool
$c/= :: GetLifecyclePoliciesResponse
-> GetLifecyclePoliciesResponse -> Bool
== :: GetLifecyclePoliciesResponse
-> GetLifecyclePoliciesResponse -> Bool
$c== :: GetLifecyclePoliciesResponse
-> GetLifecyclePoliciesResponse -> Bool
Prelude.Eq, ReadPrec [GetLifecyclePoliciesResponse]
ReadPrec GetLifecyclePoliciesResponse
Int -> ReadS GetLifecyclePoliciesResponse
ReadS [GetLifecyclePoliciesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetLifecyclePoliciesResponse]
$creadListPrec :: ReadPrec [GetLifecyclePoliciesResponse]
readPrec :: ReadPrec GetLifecyclePoliciesResponse
$creadPrec :: ReadPrec GetLifecyclePoliciesResponse
readList :: ReadS [GetLifecyclePoliciesResponse]
$creadList :: ReadS [GetLifecyclePoliciesResponse]
readsPrec :: Int -> ReadS GetLifecyclePoliciesResponse
$creadsPrec :: Int -> ReadS GetLifecyclePoliciesResponse
Prelude.Read, Int -> GetLifecyclePoliciesResponse -> ShowS
[GetLifecyclePoliciesResponse] -> ShowS
GetLifecyclePoliciesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetLifecyclePoliciesResponse] -> ShowS
$cshowList :: [GetLifecyclePoliciesResponse] -> ShowS
show :: GetLifecyclePoliciesResponse -> String
$cshow :: GetLifecyclePoliciesResponse -> String
showsPrec :: Int -> GetLifecyclePoliciesResponse -> ShowS
$cshowsPrec :: Int -> GetLifecyclePoliciesResponse -> ShowS
Prelude.Show, forall x.
Rep GetLifecyclePoliciesResponse x -> GetLifecyclePoliciesResponse
forall x.
GetLifecyclePoliciesResponse -> Rep GetLifecyclePoliciesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetLifecyclePoliciesResponse x -> GetLifecyclePoliciesResponse
$cfrom :: forall x.
GetLifecyclePoliciesResponse -> Rep GetLifecyclePoliciesResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetLifecyclePoliciesResponse' 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:
--
-- 'policies', 'getLifecyclePoliciesResponse_policies' - Summary information about the lifecycle policies.
--
-- 'httpStatus', 'getLifecyclePoliciesResponse_httpStatus' - The response's http status code.
newGetLifecyclePoliciesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetLifecyclePoliciesResponse
newGetLifecyclePoliciesResponse :: Int -> GetLifecyclePoliciesResponse
newGetLifecyclePoliciesResponse Int
pHttpStatus_ =
  GetLifecyclePoliciesResponse'
    { $sel:policies:GetLifecyclePoliciesResponse' :: Maybe [LifecyclePolicySummary]
policies =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetLifecyclePoliciesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Summary information about the lifecycle policies.
getLifecyclePoliciesResponse_policies :: Lens.Lens' GetLifecyclePoliciesResponse (Prelude.Maybe [LifecyclePolicySummary])
getLifecyclePoliciesResponse_policies :: Lens' GetLifecyclePoliciesResponse (Maybe [LifecyclePolicySummary])
getLifecyclePoliciesResponse_policies = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLifecyclePoliciesResponse' {Maybe [LifecyclePolicySummary]
policies :: Maybe [LifecyclePolicySummary]
$sel:policies:GetLifecyclePoliciesResponse' :: GetLifecyclePoliciesResponse -> Maybe [LifecyclePolicySummary]
policies} -> Maybe [LifecyclePolicySummary]
policies) (\s :: GetLifecyclePoliciesResponse
s@GetLifecyclePoliciesResponse' {} Maybe [LifecyclePolicySummary]
a -> GetLifecyclePoliciesResponse
s {$sel:policies:GetLifecyclePoliciesResponse' :: Maybe [LifecyclePolicySummary]
policies = Maybe [LifecyclePolicySummary]
a} :: GetLifecyclePoliciesResponse) 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.
getLifecyclePoliciesResponse_httpStatus :: Lens.Lens' GetLifecyclePoliciesResponse Prelude.Int
getLifecyclePoliciesResponse_httpStatus :: Lens' GetLifecyclePoliciesResponse Int
getLifecyclePoliciesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLifecyclePoliciesResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetLifecyclePoliciesResponse' :: GetLifecyclePoliciesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetLifecyclePoliciesResponse
s@GetLifecyclePoliciesResponse' {} Int
a -> GetLifecyclePoliciesResponse
s {$sel:httpStatus:GetLifecyclePoliciesResponse' :: Int
httpStatus = Int
a} :: GetLifecyclePoliciesResponse)

instance Prelude.NFData GetLifecyclePoliciesResponse where
  rnf :: GetLifecyclePoliciesResponse -> ()
rnf GetLifecyclePoliciesResponse' {Int
Maybe [LifecyclePolicySummary]
httpStatus :: Int
policies :: Maybe [LifecyclePolicySummary]
$sel:httpStatus:GetLifecyclePoliciesResponse' :: GetLifecyclePoliciesResponse -> Int
$sel:policies:GetLifecyclePoliciesResponse' :: GetLifecyclePoliciesResponse -> Maybe [LifecyclePolicySummary]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [LifecyclePolicySummary]
policies
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus