{-# 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.LexV2Models.DescribeBot
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Provides metadata information about a bot.
module Amazonka.LexV2Models.DescribeBot
  ( -- * Creating a Request
    DescribeBot (..),
    newDescribeBot,

    -- * Request Lenses
    describeBot_botId,

    -- * Destructuring the Response
    DescribeBotResponse (..),
    newDescribeBotResponse,

    -- * Response Lenses
    describeBotResponse_botId,
    describeBotResponse_botName,
    describeBotResponse_botStatus,
    describeBotResponse_creationDateTime,
    describeBotResponse_dataPrivacy,
    describeBotResponse_description,
    describeBotResponse_idleSessionTTLInSeconds,
    describeBotResponse_lastUpdatedDateTime,
    describeBotResponse_roleArn,
    describeBotResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeBot' smart constructor.
data DescribeBot = DescribeBot'
  { -- | The unique identifier of the bot to describe.
    DescribeBot -> Text
botId :: Prelude.Text
  }
  deriving (DescribeBot -> DescribeBot -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeBot -> DescribeBot -> Bool
$c/= :: DescribeBot -> DescribeBot -> Bool
== :: DescribeBot -> DescribeBot -> Bool
$c== :: DescribeBot -> DescribeBot -> Bool
Prelude.Eq, ReadPrec [DescribeBot]
ReadPrec DescribeBot
Int -> ReadS DescribeBot
ReadS [DescribeBot]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeBot]
$creadListPrec :: ReadPrec [DescribeBot]
readPrec :: ReadPrec DescribeBot
$creadPrec :: ReadPrec DescribeBot
readList :: ReadS [DescribeBot]
$creadList :: ReadS [DescribeBot]
readsPrec :: Int -> ReadS DescribeBot
$creadsPrec :: Int -> ReadS DescribeBot
Prelude.Read, Int -> DescribeBot -> ShowS
[DescribeBot] -> ShowS
DescribeBot -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeBot] -> ShowS
$cshowList :: [DescribeBot] -> ShowS
show :: DescribeBot -> String
$cshow :: DescribeBot -> String
showsPrec :: Int -> DescribeBot -> ShowS
$cshowsPrec :: Int -> DescribeBot -> ShowS
Prelude.Show, forall x. Rep DescribeBot x -> DescribeBot
forall x. DescribeBot -> Rep DescribeBot x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeBot x -> DescribeBot
$cfrom :: forall x. DescribeBot -> Rep DescribeBot x
Prelude.Generic)

-- |
-- Create a value of 'DescribeBot' 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:
--
-- 'botId', 'describeBot_botId' - The unique identifier of the bot to describe.
newDescribeBot ::
  -- | 'botId'
  Prelude.Text ->
  DescribeBot
newDescribeBot :: Text -> DescribeBot
newDescribeBot Text
pBotId_ =
  DescribeBot' {$sel:botId:DescribeBot' :: Text
botId = Text
pBotId_}

-- | The unique identifier of the bot to describe.
describeBot_botId :: Lens.Lens' DescribeBot Prelude.Text
describeBot_botId :: Lens' DescribeBot Text
describeBot_botId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBot' {Text
botId :: Text
$sel:botId:DescribeBot' :: DescribeBot -> Text
botId} -> Text
botId) (\s :: DescribeBot
s@DescribeBot' {} Text
a -> DescribeBot
s {$sel:botId:DescribeBot' :: Text
botId = Text
a} :: DescribeBot)

instance Core.AWSRequest DescribeBot where
  type AWSResponse DescribeBot = DescribeBotResponse
  request :: (Service -> Service) -> DescribeBot -> Request DescribeBot
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 DescribeBot
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeBot)))
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 BotStatus
-> Maybe POSIX
-> Maybe DataPrivacy
-> Maybe Text
-> Maybe Natural
-> Maybe POSIX
-> Maybe Text
-> Int
-> DescribeBotResponse
DescribeBotResponse'
            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
"botId")
            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
"botName")
            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
"botStatus")
            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
"creationDateTime")
            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
"dataPrivacy")
            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
"description")
            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
"idleSessionTTLInSeconds")
            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
"lastUpdatedDateTime")
            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 DescribeBot where
  hashWithSalt :: Int -> DescribeBot -> Int
hashWithSalt Int
_salt DescribeBot' {Text
botId :: Text
$sel:botId:DescribeBot' :: DescribeBot -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
botId

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

instance Data.ToHeaders DescribeBot where
  toHeaders :: DescribeBot -> 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 DescribeBot where
  toPath :: DescribeBot -> ByteString
toPath DescribeBot' {Text
botId :: Text
$sel:botId:DescribeBot' :: DescribeBot -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"/bots/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
botId, ByteString
"/"]

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

-- | /See:/ 'newDescribeBotResponse' smart constructor.
data DescribeBotResponse = DescribeBotResponse'
  { -- | The unique identifier of the bot.
    DescribeBotResponse -> Maybe Text
botId :: Prelude.Maybe Prelude.Text,
    -- | The name of the bot.
    DescribeBotResponse -> Maybe Text
botName :: Prelude.Maybe Prelude.Text,
    -- | The current status of the bot. When the status is @Available@ the bot is
    -- ready to be used in conversations with users.
    DescribeBotResponse -> Maybe BotStatus
botStatus :: Prelude.Maybe BotStatus,
    -- | A timestamp of the date and time that the bot was created.
    DescribeBotResponse -> Maybe POSIX
creationDateTime :: Prelude.Maybe Data.POSIX,
    -- | Settings for managing data privacy of the bot and its conversations with
    -- users.
    DescribeBotResponse -> Maybe DataPrivacy
dataPrivacy :: Prelude.Maybe DataPrivacy,
    -- | The description of the bot.
    DescribeBotResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The maximum time in seconds that Amazon Lex retains the data gathered in
    -- a conversation.
    DescribeBotResponse -> Maybe Natural
idleSessionTTLInSeconds :: Prelude.Maybe Prelude.Natural,
    -- | A timestamp of the date and time that the bot was last updated.
    DescribeBotResponse -> Maybe POSIX
lastUpdatedDateTime :: Prelude.Maybe Data.POSIX,
    -- | The Amazon Resource Name (ARN) of an IAM role that has permission to
    -- access the bot.
    DescribeBotResponse -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeBotResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeBotResponse -> DescribeBotResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeBotResponse -> DescribeBotResponse -> Bool
$c/= :: DescribeBotResponse -> DescribeBotResponse -> Bool
== :: DescribeBotResponse -> DescribeBotResponse -> Bool
$c== :: DescribeBotResponse -> DescribeBotResponse -> Bool
Prelude.Eq, ReadPrec [DescribeBotResponse]
ReadPrec DescribeBotResponse
Int -> ReadS DescribeBotResponse
ReadS [DescribeBotResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeBotResponse]
$creadListPrec :: ReadPrec [DescribeBotResponse]
readPrec :: ReadPrec DescribeBotResponse
$creadPrec :: ReadPrec DescribeBotResponse
readList :: ReadS [DescribeBotResponse]
$creadList :: ReadS [DescribeBotResponse]
readsPrec :: Int -> ReadS DescribeBotResponse
$creadsPrec :: Int -> ReadS DescribeBotResponse
Prelude.Read, Int -> DescribeBotResponse -> ShowS
[DescribeBotResponse] -> ShowS
DescribeBotResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeBotResponse] -> ShowS
$cshowList :: [DescribeBotResponse] -> ShowS
show :: DescribeBotResponse -> String
$cshow :: DescribeBotResponse -> String
showsPrec :: Int -> DescribeBotResponse -> ShowS
$cshowsPrec :: Int -> DescribeBotResponse -> ShowS
Prelude.Show, forall x. Rep DescribeBotResponse x -> DescribeBotResponse
forall x. DescribeBotResponse -> Rep DescribeBotResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeBotResponse x -> DescribeBotResponse
$cfrom :: forall x. DescribeBotResponse -> Rep DescribeBotResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeBotResponse' 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:
--
-- 'botId', 'describeBotResponse_botId' - The unique identifier of the bot.
--
-- 'botName', 'describeBotResponse_botName' - The name of the bot.
--
-- 'botStatus', 'describeBotResponse_botStatus' - The current status of the bot. When the status is @Available@ the bot is
-- ready to be used in conversations with users.
--
-- 'creationDateTime', 'describeBotResponse_creationDateTime' - A timestamp of the date and time that the bot was created.
--
-- 'dataPrivacy', 'describeBotResponse_dataPrivacy' - Settings for managing data privacy of the bot and its conversations with
-- users.
--
-- 'description', 'describeBotResponse_description' - The description of the bot.
--
-- 'idleSessionTTLInSeconds', 'describeBotResponse_idleSessionTTLInSeconds' - The maximum time in seconds that Amazon Lex retains the data gathered in
-- a conversation.
--
-- 'lastUpdatedDateTime', 'describeBotResponse_lastUpdatedDateTime' - A timestamp of the date and time that the bot was last updated.
--
-- 'roleArn', 'describeBotResponse_roleArn' - The Amazon Resource Name (ARN) of an IAM role that has permission to
-- access the bot.
--
-- 'httpStatus', 'describeBotResponse_httpStatus' - The response's http status code.
newDescribeBotResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeBotResponse
newDescribeBotResponse :: Int -> DescribeBotResponse
newDescribeBotResponse Int
pHttpStatus_ =
  DescribeBotResponse'
    { $sel:botId:DescribeBotResponse' :: Maybe Text
botId = forall a. Maybe a
Prelude.Nothing,
      $sel:botName:DescribeBotResponse' :: Maybe Text
botName = forall a. Maybe a
Prelude.Nothing,
      $sel:botStatus:DescribeBotResponse' :: Maybe BotStatus
botStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDateTime:DescribeBotResponse' :: Maybe POSIX
creationDateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:dataPrivacy:DescribeBotResponse' :: Maybe DataPrivacy
dataPrivacy = forall a. Maybe a
Prelude.Nothing,
      $sel:description:DescribeBotResponse' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:idleSessionTTLInSeconds:DescribeBotResponse' :: Maybe Natural
idleSessionTTLInSeconds = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedDateTime:DescribeBotResponse' :: Maybe POSIX
lastUpdatedDateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:DescribeBotResponse' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeBotResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The unique identifier of the bot.
describeBotResponse_botId :: Lens.Lens' DescribeBotResponse (Prelude.Maybe Prelude.Text)
describeBotResponse_botId :: Lens' DescribeBotResponse (Maybe Text)
describeBotResponse_botId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBotResponse' {Maybe Text
botId :: Maybe Text
$sel:botId:DescribeBotResponse' :: DescribeBotResponse -> Maybe Text
botId} -> Maybe Text
botId) (\s :: DescribeBotResponse
s@DescribeBotResponse' {} Maybe Text
a -> DescribeBotResponse
s {$sel:botId:DescribeBotResponse' :: Maybe Text
botId = Maybe Text
a} :: DescribeBotResponse)

