{-# 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.ChimeSDKIdentity.GetAppInstanceRetentionSettings
-- 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 the retention settings for an @AppInstance@.
module Amazonka.ChimeSDKIdentity.GetAppInstanceRetentionSettings
  ( -- * Creating a Request
    GetAppInstanceRetentionSettings (..),
    newGetAppInstanceRetentionSettings,

    -- * Request Lenses
    getAppInstanceRetentionSettings_appInstanceArn,

    -- * Destructuring the Response
    GetAppInstanceRetentionSettingsResponse (..),
    newGetAppInstanceRetentionSettingsResponse,

    -- * Response Lenses
    getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings,
    getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp,
    getAppInstanceRetentionSettingsResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'GetAppInstanceRetentionSettings' 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:
--
-- 'appInstanceArn', 'getAppInstanceRetentionSettings_appInstanceArn' - The ARN of the @AppInstance@.
newGetAppInstanceRetentionSettings ::
  -- | 'appInstanceArn'
  Prelude.Text ->
  GetAppInstanceRetentionSettings
newGetAppInstanceRetentionSettings :: Text -> GetAppInstanceRetentionSettings
newGetAppInstanceRetentionSettings Text
pAppInstanceArn_ =
  GetAppInstanceRetentionSettings'
    { $sel:appInstanceArn:GetAppInstanceRetentionSettings' :: Text
appInstanceArn =
        Text
pAppInstanceArn_
    }

-- | The ARN of the @AppInstance@.
getAppInstanceRetentionSettings_appInstanceArn :: Lens.Lens' GetAppInstanceRetentionSettings Prelude.Text
getAppInstanceRetentionSettings_appInstanceArn :: Lens' GetAppInstanceRetentionSettings Text
getAppInstanceRetentionSettings_appInstanceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetAppInstanceRetentionSettings' {Text
appInstanceArn :: Text
$sel:appInstanceArn:GetAppInstanceRetentionSettings' :: GetAppInstanceRetentionSettings -> Text
appInstanceArn} -> Text
appInstanceArn) (\s :: GetAppInstanceRetentionSettings
s@GetAppInstanceRetentionSettings' {} Text
a -> GetAppInstanceRetentionSettings
s {$sel:appInstanceArn:GetAppInstanceRetentionSettings' :: Text
appInstanceArn = Text
a} :: GetAppInstanceRetentionSettings)

instance
  Core.AWSRequest
    GetAppInstanceRetentionSettings
  where
  type
    AWSResponse GetAppInstanceRetentionSettings =
      GetAppInstanceRetentionSettingsResponse
  request :: (Service -> Service)
-> GetAppInstanceRetentionSettings
-> Request GetAppInstanceRetentionSettings
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 GetAppInstanceRetentionSettings
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GetAppInstanceRetentionSettings)))
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 AppInstanceRetentionSettings
-> Maybe POSIX -> Int -> GetAppInstanceRetentionSettingsResponse
GetAppInstanceRetentionSettingsResponse'
            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
"AppInstanceRetentionSettings")
            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
"InitiateDeletionTimestamp")
            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
    GetAppInstanceRetentionSettings
  where
  hashWithSalt :: Int -> GetAppInstanceRetentionSettings -> Int
hashWithSalt
    Int
_salt
    GetAppInstanceRetentionSettings' {Text
appInstanceArn :: Text
$sel:appInstanceArn:GetAppInstanceRetentionSettings' :: GetAppInstanceRetentionSettings -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
appInstanceArn

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

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

instance Data.ToPath GetAppInstanceRetentionSettings where
  toPath :: GetAppInstanceRetentionSettings -> ByteString
toPath GetAppInstanceRetentionSettings' {Text
appInstanceArn :: Text
$sel:appInstanceArn:GetAppInstanceRetentionSettings' :: GetAppInstanceRetentionSettings -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/app-instances/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
appInstanceArn,
        ByteString
"/retention-settings"
      ]

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

-- | /See:/ 'newGetAppInstanceRetentionSettingsResponse' smart constructor.
data GetAppInstanceRetentionSettingsResponse = GetAppInstanceRetentionSettingsResponse'
  { -- | The retention settings for the @AppInstance@.
    GetAppInstanceRetentionSettingsResponse
-> Maybe AppInstanceRetentionSettings
appInstanceRetentionSettings :: Prelude.Maybe AppInstanceRetentionSettings,
    -- | The timestamp representing the time at which the specified items are
    -- retained, in Epoch Seconds.
    GetAppInstanceRetentionSettingsResponse -> Maybe POSIX
initiateDeletionTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The response's http status code.
    GetAppInstanceRetentionSettingsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetAppInstanceRetentionSettingsResponse
-> GetAppInstanceRetentionSettingsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAppInstanceRetentionSettingsResponse
-> GetAppInstanceRetentionSettingsResponse -> Bool
$c/= :: GetAppInstanceRetentionSettingsResponse
-> GetAppInstanceRetentionSettingsResponse -> Bool
== :: GetAppInstanceRetentionSettingsResponse
-> GetAppInstanceRetentionSettingsResponse -> Bool
$c== :: GetAppInstanceRetentionSettingsResponse
-> GetAppInstanceRetentionSettingsResponse -> Bool
Prelude.Eq, ReadPrec [GetAppInstanceRetentionSettingsResponse]
ReadPrec GetAppInstanceRetentionSettingsResponse
Int -> ReadS GetAppInstanceRetentionSettingsResponse
ReadS [GetAppInstanceRetentionSettingsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetAppInstanceRetentionSettingsResponse]
$creadListPrec :: ReadPrec [GetAppInstanceRetentionSettingsResponse]
readPrec :: ReadPrec GetAppInstanceRetentionSettingsResponse
$creadPrec :: ReadPrec GetAppInstanceRetentionSettingsResponse
readList :: ReadS [GetAppInstanceRetentionSettingsResponse]
$creadList :: ReadS [GetAppInstanceRetentionSettingsResponse]
readsPrec :: Int -> ReadS GetAppInstanceRetentionSettingsResponse
$creadsPrec :: Int -> ReadS GetAppInstanceRetentionSettingsResponse
Prelude.Read, Int -> GetAppInstanceRetentionSettingsResponse -> ShowS
[GetAppInstanceRetentionSettingsResponse] -> ShowS
GetAppInstanceRetentionSettingsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetAppInstanceRetentionSettingsResponse] -> ShowS
$cshowList :: [GetAppInstanceRetentionSettingsResponse] -> ShowS
show :: GetAppInstanceRetentionSettingsResponse -> String
$cshow :: GetAppInstanceRetentionSettingsResponse -> String
showsPrec :: Int -> GetAppInstanceRetentionSettingsResponse -> ShowS
$cshowsPrec :: Int -> GetAppInstanceRetentionSettingsResponse -> ShowS
Prelude.Show, forall x.
Rep GetAppInstanceRetentionSettingsResponse x
-> GetAppInstanceRetentionSettingsResponse
forall x.
GetAppInstanceRetentionSettingsResponse
-> Rep GetAppInstanceRetentionSettingsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetAppInstanceRetentionSettingsResponse x
-> GetAppInstanceRetentionSettingsResponse
$cfrom :: forall x.
GetAppInstanceRetentionSettingsResponse
-> Rep GetAppInstanceRetentionSettingsResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetAppInstanceRetentionSettingsResponse' 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:
--
-- 'appInstanceRetentionSettings', 'getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings' - The retention settings for the @AppInstance@.
--
-- 'initiateDeletionTimestamp', 'getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp' - The timestamp representing the time at which the specified items are
-- retained, in Epoch Seconds.
--
-- 'httpStatus', 'getAppInstanceRetentionSettingsResponse_httpStatus' - The response's http status code.
newGetAppInstanceRetentionSettingsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetAppInstanceRetentionSettingsResponse
newGetAppInstanceRetentionSettingsResponse :: Int -> GetAppInstanceRetentionSettingsResponse
newGetAppInstanceRetentionSettingsResponse
  Int
pHttpStatus_ =
    GetAppInstanceRetentionSettingsResponse'
      { $sel:appInstanceRetentionSettings:GetAppInstanceRetentionSettingsResponse' :: Maybe AppInstanceRetentionSettings
appInstanceRetentionSettings =
          forall a. Maybe a
Prelude.Nothing,
        $sel:initiateDeletionTimestamp:GetAppInstanceRetentionSettingsResponse' :: Maybe POSIX
initiateDeletionTimestamp =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetAppInstanceRetentionSettingsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The retention settings for the @AppInstance@.
getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings :: Lens.Lens' GetAppInstanceRetentionSettingsResponse (Prelude.Maybe AppInstanceRetentionSettings)
getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings :: Lens'
  GetAppInstanceRetentionSettingsResponse
  (Maybe AppInstanceRetentionSettings)
getAppInstanceRetentionSettingsResponse_appInstanceRetentionSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetAppInstanceRetentionSettingsResponse' {Maybe AppInstanceRetentionSettings
appInstanceRetentionSettings :: Maybe AppInstanceRetentionSettings
$sel:appInstanceRetentionSettings:GetAppInstanceRetentionSettingsResponse' :: GetAppInstanceRetentionSettingsResponse
-> Maybe AppInstanceRetentionSettings
appInstanceRetentionSettings} -> Maybe AppInstanceRetentionSettings
appInstanceRetentionSettings) (\s :: GetAppInstanceRetentionSettingsResponse
s@GetAppInstanceRetentionSettingsResponse' {} Maybe AppInstanceRetentionSettings
a -> GetAppInstanceRetentionSettingsResponse
s {$sel:appInstanceRetentionSettings:GetAppInstanceRetentionSettingsResponse' :: Maybe AppInstanceRetentionSettings
appInstanceRetentionSettings = Maybe AppInstanceRetentionSettings
a} :: GetAppInstanceRetentionSettingsResponse)

-- | The timestamp representing the time at which the specified items are
-- retained, in Epoch Seconds.
getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp :: Lens.Lens' GetAppInstanceRetentionSettingsResponse (Prelude.Maybe Prelude.UTCTime)
getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp :: Lens' GetAppInstanceRetentionSettingsResponse (Maybe UTCTime)
getAppInstanceRetentionSettingsResponse_initiateDeletionTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetAppInstanceRetentionSettingsResponse' {Maybe POSIX
initiateDeletionTimestamp :: Maybe POSIX
$sel:initiateDeletionTimestamp:GetAppInstanceRetentionSettingsResponse' :: GetAppInstanceRetentionSettingsResponse -> Maybe POSIX
initiateDeletionTimestamp} -> Maybe POSIX
initiateDeletionTimestamp) (\s :: GetAppInstanceRetentionSettingsResponse
s@GetAppInstanceRetentionSettingsResponse' {} Maybe POSIX
a -> GetAppInstanceRetentionSettingsResponse
s {$sel:initiateDeletionTimestamp:GetAppInstanceRetentionSettingsResponse' :: Maybe POSIX
initiateDeletionTimestamp = Maybe POSIX
a} :: GetAppInstanceRetentionSettingsResponse) 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.
getAppInstanceRetentionSettingsResponse_httpStatus :: Lens.Lens' GetAppInstanceRetentionSettingsResponse Prelude.Int
getAppInstanceRetentionSettingsResponse_httpStatus :: Lens' GetAppInstanceRetentionSettingsResponse Int
getAppInstanceRetentionSettingsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetAppInstanceRetentionSettingsResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetAppInstanceRetentionSettingsResponse' :: GetAppInstanceRetentionSettingsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetAppInstanceRetentionSettingsResponse
s@GetAppInstanceRetentionSettingsResponse' {} Int
a -> GetAppInstanceRetentionSettingsResponse
s {$sel:httpStatus:GetAppInstanceRetentionSettingsResponse' :: Int
httpStatus = Int
a} :: GetAppInstanceRetentionSettingsResponse)

instance
  Prelude.NFData
    GetAppInstanceRetentionSettingsResponse
  where
  rnf :: GetAppInstanceRetentionSettingsResponse -> ()
rnf GetAppInstanceRetentionSettingsResponse' {Int
Maybe POSIX
Maybe AppInstanceRetentionSettings
httpStatus :: Int
initiateDeletionTimestamp :: Maybe POSIX
appInstanceRetentionSettings :: Maybe AppInstanceRetentionSettings
$sel:httpStatus:GetAppInstanceRetentionSettingsResponse' :: GetAppInstanceRetentionSettingsResponse -> Int
$sel:initiateDeletionTimestamp:GetAppInstanceRetentionSettingsResponse' :: GetAppInstanceRetentionSettingsResponse -> Maybe POSIX
$sel:appInstanceRetentionSettings:GetAppInstanceRetentionSettingsResponse' :: GetAppInstanceRetentionSettingsResponse
-> Maybe AppInstanceRetentionSettings
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AppInstanceRetentionSettings
appInstanceRetentionSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
initiateDeletionTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus