{-# 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.IoT.DescribeMitigationAction
-- 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 information about a mitigation action.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions DescribeMitigationAction>
-- action.
module Amazonka.IoT.DescribeMitigationAction
  ( -- * Creating a Request
    DescribeMitigationAction (..),
    newDescribeMitigationAction,

    -- * Request Lenses
    describeMitigationAction_actionName,

    -- * Destructuring the Response
    DescribeMitigationActionResponse (..),
    newDescribeMitigationActionResponse,

    -- * Response Lenses
    describeMitigationActionResponse_actionArn,
    describeMitigationActionResponse_actionId,
    describeMitigationActionResponse_actionName,
    describeMitigationActionResponse_actionParams,
    describeMitigationActionResponse_actionType,
    describeMitigationActionResponse_creationDate,
    describeMitigationActionResponse_lastModifiedDate,
    describeMitigationActionResponse_roleArn,
    describeMitigationActionResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeMitigationAction' smart constructor.
data DescribeMitigationAction = DescribeMitigationAction'
  { -- | The friendly name that uniquely identifies the mitigation action.
    DescribeMitigationAction -> Text
actionName :: Prelude.Text
  }
  deriving (DescribeMitigationAction -> DescribeMitigationAction -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeMitigationAction -> DescribeMitigationAction -> Bool
$c/= :: DescribeMitigationAction -> DescribeMitigationAction -> Bool
== :: DescribeMitigationAction -> DescribeMitigationAction -> Bool
$c== :: DescribeMitigationAction -> DescribeMitigationAction -> Bool
Prelude.Eq, ReadPrec [DescribeMitigationAction]
ReadPrec DescribeMitigationAction
Int -> ReadS DescribeMitigationAction
ReadS [DescribeMitigationAction]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeMitigationAction]
$creadListPrec :: ReadPrec [DescribeMitigationAction]
readPrec :: ReadPrec DescribeMitigationAction
$creadPrec :: ReadPrec DescribeMitigationAction
readList :: ReadS [DescribeMitigationAction]
$creadList :: ReadS [DescribeMitigationAction]
readsPrec :: Int -> ReadS DescribeMitigationAction
$creadsPrec :: Int -> ReadS DescribeMitigationAction
Prelude.Read, Int -> DescribeMitigationAction -> ShowS
[DescribeMitigationAction] -> ShowS
DescribeMitigationAction -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeMitigationAction] -> ShowS
$cshowList :: [DescribeMitigationAction] -> ShowS
show :: DescribeMitigationAction -> String
$cshow :: DescribeMitigationAction -> String
showsPrec :: Int -> DescribeMitigationAction -> ShowS
$cshowsPrec :: Int -> DescribeMitigationAction -> ShowS
Prelude.Show, forall x.
Rep DescribeMitigationAction x -> DescribeMitigationAction
forall x.
DescribeMitigationAction -> Rep DescribeMitigationAction x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeMitigationAction x -> DescribeMitigationAction
$cfrom :: forall x.
DescribeMitigationAction -> Rep DescribeMitigationAction x
Prelude.Generic)

-- |
-- Create a value of 'DescribeMitigationAction' 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:
--
-- 'actionName', 'describeMitigationAction_actionName' - The friendly name that uniquely identifies the mitigation action.
newDescribeMitigationAction ::
  -- | 'actionName'
  Prelude.Text ->
  DescribeMitigationAction
newDescribeMitigationAction :: Text -> DescribeMitigationAction
newDescribeMitigationAction Text
pActionName_ =
  DescribeMitigationAction'
    { $sel:actionName:DescribeMitigationAction' :: Text
actionName =
        Text
pActionName_
    }