-- | The name of the bot.
describeBotResponse_botName :: Lens.Lens' DescribeBotResponse (Prelude.Maybe Prelude.Text)
describeBotResponse_botName :: Lens' DescribeBotResponse (Maybe Text)
describeBotResponse_botName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBotResponse' {Maybe Text
botName :: Maybe Text
$sel:botName:DescribeBotResponse' :: DescribeBotResponse -> Maybe Text
botName} -> Maybe Text
botName) (\s :: DescribeBotResponse
s@DescribeBotResponse' {} Maybe Text
a -> DescribeBotResponse
s {$sel:botName:DescribeBotResponse' :: Maybe Text
botName = Maybe Text
a} :: DescribeBotResponse)

-- | The current status of the bot. When the status is @Available@ the bot is
-- ready to be used in conversations with users.
describeBotResponse_botStatus :: Lens.Lens' DescribeBotResponse (Prelude.Maybe BotStatus)
describeBotResponse_botStatus :: Lens' DescribeBotResponse (Maybe BotStatus)
describeBotResponse_botStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBotResponse' {Maybe BotStatus
botStatus :: Maybe BotStatus
$sel:botStatus:DescribeBotResponse' :: DescribeBotResponse -> Maybe BotStatus
botStatus} -> Maybe BotStatus
botStatus) (\s :: DescribeBotResponse
s@DescribeBotResponse' {} Maybe BotStatus
a -> DescribeBotResponse
s {$sel:botStatus:DescribeBotResponse' :: Maybe BotStatus
botStatus = Maybe BotStatus
a} :: DescribeBotResponse)

-- | A timestamp of the date and time that the bot was created.
describeBotResponse_creationDateTime :: Lens.Lens' DescribeBotResponse (Prelude.Maybe Prelude.UTCTime)
describeBotResponse_creationDateTime :: Lens' DescribeBotResponse (Maybe UTCTime)
describeBotResponse_creationDateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBotResponse' {Maybe POSIX
creationDateTime :: Maybe POSIX
$sel:creationDateTime:DescribeBotResponse' :: DescribeBotResponse -> Maybe POSIX
creationDateTime} -> Maybe POSIX
creationDateTime) (\s :: DescribeBotResponse
s@DescribeBotResponse' {} Maybe POSIX
a -> DescribeBotResponse
s {$sel:creationDateTime:DescribeBotResponse' :: Maybe POSIX
creationDateTime = Maybe POSIX
a} :: DescribeBotResponse) 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

-- | Settings for managing data privacy of the bot and its conversations with
-- users.
describeBotResponse_dataPrivacy :: Lens.Lens' DescribeBotResponse (Prelude.Maybe DataPrivacy)
describeBotResponse_dataPrivacy :: Lens' DescribeBotResponse (Maybe DataPrivacy)
describeBotResponse_dataPrivacy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBotResponse' {Maybe DataPrivacy
dataPrivacy :: Maybe DataPrivacy
$sel:dataPrivacy:DescribeBotResponse' :: DescribeBotResponse -> Maybe DataPrivacy
dataPrivacy} -> Maybe DataPrivacy
dataPrivacy) (\s :: DescribeBotResponse
s@DescribeBotResponse' {} Maybe DataPrivacy
a -> DescribeBotResponse
s {$sel:dataPrivacy:DescribeBotResponse' :: Maybe DataPrivacy
dataPrivacy = Maybe DataPrivacy
a} :: DescribeBotResponse)

-- | The description of the bot.
describeBotResponse_description :: Lens.Lens' DescribeBotResponse (Prelude.Maybe Prelude.Text)
describeBotResponse_description :: Lens' DescribeBotResponse (Maybe Text)
describeBotResponse_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBotResponse' {Maybe Text
description :: Maybe Text
$sel:description:DescribeBotResponse' :: DescribeBotResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: DescribeBotResponse
s@DescribeBotResponse' {} Maybe Text
a -> DescribeBotResponse
s {$sel:description:DescribeBotResponse' :: Maybe Text
description = Maybe Text
a} :: DescribeBotResponse)

-- | The maximum time in seconds that Amazon Lex retains the data gathered in
-- a conversation.
describeBotResponse_idleSessionTTLInSeconds :: Lens.Lens' DescribeBotResponse (Prelude.Maybe Prelude.Natural)
describeBotResponse_idleSessionTTLInSeconds :: Lens' DescribeBotResponse (Maybe Natural)
describeBotResponse_idleSessionTTLInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBotResponse' {Maybe Natural
idleSessionTTLInSeconds :: Maybe Natural
$sel:idleSessionTTLInSeconds:DescribeBotResponse' :: DescribeBotResponse -> Maybe Natural
idleSessionTTLInSeconds} -> Maybe Natural
idleSessionTTLInSeconds) (\s :: DescribeBotResponse
s@DescribeBotResponse' {} Maybe Natural
a -> DescribeBotResponse
s {$sel:idleSessionTTLInSeconds:DescribeBotResponse' :: Maybe Natural
idleSessionTTLInSeconds = Maybe Natural
a} :: DescribeBotResponse)

