{-# 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.SSMContacts.DescribeEngagement
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Incident Manager uses engagements to engage contacts and escalation
-- plans during an incident. Use this command to describe the engagement
-- that occurred during an incident.
module Amazonka.SSMContacts.DescribeEngagement
  ( -- * Creating a Request
    DescribeEngagement (..),
    newDescribeEngagement,

    -- * Request Lenses
    describeEngagement_engagementId,

    -- * Destructuring the Response
    DescribeEngagementResponse (..),
    newDescribeEngagementResponse,

    -- * Response Lenses
    describeEngagementResponse_incidentId,
    describeEngagementResponse_publicContent,
    describeEngagementResponse_publicSubject,
    describeEngagementResponse_startTime,
    describeEngagementResponse_stopTime,
    describeEngagementResponse_httpStatus,
    describeEngagementResponse_contactArn,
    describeEngagementResponse_engagementArn,
    describeEngagementResponse_sender,
    describeEngagementResponse_subject,
    describeEngagementResponse_content,
  )
where

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
import Amazonka.SSMContacts.Types

-- | /See:/ 'newDescribeEngagement' smart constructor.
data DescribeEngagement = DescribeEngagement'
  { -- | The Amazon Resource Name (ARN) of the engagement you want the details
    -- of.
    DescribeEngagement -> Text
engagementId :: Prelude.Text
  }
  deriving (DescribeEngagement -> DescribeEngagement -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEngagement -> DescribeEngagement -> Bool
$c/= :: DescribeEngagement -> DescribeEngagement -> Bool
== :: DescribeEngagement -> DescribeEngagement -> Bool
$c== :: DescribeEngagement -> DescribeEngagement -> Bool
Prelude.Eq, ReadPrec [DescribeEngagement]
ReadPrec DescribeEngagement
Int -> ReadS DescribeEngagement
ReadS [DescribeEngagement]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEngagement]
$creadListPrec :: ReadPrec [DescribeEngagement]
readPrec :: ReadPrec DescribeEngagement
$creadPrec :: ReadPrec DescribeEngagement
readList :: ReadS [DescribeEngagement]
$creadList :: ReadS [DescribeEngagement]
readsPrec :: Int -> ReadS DescribeEngagement
$creadsPrec :: Int -> ReadS DescribeEngagement
Prelude.Read, Int -> DescribeEngagement -> ShowS
[DescribeEngagement] -> ShowS
DescribeEngagement -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEngagement] -> ShowS
$cshowList :: [DescribeEngagement] -> ShowS
show :: DescribeEngagement -> String
$cshow :: DescribeEngagement -> String
showsPrec :: Int -> DescribeEngagement -> ShowS
$cshowsPrec :: Int -> DescribeEngagement -> ShowS
Prelude.Show, forall x. Rep DescribeEngagement x -> DescribeEngagement
forall x. DescribeEngagement -> Rep DescribeEngagement x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeEngagement x -> DescribeEngagement
$cfrom :: forall x. DescribeEngagement -> Rep DescribeEngagement x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEngagement' 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:
--
-- 'engagementId', 'describeEngagement_engagementId' - The Amazon Resource Name (ARN) of the engagement you want the details
-- of.
newDescribeEngagement ::
  -- | 'engagementId'
  Prelude.Text ->
  DescribeEngagement
newDescribeEngagement :: Text -> DescribeEngagement
newDescribeEngagement Text
pEngagementId_ =
  DescribeEngagement' {$sel:engagementId:DescribeEngagement' :: Text
engagementId = Text
pEngagementId_}

-- | The Amazon Resource Name (ARN) of the engagement you want the details
-- of.
describeEngagement_engagementId :: Lens.Lens' DescribeEngagement Prelude.Text
describeEngagement_engagementId :: Lens' DescribeEngagement Text
describeEngagement_engagementId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagement' {Text
engagementId :: Text
$sel:engagementId:DescribeEngagement' :: DescribeEngagement -> Text
engagementId} -> Text
engagementId) (\s :: DescribeEngagement
s@DescribeEngagement' {} Text
a -> DescribeEngagement
s {$sel:engagementId:DescribeEngagement' :: Text
engagementId = Text
a} :: DescribeEngagement)

instance Core.AWSRequest DescribeEngagement where
  type
    AWSResponse DescribeEngagement =
      DescribeEngagementResponse
  request :: (Service -> Service)
-> DescribeEngagement -> Request DescribeEngagement
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 DescribeEngagement
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeEngagement)))
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 POSIX
-> Maybe POSIX
-> Int
-> Text
-> Text
-> Text
-> Text
-> Text
-> DescribeEngagementResponse
DescribeEngagementResponse'
            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
"IncidentId")
            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
"PublicContent")
            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
"PublicSubject")
            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
"StartTime")
            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
"StopTime")
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"ContactArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"EngagementArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"Sender")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"Subject")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"Content")
      )

instance Prelude.Hashable DescribeEngagement where
  hashWithSalt :: Int -> DescribeEngagement -> Int
hashWithSalt Int
_salt DescribeEngagement' {Text
engagementId :: Text
$sel:engagementId:DescribeEngagement' :: DescribeEngagement -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
engagementId

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

instance Data.ToHeaders DescribeEngagement where
  toHeaders :: DescribeEngagement -> 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
"SSMContacts.DescribeEngagement" ::
                          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 DescribeEngagement where
  toJSON :: DescribeEngagement -> Value
toJSON DescribeEngagement' {Text
engagementId :: Text
$sel:engagementId:DescribeEngagement' :: DescribeEngagement -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"EngagementId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
engagementId)]
      )

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

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

-- | /See:/ 'newDescribeEngagementResponse' smart constructor.
data DescribeEngagementResponse = DescribeEngagementResponse'
  { -- | The ARN of the incident in which the engagement occurred.
    DescribeEngagementResponse -> Maybe Text
incidentId :: Prelude.Maybe Prelude.Text,
    -- | The insecure content of the message that was sent to the contact. Use
    -- this field for engagements to @SMS@.
    DescribeEngagementResponse -> Maybe Text
publicContent :: Prelude.Maybe Prelude.Text,
    -- | The insecure subject of the message that was sent to the contact. Use
    -- this field for engagements to @SMS@.
    DescribeEngagementResponse -> Maybe Text
publicSubject :: Prelude.Maybe Prelude.Text,
    -- | The time that the engagement started.
    DescribeEngagementResponse -> Maybe POSIX
startTime :: Prelude.Maybe Data.POSIX,
    -- | The time that the engagement ended.
    DescribeEngagementResponse -> Maybe POSIX
stopTime :: Prelude.Maybe Data.POSIX,
    -- | The response's http status code.
    DescribeEngagementResponse -> Int
httpStatus :: Prelude.Int,
    -- | The ARN of the escalation plan or contacts involved in the engagement.
    DescribeEngagementResponse -> Text
contactArn :: Prelude.Text,
    -- | The ARN of the engagement.
    DescribeEngagementResponse -> Text
engagementArn :: Prelude.Text,
    -- | The user that started the engagement.
    DescribeEngagementResponse -> Text
sender :: Prelude.Text,
    -- | The secure subject of the message that was sent to the contact. Use this
    -- field for engagements to @VOICE@ and @EMAIL@.
    DescribeEngagementResponse -> Text
subject :: Prelude.Text,
    -- | The secure content of the message that was sent to the contact. Use this
    -- field for engagements to @VOICE@ and @EMAIL@.
    DescribeEngagementResponse -> Text
content :: Prelude.Text
  }
  deriving (DescribeEngagementResponse -> DescribeEngagementResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEngagementResponse -> DescribeEngagementResponse -> Bool
$c/= :: DescribeEngagementResponse -> DescribeEngagementResponse -> Bool
== :: DescribeEngagementResponse -> DescribeEngagementResponse -> Bool
$c== :: DescribeEngagementResponse -> DescribeEngagementResponse -> Bool
Prelude.Eq, ReadPrec [DescribeEngagementResponse]
ReadPrec DescribeEngagementResponse
Int -> ReadS DescribeEngagementResponse
ReadS [DescribeEngagementResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEngagementResponse]
$creadListPrec :: ReadPrec [DescribeEngagementResponse]
readPrec :: ReadPrec DescribeEngagementResponse
$creadPrec :: ReadPrec DescribeEngagementResponse
readList :: ReadS [DescribeEngagementResponse]
$creadList :: ReadS [DescribeEngagementResponse]
readsPrec :: Int -> ReadS DescribeEngagementResponse
$creadsPrec :: Int -> ReadS DescribeEngagementResponse
Prelude.Read, Int -> DescribeEngagementResponse -> ShowS
[DescribeEngagementResponse] -> ShowS
DescribeEngagementResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEngagementResponse] -> ShowS
$cshowList :: [DescribeEngagementResponse] -> ShowS
show :: DescribeEngagementResponse -> String
$cshow :: DescribeEngagementResponse -> String
showsPrec :: Int -> DescribeEngagementResponse -> ShowS
$cshowsPrec :: Int -> DescribeEngagementResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeEngagementResponse x -> DescribeEngagementResponse
forall x.
DescribeEngagementResponse -> Rep DescribeEngagementResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeEngagementResponse x -> DescribeEngagementResponse
$cfrom :: forall x.
DescribeEngagementResponse -> Rep DescribeEngagementResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEngagementResponse' 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:
--
-- 'incidentId', 'describeEngagementResponse_incidentId' - The ARN of the incident in which the engagement occurred.
--
-- 'publicContent', 'describeEngagementResponse_publicContent' - The insecure content of the message that was sent to the contact. Use
-- this field for engagements to @SMS@.
--
-- 'publicSubject', 'describeEngagementResponse_publicSubject' - The insecure subject of the message that was sent to the contact. Use
-- this field for engagements to @SMS@.
--
-- 'startTime', 'describeEngagementResponse_startTime' - The time that the engagement started.
--
-- 'stopTime', 'describeEngagementResponse_stopTime' - The time that the engagement ended.
--
-- 'httpStatus', 'describeEngagementResponse_httpStatus' - The response's http status code.
--
-- 'contactArn', 'describeEngagementResponse_contactArn' - The ARN of the escalation plan or contacts involved in the engagement.
--
-- 'engagementArn', 'describeEngagementResponse_engagementArn' - The ARN of the engagement.
--
-- 'sender', 'describeEngagementResponse_sender' - The user that started the engagement.
--
-- 'subject', 'describeEngagementResponse_subject' - The secure subject of the message that was sent to the contact. Use this
-- field for engagements to @VOICE@ and @EMAIL@.
--
-- 'content', 'describeEngagementResponse_content' - The secure content of the message that was sent to the contact. Use this
-- field for engagements to @VOICE@ and @EMAIL@.
newDescribeEngagementResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'contactArn'
  Prelude.Text ->
  -- | 'engagementArn'
  Prelude.Text ->
  -- | 'sender'
  Prelude.Text ->
  -- | 'subject'
  Prelude.Text ->
  -- | 'content'
  Prelude.Text ->
  DescribeEngagementResponse
newDescribeEngagementResponse :: Int
-> Text
-> Text
-> Text
-> Text
-> Text
-> DescribeEngagementResponse
newDescribeEngagementResponse
  Int
pHttpStatus_
  Text
pContactArn_
  Text
pEngagementArn_
  Text
pSender_
  Text
pSubject_
  Text
pContent_ =
    DescribeEngagementResponse'
      { $sel:incidentId:DescribeEngagementResponse' :: Maybe Text
incidentId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:publicContent:DescribeEngagementResponse' :: Maybe Text
publicContent = forall a. Maybe a
Prelude.Nothing,
        $sel:publicSubject:DescribeEngagementResponse' :: Maybe Text
publicSubject = forall a. Maybe a
Prelude.Nothing,
        $sel:startTime:DescribeEngagementResponse' :: Maybe POSIX
startTime = forall a. Maybe a
Prelude.Nothing,
        $sel:stopTime:DescribeEngagementResponse' :: Maybe POSIX
stopTime = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeEngagementResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:contactArn:DescribeEngagementResponse' :: Text
contactArn = Text
pContactArn_,
        $sel:engagementArn:DescribeEngagementResponse' :: Text
engagementArn = Text
pEngagementArn_,
        $sel:sender:DescribeEngagementResponse' :: Text
sender = Text
pSender_,
        $sel:subject:DescribeEngagementResponse' :: Text
subject = Text
pSubject_,
        $sel:content:DescribeEngagementResponse' :: Text
content = Text
pContent_
      }

-- | The ARN of the incident in which the engagement occurred.
describeEngagementResponse_incidentId :: Lens.Lens' DescribeEngagementResponse (Prelude.Maybe Prelude.Text)
describeEngagementResponse_incidentId :: Lens' DescribeEngagementResponse (Maybe Text)
describeEngagementResponse_incidentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Maybe Text
incidentId :: Maybe Text
$sel:incidentId:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe Text
incidentId} -> Maybe Text
incidentId) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Maybe Text
a -> DescribeEngagementResponse
s {$sel:incidentId:DescribeEngagementResponse' :: Maybe Text
incidentId = Maybe Text
a} :: DescribeEngagementResponse)

-- | The insecure content of the message that was sent to the contact. Use
-- this field for engagements to @SMS@.
describeEngagementResponse_publicContent :: Lens.Lens' DescribeEngagementResponse (Prelude.Maybe Prelude.Text)
describeEngagementResponse_publicContent :: Lens' DescribeEngagementResponse (Maybe Text)
describeEngagementResponse_publicContent = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Maybe Text
publicContent :: Maybe Text
$sel:publicContent:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe Text
publicContent} -> Maybe Text
publicContent) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Maybe Text
a -> DescribeEngagementResponse
s {$sel:publicContent:DescribeEngagementResponse' :: Maybe Text
publicContent = Maybe Text
a} :: DescribeEngagementResponse)

-- | The insecure subject of the message that was sent to the contact. Use
-- this field for engagements to @SMS@.
describeEngagementResponse_publicSubject :: Lens.Lens' DescribeEngagementResponse (Prelude.Maybe Prelude.Text)
describeEngagementResponse_publicSubject :: Lens' DescribeEngagementResponse (Maybe Text)
describeEngagementResponse_publicSubject = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Maybe Text
publicSubject :: Maybe Text
$sel:publicSubject:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe Text
publicSubject} -> Maybe Text
publicSubject) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Maybe Text
a -> DescribeEngagementResponse
s {$sel:publicSubject:DescribeEngagementResponse' :: Maybe Text
publicSubject = Maybe Text
a} :: DescribeEngagementResponse)

-- | The time that the engagement started.
describeEngagementResponse_startTime :: Lens.Lens' DescribeEngagementResponse (Prelude.Maybe Prelude.UTCTime)
describeEngagementResponse_startTime :: Lens' DescribeEngagementResponse (Maybe UTCTime)
describeEngagementResponse_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Maybe POSIX
a -> DescribeEngagementResponse
s {$sel:startTime:DescribeEngagementResponse' :: Maybe POSIX
startTime = Maybe POSIX
a} :: DescribeEngagementResponse) 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 time that the engagement ended.
describeEngagementResponse_stopTime :: Lens.Lens' DescribeEngagementResponse (Prelude.Maybe Prelude.UTCTime)
describeEngagementResponse_stopTime :: Lens' DescribeEngagementResponse (Maybe UTCTime)
describeEngagementResponse_stopTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Maybe POSIX
stopTime :: Maybe POSIX
$sel:stopTime:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe POSIX
stopTime} -> Maybe POSIX
stopTime) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Maybe POSIX
a -> DescribeEngagementResponse
s {$sel:stopTime:DescribeEngagementResponse' :: Maybe POSIX
stopTime = Maybe POSIX
a} :: DescribeEngagementResponse) 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 response's http status code.
describeEngagementResponse_httpStatus :: Lens.Lens' DescribeEngagementResponse Prelude.Int
describeEngagementResponse_httpStatus :: Lens' DescribeEngagementResponse Int
describeEngagementResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeEngagementResponse' :: DescribeEngagementResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Int
a -> DescribeEngagementResponse
s {$sel:httpStatus:DescribeEngagementResponse' :: Int
httpStatus = Int
a} :: DescribeEngagementResponse)

-- | The ARN of the escalation plan or contacts involved in the engagement.
describeEngagementResponse_contactArn :: Lens.Lens' DescribeEngagementResponse Prelude.Text
describeEngagementResponse_contactArn :: Lens' DescribeEngagementResponse Text
describeEngagementResponse_contactArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Text
contactArn :: Text
$sel:contactArn:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
contactArn} -> Text
contactArn) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Text
a -> DescribeEngagementResponse
s {$sel:contactArn:DescribeEngagementResponse' :: Text
contactArn = Text
a} :: DescribeEngagementResponse)

-- | The ARN of the engagement.
describeEngagementResponse_engagementArn :: Lens.Lens' DescribeEngagementResponse Prelude.Text
describeEngagementResponse_engagementArn :: Lens' DescribeEngagementResponse Text
describeEngagementResponse_engagementArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Text
engagementArn :: Text
$sel:engagementArn:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
engagementArn} -> Text
engagementArn) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Text
a -> DescribeEngagementResponse
s {$sel:engagementArn:DescribeEngagementResponse' :: Text
engagementArn = Text
a} :: DescribeEngagementResponse)

-- | The user that started the engagement.
describeEngagementResponse_sender :: Lens.Lens' DescribeEngagementResponse Prelude.Text
describeEngagementResponse_sender :: Lens' DescribeEngagementResponse Text
describeEngagementResponse_sender = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Text
sender :: Text
$sel:sender:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
sender} -> Text
sender) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Text
a -> DescribeEngagementResponse
s {$sel:sender:DescribeEngagementResponse' :: Text
sender = Text
a} :: DescribeEngagementResponse)

-- | The secure subject of the message that was sent to the contact. Use this
-- field for engagements to @VOICE@ and @EMAIL@.
describeEngagementResponse_subject :: Lens.Lens' DescribeEngagementResponse Prelude.Text
describeEngagementResponse_subject :: Lens' DescribeEngagementResponse Text
describeEngagementResponse_subject = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Text
subject :: Text
$sel:subject:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
subject} -> Text
subject) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Text
a -> DescribeEngagementResponse
s {$sel:subject:DescribeEngagementResponse' :: Text
subject = Text
a} :: DescribeEngagementResponse)

-- | The secure content of the message that was sent to the contact. Use this
-- field for engagements to @VOICE@ and @EMAIL@.
describeEngagementResponse_content :: Lens.Lens' DescribeEngagementResponse Prelude.Text
describeEngagementResponse_content :: Lens' DescribeEngagementResponse Text
describeEngagementResponse_content = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEngagementResponse' {Text
content :: Text
$sel:content:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
content} -> Text
content) (\s :: DescribeEngagementResponse
s@DescribeEngagementResponse' {} Text
a -> DescribeEngagementResponse
s {$sel:content:DescribeEngagementResponse' :: Text
content = Text
a} :: DescribeEngagementResponse)

instance Prelude.NFData DescribeEngagementResponse where
  rnf :: DescribeEngagementResponse -> ()
rnf DescribeEngagementResponse' {Int
Maybe Text
Maybe POSIX
Text
content :: Text
subject :: Text
sender :: Text
engagementArn :: Text
contactArn :: Text
httpStatus :: Int
stopTime :: Maybe POSIX
startTime :: Maybe POSIX
publicSubject :: Maybe Text
publicContent :: Maybe Text
incidentId :: Maybe Text
$sel:content:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
$sel:subject:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
$sel:sender:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
$sel:engagementArn:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
$sel:contactArn:DescribeEngagementResponse' :: DescribeEngagementResponse -> Text
$sel:httpStatus:DescribeEngagementResponse' :: DescribeEngagementResponse -> Int
$sel:stopTime:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe POSIX
$sel:startTime:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe POSIX
$sel:publicSubject:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe Text
$sel:publicContent:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe Text
$sel:incidentId:DescribeEngagementResponse' :: DescribeEngagementResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
incidentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
publicContent
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
publicSubject
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
stopTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
contactArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
engagementArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
sender
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
subject
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
content