-- | The friendly name that uniquely identifies the mitigation action.
describeMitigationAction_actionName :: Lens.Lens' DescribeMitigationAction Prelude.Text
describeMitigationAction_actionName :: Lens' DescribeMitigationAction Text
describeMitigationAction_actionName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMitigationAction' {Text
actionName :: Text
$sel:actionName:DescribeMitigationAction' :: DescribeMitigationAction -> Text
actionName} -> Text
actionName) (\s :: DescribeMitigationAction
s@DescribeMitigationAction' {} Text
a -> DescribeMitigationAction
s {$sel:actionName:DescribeMitigationAction' :: Text
actionName = Text
a} :: DescribeMitigationAction)

instance Core.AWSRequest DescribeMitigationAction where
  type
    AWSResponse DescribeMitigationAction =
      DescribeMitigationActionResponse
  request :: (Service -> Service)
-> DescribeMitigationAction -> Request DescribeMitigationAction
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 DescribeMitigationAction
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeMitigationAction)))
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 Text
-> Maybe Text
-> Maybe MitigationActionParams
-> Maybe MitigationActionType
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Int
-> DescribeMitigationActionResponse
DescribeMitigationActionResponse'
            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
"actionArn")
            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
"actionId")
            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
"actionName")
            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
"actionParams")
            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
"actionType")
            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
"creationDate")
            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
"lastModifiedDate")
            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
"roleArn")
            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 DescribeMitigationAction where
  hashWithSalt :: Int -> DescribeMitigationAction -> Int
hashWithSalt Int
_salt DescribeMitigationAction' {Text
actionName :: Text
$sel:actionName:DescribeMitigationAction' :: DescribeMitigationAction -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
actionName

instance Prelude.NFData DescribeMitigationAction where
  rnf :: DescribeMitigationAction -> ()
rnf DescribeMitigationAction' {Text
actionName :: Text
$sel:actionName:DescribeMitigationAction' :: DescribeMitigationAction -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
actionName

instance Data.ToHeaders DescribeMitigationAction where
  toHeaders :: DescribeMitigationAction -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DescribeMitigationAction where
  toPath :: DescribeMitigationAction -> ByteString
toPath DescribeMitigationAction' {Text
actionName :: Text
$sel:actionName:DescribeMitigationAction' :: DescribeMitigationAction -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/mitigationactions/actions/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
actionName]

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