-- | A timestamp of the date and time that the bot was last updated.
describeBotResponse_lastUpdatedDateTime :: Lens.Lens' DescribeBotResponse (Prelude.Maybe Prelude.UTCTime)
describeBotResponse_lastUpdatedDateTime :: Lens' DescribeBotResponse (Maybe UTCTime)
describeBotResponse_lastUpdatedDateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBotResponse' {Maybe POSIX
lastUpdatedDateTime :: Maybe POSIX
$sel:lastUpdatedDateTime:DescribeBotResponse' :: DescribeBotResponse -> Maybe POSIX
lastUpdatedDateTime} -> Maybe POSIX
lastUpdatedDateTime) (\s :: DescribeBotResponse
s@DescribeBotResponse' {} Maybe POSIX
a -> DescribeBotResponse
s {$sel:lastUpdatedDateTime:DescribeBotResponse' :: Maybe POSIX
lastUpdatedDateTime = Maybe POSIX
a} :: DescribeBotResponse) 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 Amazon Resource Name (ARN) of an IAM role that has permission to
-- access the bot.
describeBotResponse_roleArn :: Lens.Lens' DescribeBotResponse (Prelude.Maybe Prelude.Text)
describeBotResponse_roleArn :: Lens' DescribeBotResponse (Maybe Text)
describeBotResponse_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBotResponse' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:DescribeBotResponse' :: DescribeBotResponse -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: DescribeBotResponse
s@DescribeBotResponse' {} Maybe Text
a -> DescribeBotResponse
s {$sel:roleArn:DescribeBotResponse' :: Maybe Text
roleArn = Maybe Text
a} :: DescribeBotResponse)

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

instance Prelude.NFData DescribeBotResponse where
  rnf :: DescribeBotResponse -> ()
rnf DescribeBotResponse' {Int
Maybe Natural
Maybe Text
Maybe POSIX
Maybe BotStatus
Maybe DataPrivacy
httpStatus :: Int
roleArn :: Maybe Text
lastUpdatedDateTime :: Maybe POSIX
idleSessionTTLInSeconds :: Maybe Natural
description :: Maybe Text
dataPrivacy :: Maybe DataPrivacy
creationDateTime :: Maybe POSIX
botStatus :: Maybe BotStatus
botName :: Maybe Text
botId :: Maybe Text
$sel:httpStatus:DescribeBotResponse' :: DescribeBotResponse -> Int
$sel:roleArn:DescribeBotResponse' :: DescribeBotResponse -> Maybe Text
$sel:lastUpdatedDateTime:DescribeBotResponse' :: DescribeBotResponse -> Maybe POSIX
$sel:idleSessionTTLInSeconds:DescribeBotResponse' :: DescribeBotResponse -> Maybe Natural
$sel:description:DescribeBotResponse' :: DescribeBotResponse -> Maybe Text
$sel:dataPrivacy:DescribeBotResponse' :: DescribeBotResponse -> Maybe DataPrivacy
$sel:creationDateTime:DescribeBotResponse' :: DescribeBotResponse -> Maybe POSIX
$sel:botStatus:DescribeBotResponse' :: DescribeBotResponse -> Maybe BotStatus
$sel:botName:DescribeBotResponse' :: DescribeBotResponse -> Maybe Text
$sel:botId:DescribeBotResponse' :: DescribeBotResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
botId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
botName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BotStatus
botStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationDateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataPrivacy
dataPrivacy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
idleSessionTTLInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdatedDateTime
      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