{-# 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.QuickSight.DeleteAnalysis
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes an analysis from Amazon QuickSight. You can optionally include a
-- recovery window during which you can restore the analysis. If you don\'t
-- specify a recovery window value, the operation defaults to 30 days.
-- Amazon QuickSight attaches a @DeletionTime@ stamp to the response that
-- specifies the end of the recovery window. At the end of the recovery
-- window, Amazon QuickSight deletes the analysis permanently.
--
-- At any time before recovery window ends, you can use the
-- @RestoreAnalysis@ API operation to remove the @DeletionTime@ stamp and
-- cancel the deletion of the analysis. The analysis remains visible in the
-- API until it\'s deleted, so you can describe it but you can\'t make a
-- template from it.
--
-- An analysis that\'s scheduled for deletion isn\'t accessible in the
-- Amazon QuickSight console. To access it in the console, restore it.
-- Deleting an analysis doesn\'t delete the dashboards that you publish
-- from it.
module Amazonka.QuickSight.DeleteAnalysis
  ( -- * Creating a Request
    DeleteAnalysis (..),
    newDeleteAnalysis,

    -- * Request Lenses
    deleteAnalysis_forceDeleteWithoutRecovery,
    deleteAnalysis_recoveryWindowInDays,
    deleteAnalysis_awsAccountId,
    deleteAnalysis_analysisId,

    -- * Destructuring the Response
    DeleteAnalysisResponse (..),
    newDeleteAnalysisResponse,

    -- * Response Lenses
    deleteAnalysisResponse_analysisId,
    deleteAnalysisResponse_arn,
    deleteAnalysisResponse_deletionTime,
    deleteAnalysisResponse_requestId,
    deleteAnalysisResponse_status,
  )
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 Amazonka.QuickSight.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDeleteAnalysis' smart constructor.
data DeleteAnalysis = DeleteAnalysis'
  { -- | This option defaults to the value @NoForceDeleteWithoutRecovery@. To
    -- immediately delete the analysis, add the @ForceDeleteWithoutRecovery@
    -- option. You can\'t restore an analysis after it\'s deleted.
    DeleteAnalysis -> Maybe Bool
forceDeleteWithoutRecovery :: Prelude.Maybe Prelude.Bool,
    -- | A value that specifies the number of days that Amazon QuickSight waits
    -- before it deletes the analysis. You can\'t use this parameter with the
    -- @ForceDeleteWithoutRecovery@ option in the same API call. The default
    -- value is 30.
    DeleteAnalysis -> Maybe Natural
recoveryWindowInDays :: Prelude.Maybe Prelude.Natural,
    -- | The ID of the Amazon Web Services account where you want to delete an
    -- analysis.
    DeleteAnalysis -> Text
awsAccountId :: Prelude.Text,
    -- | The ID of the analysis that you\'re deleting.
    DeleteAnalysis -> Text
analysisId :: Prelude.Text
  }
  deriving (DeleteAnalysis -> DeleteAnalysis -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteAnalysis -> DeleteAnalysis -> Bool
$c/= :: DeleteAnalysis -> DeleteAnalysis -> Bool
== :: DeleteAnalysis -> DeleteAnalysis -> Bool
$c== :: DeleteAnalysis -> DeleteAnalysis -> Bool
Prelude.Eq, ReadPrec [DeleteAnalysis]
ReadPrec DeleteAnalysis
Int -> ReadS DeleteAnalysis
ReadS [DeleteAnalysis]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteAnalysis]
$creadListPrec :: ReadPrec [DeleteAnalysis]
readPrec :: ReadPrec DeleteAnalysis
$creadPrec :: ReadPrec DeleteAnalysis
readList :: ReadS [DeleteAnalysis]
$creadList :: ReadS [DeleteAnalysis]
readsPrec :: Int -> ReadS DeleteAnalysis
$creadsPrec :: Int -> ReadS DeleteAnalysis
Prelude.Read, Int -> DeleteAnalysis -> ShowS
[DeleteAnalysis] -> ShowS
DeleteAnalysis -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteAnalysis] -> ShowS
$cshowList :: [DeleteAnalysis] -> ShowS
show :: DeleteAnalysis -> String
$cshow :: DeleteAnalysis -> String
showsPrec :: Int -> DeleteAnalysis -> ShowS
$cshowsPrec :: Int -> DeleteAnalysis -> ShowS
Prelude.Show, forall x. Rep DeleteAnalysis x -> DeleteAnalysis
forall x. DeleteAnalysis -> Rep DeleteAnalysis x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteAnalysis x -> DeleteAnalysis
$cfrom :: forall x. DeleteAnalysis -> Rep DeleteAnalysis x
Prelude.Generic)