-- | /See:/ 'newDescribeMitigationActionResponse' smart constructor.
data DescribeMitigationActionResponse = DescribeMitigationActionResponse'
  { -- | The ARN that identifies this migration action.
    DescribeMitigationActionResponse -> Maybe Text
actionArn :: Prelude.Maybe Prelude.Text,
    -- | A unique identifier for this action.
    DescribeMitigationActionResponse -> Maybe Text
actionId :: Prelude.Maybe Prelude.Text,
    -- | The friendly name that uniquely identifies the mitigation action.
    DescribeMitigationActionResponse -> Maybe Text
actionName :: Prelude.Maybe Prelude.Text,
    -- | Parameters that control how the mitigation action is applied, specific
    -- to the type of mitigation action.
    DescribeMitigationActionResponse -> Maybe MitigationActionParams
actionParams :: Prelude.Maybe MitigationActionParams,
    -- | The type of mitigation action.
    DescribeMitigationActionResponse -> Maybe MitigationActionType
actionType :: Prelude.Maybe MitigationActionType,
    -- | The date and time when the mitigation action was added to your Amazon
    -- Web Services accounts.
    DescribeMitigationActionResponse -> Maybe POSIX
creationDate :: Prelude.Maybe Data.POSIX,
    -- | The date and time when the mitigation action was last changed.
    DescribeMitigationActionResponse -> Maybe POSIX
lastModifiedDate :: Prelude.Maybe Data.POSIX,
    -- | The ARN of the IAM role used to apply this action.
    DescribeMitigationActionResponse -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeMitigationActionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeMitigationActionResponse
-> DescribeMitigationActionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeMitigationActionResponse
-> DescribeMitigationActionResponse -> Bool
$c/= :: DescribeMitigationActionResponse
-> DescribeMitigationActionResponse -> Bool
== :: DescribeMitigationActionResponse
-> DescribeMitigationActionResponse -> Bool
$c== :: DescribeMitigationActionResponse
-> DescribeMitigationActionResponse -> Bool
Prelude.Eq, ReadPrec [DescribeMitigationActionResponse]
ReadPrec DescribeMitigationActionResponse
Int -> ReadS DescribeMitigationActionResponse
ReadS [DescribeMitigationActionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeMitigationActionResponse]
$creadListPrec :: ReadPrec [DescribeMitigationActionResponse]
readPrec :: ReadPrec DescribeMitigationActionResponse
$creadPrec :: ReadPrec DescribeMitigationActionResponse
readList :: ReadS [DescribeMitigationActionResponse]
$creadList :: ReadS [DescribeMitigationActionResponse]
readsPrec :: Int -> ReadS DescribeMitigationActionResponse
$creadsPrec :: Int -> ReadS DescribeMitigationActionResponse
Prelude.Read, Int -> DescribeMitigationActionResponse -> ShowS
[DescribeMitigationActionResponse] -> ShowS
DescribeMitigationActionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeMitigationActionResponse] -> ShowS
$cshowList :: [DescribeMitigationActionResponse] -> ShowS
show :: DescribeMitigationActionResponse -> String
$cshow :: DescribeMitigationActionResponse -> String
showsPrec :: Int -> DescribeMitigationActionResponse -> ShowS
$cshowsPrec :: Int -> DescribeMitigationActionResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeMitigationActionResponse x
-> DescribeMitigationActionResponse
forall x.
DescribeMitigationActionResponse
-> Rep DescribeMitigationActionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeMitigationActionResponse x
-> DescribeMitigationActionResponse
$cfrom :: forall x.
DescribeMitigationActionResponse
-> Rep DescribeMitigationActionResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeMitigationActionResponse' 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:
--
-- 'actionArn', 'describeMitigationActionResponse_actionArn' - The ARN that identifies this migration action.
--
-- 'actionId', 'describeMitigationActionResponse_actionId' - A unique identifier for this action.
--
-- 'actionName', 'describeMitigationActionResponse_actionName' - The friendly name that uniquely identifies the mitigation action.
--
-- 'actionParams', 'describeMitigationActionResponse_actionParams' - Parameters that control how the mitigation action is applied, specific
-- to the type of mitigation action.
--
-- 'actionType', 'describeMitigationActionResponse_actionType' - The type of mitigation action.
--
-- 'creationDate', 'describeMitigationActionResponse_creationDate' - The date and time when the mitigation action was added to your Amazon
-- Web Services accounts.
--
-- 'lastModifiedDate', 'describeMitigationActionResponse_lastModifiedDate' - The date and time when the mitigation action was last changed.
--
-- 'roleArn', 'describeMitigationActionResponse_roleArn' - The ARN of the IAM role used to apply this action.
--
-- 'httpStatus', 'describeMitigationActionResponse_httpStatus' - The response's http status code.
newDescribeMitigationActionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeMitigationActionResponse
newDescribeMitigationActionResponse :: Int -> DescribeMitigationActionResponse
newDescribeMitigationActionResponse Int
pHttpStatus_ =
  DescribeMitigationActionResponse'
    { $sel:actionArn:DescribeMitigationActionResponse' :: Maybe Text
actionArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:actionId:DescribeMitigationActionResponse' :: Maybe Text
actionId = forall a. Maybe a
Prelude.Nothing,
      $sel:actionName:DescribeMitigationActionResponse' :: Maybe Text
actionName = forall a. Maybe a
Prelude.Nothing,
      $sel:actionParams:DescribeMitigationActionResponse' :: Maybe MitigationActionParams
actionParams = forall a. Maybe a
Prelude.Nothing,
      $sel:actionType:DescribeMitigationActionResponse' :: Maybe MitigationActionType
actionType = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:DescribeMitigationActionResponse' :: Maybe POSIX
creationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedDate:DescribeMitigationActionResponse' :: Maybe POSIX
lastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:DescribeMitigationActionResponse' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeMitigationActionResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN that identifies this migration action.
describeMitigationActionResponse_actionArn :: Lens.Lens' DescribeMitigationActionResponse (Prelude.Maybe Prelude.Text)
describeMitigationActionResponse_actionArn :: Lens' DescribeMitigationActionResponse (Maybe Text)
describeMitigationActionResponse_actionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMitigationActionResponse' {Maybe Text
actionArn :: Maybe Text
$sel:actionArn:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe Text
actionArn} -> Maybe Text
actionArn) (\s :: DescribeMitigationActionResponse
s@DescribeMitigationActionResponse' {} Maybe Text
a -> DescribeMitigationActionResponse
s {$sel:actionArn:DescribeMitigationActionResponse' :: Maybe Text
actionArn = Maybe Text
a} :: DescribeMitigationActionResponse)

-- | A unique identifier for this action.
describeMitigationActionResponse_actionId :: Lens.Lens' DescribeMitigationActionResponse (Prelude.Maybe Prelude.Text)
describeMitigationActionResponse_actionId :: Lens' DescribeMitigationActionResponse (Maybe Text)
describeMitigationActionResponse_actionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMitigationActionResponse' {Maybe Text
actionId :: Maybe Text
$sel:actionId:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe Text
actionId} -> Maybe Text
actionId) (\s :: DescribeMitigationActionResponse
s@DescribeMitigationActionResponse' {} Maybe Text
a -> DescribeMitigationActionResponse
s {$sel:actionId:DescribeMitigationActionResponse' :: Maybe Text
actionId = Maybe Text
a} :: DescribeMitigationActionResponse)

-- | The friendly name that uniquely identifies the mitigation action.
describeMitigationActionResponse_actionName :: Lens.Lens' DescribeMitigationActionResponse (Prelude.Maybe Prelude.Text)
describeMitigationActionResponse_actionName :: Lens' DescribeMitigationActionResponse (Maybe Text)
describeMitigationActionResponse_actionName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMitigationActionResponse' {Maybe Text
actionName :: Maybe Text
$sel:actionName:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe Text
actionName} -> Maybe Text
actionName) (\s :: DescribeMitigationActionResponse
s@DescribeMitigationActionResponse' {} Maybe Text
a -> DescribeMitigationActionResponse
s {$sel:actionName:DescribeMitigationActionResponse' :: Maybe Text
actionName = Maybe Text
a} :: DescribeMitigationActionResponse)

-- | Parameters that control how the mitigation action is applied, specific
-- to the type of mitigation action.
describeMitigationActionResponse_actionParams :: Lens.Lens' DescribeMitigationActionResponse (Prelude.Maybe MitigationActionParams)
describeMitigationActionResponse_actionParams :: Lens'
  DescribeMitigationActionResponse (Maybe MitigationActionParams)
describeMitigationActionResponse_actionParams = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMitigationActionResponse' {Maybe MitigationActionParams
actionParams :: Maybe MitigationActionParams
$sel:actionParams:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe MitigationActionParams
actionParams} -> Maybe MitigationActionParams
actionParams) (\s :: DescribeMitigationActionResponse
s@DescribeMitigationActionResponse' {} Maybe MitigationActionParams
a -> DescribeMitigationActionResponse
s {$sel:actionParams:DescribeMitigationActionResponse' :: Maybe MitigationActionParams
actionParams = Maybe MitigationActionParams
a} :: DescribeMitigationActionResponse)