-- |
-- Create a value of 'DeleteAnalysis' 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:
--
-- 'forceDeleteWithoutRecovery', 'deleteAnalysis_forceDeleteWithoutRecovery' - This option defaults to the value @NoForceDeleteWithoutRecovery@. To
-- immediately delete the analysis, add the @ForceDeleteWithoutRecovery@
-- option. You can\'t restore an analysis after it\'s deleted.
--
-- 'recoveryWindowInDays', 'deleteAnalysis_recoveryWindowInDays' - A value that specifies the number of days that Amazon QuickSight waits
-- before it deletes the analysis. You can\'t use this parameter with the
-- @ForceDeleteWithoutRecovery@ option in the same API call. The default
-- value is 30.
--
-- 'awsAccountId', 'deleteAnalysis_awsAccountId' - The ID of the Amazon Web Services account where you want to delete an
-- analysis.
--
-- 'analysisId', 'deleteAnalysis_analysisId' - The ID of the analysis that you\'re deleting.
newDeleteAnalysis ::
  -- | 'awsAccountId'
  Prelude.Text ->
  -- | 'analysisId'
  Prelude.Text ->
  DeleteAnalysis
newDeleteAnalysis :: Text -> Text -> DeleteAnalysis
newDeleteAnalysis Text
pAwsAccountId_ Text
pAnalysisId_ =
  DeleteAnalysis'
    { $sel:forceDeleteWithoutRecovery:DeleteAnalysis' :: Maybe Bool
forceDeleteWithoutRecovery =
        forall a. Maybe a
Prelude.Nothing,
      $sel:recoveryWindowInDays:DeleteAnalysis' :: Maybe Natural
recoveryWindowInDays = forall a. Maybe a
Prelude.Nothing,
      $sel:awsAccountId:DeleteAnalysis' :: Text
awsAccountId = Text
pAwsAccountId_,
      $sel:analysisId:DeleteAnalysis' :: Text
analysisId = Text
pAnalysisId_
    }

-- | This option defaults to the value @NoForceDeleteWithoutRecovery@. To
-- immediately delete the analysis, add the @ForceDeleteWithoutRecovery@
-- option. You can\'t restore an analysis after it\'s deleted.
deleteAnalysis_forceDeleteWithoutRecovery :: Lens.Lens' DeleteAnalysis (Prelude.Maybe Prelude.Bool)
deleteAnalysis_forceDeleteWithoutRecovery :: Lens' DeleteAnalysis (Maybe Bool)
deleteAnalysis_forceDeleteWithoutRecovery = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAnalysis' {Maybe Bool
forceDeleteWithoutRecovery :: Maybe Bool
$sel:forceDeleteWithoutRecovery:DeleteAnalysis' :: DeleteAnalysis -> Maybe Bool
forceDeleteWithoutRecovery} -> Maybe Bool
forceDeleteWithoutRecovery) (\s :: DeleteAnalysis
s@DeleteAnalysis' {} Maybe Bool
a -> DeleteAnalysis
s {$sel:forceDeleteWithoutRecovery:DeleteAnalysis' :: Maybe Bool
forceDeleteWithoutRecovery = Maybe Bool
a} :: DeleteAnalysis)

-- | A value that specifies the number of days that Amazon QuickSight waits
-- before it deletes the analysis. You can\'t use this parameter with the
-- @ForceDeleteWithoutRecovery@ option in the same API call. The default
-- value is 30.
deleteAnalysis_recoveryWindowInDays :: Lens.Lens' DeleteAnalysis (Prelude.Maybe Prelude.Natural)
deleteAnalysis_recoveryWindowInDays :: Lens' DeleteAnalysis (Maybe Natural)
deleteAnalysis_recoveryWindowInDays = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAnalysis' {Maybe Natural
recoveryWindowInDays :: Maybe Natural
$sel:recoveryWindowInDays:DeleteAnalysis' :: DeleteAnalysis -> Maybe Natural
recoveryWindowInDays} -> Maybe Natural
recoveryWindowInDays) (\s :: DeleteAnalysis
s@DeleteAnalysis' {} Maybe Natural
a -> DeleteAnalysis
s {$sel:recoveryWindowInDays:DeleteAnalysis' :: Maybe Natural
recoveryWindowInDays = Maybe Natural
a} :: DeleteAnalysis)

-- | The ID of the Amazon Web Services account where you want to delete an
-- analysis.
deleteAnalysis_awsAccountId :: Lens.Lens' DeleteAnalysis Prelude.Text
deleteAnalysis_awsAccountId :: Lens' DeleteAnalysis Text
deleteAnalysis_awsAccountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAnalysis' {Text
awsAccountId :: Text
$sel:awsAccountId:DeleteAnalysis' :: DeleteAnalysis -> Text
awsAccountId} -> Text
awsAccountId) (\s :: DeleteAnalysis
s@DeleteAnalysis' {} Text
a -> DeleteAnalysis
s {$sel:awsAccountId:DeleteAnalysis' :: Text
awsAccountId = Text
a} :: DeleteAnalysis)

-- | The ID of the analysis that you\'re deleting.
deleteAnalysis_analysisId :: Lens.Lens' DeleteAnalysis Prelude.Text
deleteAnalysis_analysisId :: Lens' DeleteAnalysis Text
deleteAnalysis_analysisId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAnalysis' {Text
analysisId :: Text
$sel:analysisId:DeleteAnalysis' :: DeleteAnalysis -> Text
analysisId} -> Text
analysisId) (\s :: DeleteAnalysis
s@DeleteAnalysis' {} Text
a -> DeleteAnalysis
s {$sel:analysisId:DeleteAnalysis' :: Text
analysisId = Text
a} :: DeleteAnalysis)

instance Core.AWSRequest DeleteAnalysis where
  type
    AWSResponse DeleteAnalysis =
      DeleteAnalysisResponse
  request :: (Service -> Service) -> DeleteAnalysis -> Request DeleteAnalysis
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteAnalysis
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteAnalysis)))
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 POSIX
-> Maybe Text
-> Int
-> DeleteAnalysisResponse
DeleteAnalysisResponse'
            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
"AnalysisId")
            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
"Arn")
            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
"DeletionTime")
            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
"RequestId")
            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 DeleteAnalysis where
  hashWithSalt :: Int -> DeleteAnalysis -> Int
hashWithSalt Int
_salt DeleteAnalysis' {Maybe Bool
Maybe Natural
Text
analysisId :: Text
awsAccountId :: Text
recoveryWindowInDays :: Maybe Natural
forceDeleteWithoutRecovery :: Maybe Bool
$sel:analysisId:DeleteAnalysis' :: DeleteAnalysis -> Text
$sel:awsAccountId:DeleteAnalysis' :: DeleteAnalysis -> Text
$sel:recoveryWindowInDays:DeleteAnalysis' :: DeleteAnalysis -> Maybe Natural
$sel:forceDeleteWithoutRecovery:DeleteAnalysis' :: DeleteAnalysis -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
forceDeleteWithoutRecovery
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
recoveryWindowInDays
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
awsAccountId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
analysisId

instance Prelude.NFData DeleteAnalysis where
  rnf :: DeleteAnalysis -> ()
rnf DeleteAnalysis' {Maybe Bool
Maybe Natural
Text
analysisId :: Text
awsAccountId :: Text
recoveryWindowInDays :: Maybe Natural
forceDeleteWithoutRecovery :: Maybe Bool
$sel:analysisId:DeleteAnalysis' :: DeleteAnalysis -> Text
$sel:awsAccountId:DeleteAnalysis' :: DeleteAnalysis -> Text
$sel:recoveryWindowInDays:DeleteAnalysis' :: DeleteAnalysis -> Maybe Natural
$sel:forceDeleteWithoutRecovery:DeleteAnalysis' :: DeleteAnalysis -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
forceDeleteWithoutRecovery
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
recoveryWindowInDays
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
awsAccountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
analysisId

instance Data.ToHeaders DeleteAnalysis where
  toHeaders :: DeleteAnalysis -> 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.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DeleteAnalysis where
  toPath :: DeleteAnalysis -> ByteString
toPath DeleteAnalysis' {Maybe Bool
Maybe Natural
Text
analysisId :: Text
awsAccountId :: Text
recoveryWindowInDays :: Maybe Natural
forceDeleteWithoutRecovery :: Maybe Bool
$sel:analysisId:DeleteAnalysis' :: DeleteAnalysis -> Text
$sel:awsAccountId:DeleteAnalysis' :: DeleteAnalysis -> Text
$sel:recoveryWindowInDays:DeleteAnalysis' :: DeleteAnalysis -> Maybe Natural
$sel:forceDeleteWithoutRecovery:DeleteAnalysis' :: DeleteAnalysis -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/accounts/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
awsAccountId,
        ByteString
"/analyses/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
analysisId
      ]

instance Data.ToQuery DeleteAnalysis where
  toQuery :: DeleteAnalysis -> QueryString
toQuery DeleteAnalysis' {Maybe Bool
Maybe Natural
Text
analysisId :: Text
awsAccountId :: Text
recoveryWindowInDays :: Maybe Natural
forceDeleteWithoutRecovery :: Maybe Bool
$sel:analysisId:DeleteAnalysis' :: DeleteAnalysis -> Text
$sel:awsAccountId:DeleteAnalysis' :: DeleteAnalysis -> Text
$sel:recoveryWindowInDays:DeleteAnalysis' :: DeleteAnalysis -> Maybe Natural
$sel:forceDeleteWithoutRecovery:DeleteAnalysis' :: DeleteAnalysis -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"force-delete-without-recovery"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
forceDeleteWithoutRecovery,
        ByteString
"recovery-window-in-days"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
recoveryWindowInDays
      ]

-- | /See:/ 'newDeleteAnalysisResponse' smart constructor.
data DeleteAnalysisResponse = DeleteAnalysisResponse'
  { -- | The ID of the deleted analysis.
    DeleteAnalysisResponse -> Maybe Text
analysisId :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the deleted analysis.
    DeleteAnalysisResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The date and time that the analysis is scheduled to be deleted.
    DeleteAnalysisResponse -> Maybe POSIX
deletionTime :: Prelude.Maybe Data.POSIX,
    -- | The Amazon Web Services request ID for this operation.
    DeleteAnalysisResponse -> Maybe Text
requestId :: Prelude.Maybe Prelude.Text,
    -- | The HTTP status of the request.
    DeleteAnalysisResponse -> Int
status :: Prelude.Int
  }
  deriving (DeleteAnalysisResponse -> DeleteAnalysisResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteAnalysisResponse -> DeleteAnalysisResponse -> Bool
$c/= :: DeleteAnalysisResponse -> DeleteAnalysisResponse -> Bool
== :: DeleteAnalysisResponse -> DeleteAnalysisResponse -> Bool
$c== :: DeleteAnalysisResponse -> DeleteAnalysisResponse -> Bool
Prelude.Eq, ReadPrec [DeleteAnalysisResponse]
ReadPrec DeleteAnalysisResponse
Int -> ReadS DeleteAnalysisResponse
ReadS [DeleteAnalysisResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteAnalysisResponse]
$creadListPrec :: ReadPrec [DeleteAnalysisResponse]
readPrec :: ReadPrec DeleteAnalysisResponse
$creadPrec :: ReadPrec DeleteAnalysisResponse
readList :: ReadS [DeleteAnalysisResponse]
$creadList :: ReadS [DeleteAnalysisResponse]
readsPrec :: Int -> ReadS DeleteAnalysisResponse
$creadsPrec :: Int -> ReadS DeleteAnalysisResponse
Prelude.Read, Int -> DeleteAnalysisResponse -> ShowS
[DeleteAnalysisResponse] -> ShowS
DeleteAnalysisResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteAnalysisResponse] -> ShowS
$cshowList :: [DeleteAnalysisResponse] -> ShowS
show :: DeleteAnalysisResponse -> String
$cshow :: DeleteAnalysisResponse -> String
showsPrec :: Int -> DeleteAnalysisResponse -> ShowS
$cshowsPrec :: Int -> DeleteAnalysisResponse -> ShowS
Prelude.Show, forall x. Rep DeleteAnalysisResponse x -> DeleteAnalysisResponse
forall x. DeleteAnalysisResponse -> Rep DeleteAnalysisResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteAnalysisResponse x -> DeleteAnalysisResponse
$cfrom :: forall x. DeleteAnalysisResponse -> Rep DeleteAnalysisResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteAnalysisResponse' 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:
--
-- 'analysisId', 'deleteAnalysisResponse_analysisId' - The ID of the deleted analysis.
--
-- 'arn', 'deleteAnalysisResponse_arn' - The Amazon Resource Name (ARN) of the deleted analysis.
--
-- 'deletionTime', 'deleteAnalysisResponse_deletionTime' - The date and time that the analysis is scheduled to be deleted.
--
-- 'requestId', 'deleteAnalysisResponse_requestId' - The Amazon Web Services request ID for this operation.
--
-- 'status', 'deleteAnalysisResponse_status' - The HTTP status of the request.
newDeleteAnalysisResponse ::
  -- | 'status'
  Prelude.Int ->
  DeleteAnalysisResponse
newDeleteAnalysisResponse :: Int -> DeleteAnalysisResponse
newDeleteAnalysisResponse Int
pStatus_ =
  DeleteAnalysisResponse'
    { $sel:analysisId:DeleteAnalysisResponse' :: Maybe Text
analysisId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:arn:DeleteAnalysisResponse' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:deletionTime:DeleteAnalysisResponse' :: Maybe POSIX
deletionTime = forall a. Maybe a
Prelude.Nothing,
      $sel:requestId:DeleteAnalysisResponse' :: Maybe Text
requestId = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DeleteAnalysisResponse' :: Int
status = Int
pStatus_
    }

-- | The ID of the deleted analysis.
deleteAnalysisResponse_analysisId :: Lens.Lens' DeleteAnalysisResponse (Prelude.Maybe Prelude.Text)
deleteAnalysisResponse_analysisId :: Lens' DeleteAnalysisResponse (Maybe Text)
deleteAnalysisResponse_analysisId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAnalysisResponse' {Maybe Text
analysisId :: Maybe Text
$sel:analysisId:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Maybe Text
analysisId} -> Maybe Text
analysisId) (\s :: DeleteAnalysisResponse
s@DeleteAnalysisResponse' {} Maybe Text
a -> DeleteAnalysisResponse
s {$sel:analysisId:DeleteAnalysisResponse' :: Maybe Text
analysisId = Maybe Text
a} :: DeleteAnalysisResponse)

-- | The Amazon Resource Name (ARN) of the deleted analysis.
deleteAnalysisResponse_arn :: Lens.Lens' DeleteAnalysisResponse (Prelude.Maybe Prelude.Text)
deleteAnalysisResponse_arn :: Lens' DeleteAnalysisResponse (Maybe Text)
deleteAnalysisResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAnalysisResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: DeleteAnalysisResponse
s@DeleteAnalysisResponse' {} Maybe Text
a -> DeleteAnalysisResponse
s {$sel:arn:DeleteAnalysisResponse' :: Maybe Text
arn = Maybe Text
a} :: DeleteAnalysisResponse)

-- | The date and time that the analysis is scheduled to be deleted.
deleteAnalysisResponse_deletionTime :: Lens.Lens' DeleteAnalysisResponse (Prelude.Maybe Prelude.UTCTime)
deleteAnalysisResponse_deletionTime :: Lens' DeleteAnalysisResponse (Maybe UTCTime)
deleteAnalysisResponse_deletionTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAnalysisResponse' {Maybe POSIX
deletionTime :: Maybe POSIX
$sel:deletionTime:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Maybe POSIX
deletionTime} -> Maybe POSIX
deletionTime) (\s :: DeleteAnalysisResponse
s@DeleteAnalysisResponse' {} Maybe POSIX
a -> DeleteAnalysisResponse
s {$sel:deletionTime:DeleteAnalysisResponse' :: Maybe POSIX
deletionTime = Maybe POSIX
a} :: DeleteAnalysisResponse) 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 Web Services request ID for this operation.
deleteAnalysisResponse_requestId :: Lens.Lens' DeleteAnalysisResponse (Prelude.Maybe Prelude.Text)
deleteAnalysisResponse_requestId :: Lens' DeleteAnalysisResponse (Maybe Text)
deleteAnalysisResponse_requestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAnalysisResponse' {Maybe Text
requestId :: Maybe Text
$sel:requestId:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Maybe Text
requestId} -> Maybe Text
requestId) (\s :: DeleteAnalysisResponse
s@DeleteAnalysisResponse' {} Maybe Text
a -> DeleteAnalysisResponse
s {$sel:requestId:DeleteAnalysisResponse' :: Maybe Text
requestId = Maybe Text
a} :: DeleteAnalysisResponse)

-- | The HTTP status of the request.
deleteAnalysisResponse_status :: Lens.Lens' DeleteAnalysisResponse Prelude.Int
deleteAnalysisResponse_status :: Lens' DeleteAnalysisResponse Int
deleteAnalysisResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAnalysisResponse' {Int
status :: Int
$sel:status:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Int
status} -> Int
status) (\s :: DeleteAnalysisResponse
s@DeleteAnalysisResponse' {} Int
a -> DeleteAnalysisResponse
s {$sel:status:DeleteAnalysisResponse' :: Int
status = Int
a} :: DeleteAnalysisResponse)

instance Prelude.NFData DeleteAnalysisResponse where
  rnf :: DeleteAnalysisResponse -> ()
rnf DeleteAnalysisResponse' {Int
Maybe Text
Maybe POSIX
status :: Int
requestId :: Maybe Text
deletionTime :: Maybe POSIX
arn :: Maybe Text
analysisId :: Maybe Text
$sel:status:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Int
$sel:requestId:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Maybe Text
$sel:deletionTime:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Maybe POSIX
$sel:arn:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Maybe Text
$sel:analysisId:DeleteAnalysisResponse' :: DeleteAnalysisResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
analysisId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
deletionTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
requestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
status