-- | The type of mitigation action.
describeMitigationActionResponse_actionType :: Lens.Lens' DescribeMitigationActionResponse (Prelude.Maybe MitigationActionType)
describeMitigationActionResponse_actionType :: Lens' DescribeMitigationActionResponse (Maybe MitigationActionType)
describeMitigationActionResponse_actionType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMitigationActionResponse' {Maybe MitigationActionType
actionType :: Maybe MitigationActionType
$sel:actionType:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe MitigationActionType
actionType} -> Maybe MitigationActionType
actionType) (\s :: DescribeMitigationActionResponse
s@DescribeMitigationActionResponse' {} Maybe MitigationActionType
a -> DescribeMitigationActionResponse
s {$sel:actionType:DescribeMitigationActionResponse' :: Maybe MitigationActionType
actionType = Maybe MitigationActionType
a} :: DescribeMitigationActionResponse)

-- | The date and time when the mitigation action was added to your Amazon
-- Web Services accounts.
describeMitigationActionResponse_creationDate :: Lens.Lens' DescribeMitigationActionResponse (Prelude.Maybe Prelude.UTCTime)
describeMitigationActionResponse_creationDate :: Lens' DescribeMitigationActionResponse (Maybe UTCTime)
describeMitigationActionResponse_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMitigationActionResponse' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: DescribeMitigationActionResponse
s@DescribeMitigationActionResponse' {} Maybe POSIX
a -> DescribeMitigationActionResponse
s {$sel:creationDate:DescribeMitigationActionResponse' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: DescribeMitigationActionResponse) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The date and time when the mitigation action was last changed.
describeMitigationActionResponse_lastModifiedDate :: Lens.Lens' DescribeMitigationActionResponse (Prelude.Maybe Prelude.UTCTime)
describeMitigationActionResponse_lastModifiedDate :: Lens' DescribeMitigationActionResponse (Maybe UTCTime)
describeMitigationActionResponse_lastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMitigationActionResponse' {Maybe POSIX
lastModifiedDate :: Maybe POSIX
$sel:lastModifiedDate:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe POSIX
lastModifiedDate} -> Maybe POSIX
lastModifiedDate) (\s :: DescribeMitigationActionResponse
s@DescribeMitigationActionResponse' {} Maybe POSIX
a -> DescribeMitigationActionResponse
s {$sel:lastModifiedDate:DescribeMitigationActionResponse' :: Maybe POSIX
lastModifiedDate = Maybe POSIX
a} :: DescribeMitigationActionResponse) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The ARN of the IAM role used to apply this action.
describeMitigationActionResponse_roleArn :: Lens.Lens' DescribeMitigationActionResponse (Prelude.Maybe Prelude.Text)
describeMitigationActionResponse_roleArn :: Lens' DescribeMitigationActionResponse (Maybe Text)
describeMitigationActionResponse_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeMitigationActionResponse' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: DescribeMitigationActionResponse
s@DescribeMitigationActionResponse' {} Maybe Text
a -> DescribeMitigationActionResponse
s {$sel:roleArn:DescribeMitigationActionResponse' :: Maybe Text
roleArn = Maybe Text
a} :: DescribeMitigationActionResponse)

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

instance
  Prelude.NFData
    DescribeMitigationActionResponse
  where
  rnf :: DescribeMitigationActionResponse -> ()
rnf DescribeMitigationActionResponse' {Int
Maybe Text
Maybe POSIX
Maybe MitigationActionType
Maybe MitigationActionParams
httpStatus :: Int
roleArn :: Maybe Text
lastModifiedDate :: Maybe POSIX
creationDate :: Maybe POSIX
actionType :: Maybe MitigationActionType
actionParams :: Maybe MitigationActionParams
actionName :: Maybe Text
actionId :: Maybe Text
actionArn :: Maybe Text
$sel:httpStatus:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Int
$sel:roleArn:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe Text
$sel:lastModifiedDate:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe POSIX
$sel:creationDate:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe POSIX
$sel:actionType:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe MitigationActionType
$sel:actionParams:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe MitigationActionParams
$sel:actionName:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe Text
$sel:actionId:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe Text
$sel:actionArn:DescribeMitigationActionResponse' :: DescribeMitigationActionResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
actionArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
actionId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
actionName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MitigationActionParams
actionParams
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MitigationActionType
actionType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastModifiedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus