{-# 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.CloudTrail.RestoreEventDataStore
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Restores a deleted event data store specified by @EventDataStore@, which
-- accepts an event data store ARN. You can only restore a deleted event
-- data store within the seven-day wait period after deletion. Restoring an
-- event data store can take several minutes, depending on the size of the
-- event data store.
module Amazonka.CloudTrail.RestoreEventDataStore
  ( -- * Creating a Request
    RestoreEventDataStore (..),
    newRestoreEventDataStore,

    -- * Request Lenses
    restoreEventDataStore_eventDataStore,

    -- * Destructuring the Response
    RestoreEventDataStoreResponse (..),
    newRestoreEventDataStoreResponse,

    -- * Response Lenses
    restoreEventDataStoreResponse_advancedEventSelectors,
    restoreEventDataStoreResponse_createdTimestamp,
    restoreEventDataStoreResponse_eventDataStoreArn,
    restoreEventDataStoreResponse_kmsKeyId,
    restoreEventDataStoreResponse_multiRegionEnabled,
    restoreEventDataStoreResponse_name,
    restoreEventDataStoreResponse_organizationEnabled,
    restoreEventDataStoreResponse_retentionPeriod,
    restoreEventDataStoreResponse_status,
    restoreEventDataStoreResponse_terminationProtectionEnabled,
    restoreEventDataStoreResponse_updatedTimestamp,
    restoreEventDataStoreResponse_httpStatus,
  )
where

import Amazonka.CloudTrail.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:/ 'newRestoreEventDataStore' smart constructor.
data RestoreEventDataStore = RestoreEventDataStore'
  { -- | The ARN (or the ID suffix of the ARN) of the event data store that you
    -- want to restore.
    RestoreEventDataStore -> Text
eventDataStore :: Prelude.Text
  }
  deriving (RestoreEventDataStore -> RestoreEventDataStore -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RestoreEventDataStore -> RestoreEventDataStore -> Bool
$c/= :: RestoreEventDataStore -> RestoreEventDataStore -> Bool
== :: RestoreEventDataStore -> RestoreEventDataStore -> Bool
$c== :: RestoreEventDataStore -> RestoreEventDataStore -> Bool
Prelude.Eq, ReadPrec [RestoreEventDataStore]
ReadPrec RestoreEventDataStore
Int -> ReadS RestoreEventDataStore
ReadS [RestoreEventDataStore]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RestoreEventDataStore]
$creadListPrec :: ReadPrec [RestoreEventDataStore]
readPrec :: ReadPrec RestoreEventDataStore
$creadPrec :: ReadPrec RestoreEventDataStore
readList :: ReadS [RestoreEventDataStore]
$creadList :: ReadS [RestoreEventDataStore]
readsPrec :: Int -> ReadS RestoreEventDataStore
$creadsPrec :: Int -> ReadS RestoreEventDataStore
Prelude.Read, Int -> RestoreEventDataStore -> ShowS
[RestoreEventDataStore] -> ShowS
RestoreEventDataStore -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RestoreEventDataStore] -> ShowS
$cshowList :: [RestoreEventDataStore] -> ShowS
show :: RestoreEventDataStore -> String
$cshow :: RestoreEventDataStore -> String
showsPrec :: Int -> RestoreEventDataStore -> ShowS
$cshowsPrec :: Int -> RestoreEventDataStore -> ShowS
Prelude.Show, forall x. Rep RestoreEventDataStore x -> RestoreEventDataStore
forall x. RestoreEventDataStore -> Rep RestoreEventDataStore x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RestoreEventDataStore x -> RestoreEventDataStore
$cfrom :: forall x. RestoreEventDataStore -> Rep RestoreEventDataStore x
Prelude.Generic)

-- |
-- Create a value of 'RestoreEventDataStore' 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:
--
-- 'eventDataStore', 'restoreEventDataStore_eventDataStore' - The ARN (or the ID suffix of the ARN) of the event data store that you
-- want to restore.
newRestoreEventDataStore ::
  -- | 'eventDataStore'
  Prelude.Text ->
  RestoreEventDataStore
newRestoreEventDataStore :: Text -> RestoreEventDataStore
newRestoreEventDataStore Text
pEventDataStore_ =
  RestoreEventDataStore'
    { $sel:eventDataStore:RestoreEventDataStore' :: Text
eventDataStore =
        Text
pEventDataStore_
    }

-- | The ARN (or the ID suffix of the ARN) of the event data store that you
-- want to restore.
restoreEventDataStore_eventDataStore :: Lens.Lens' RestoreEventDataStore Prelude.Text
restoreEventDataStore_eventDataStore :: Lens' RestoreEventDataStore Text
restoreEventDataStore_eventDataStore = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStore' {Text
eventDataStore :: Text
$sel:eventDataStore:RestoreEventDataStore' :: RestoreEventDataStore -> Text
eventDataStore} -> Text
eventDataStore) (\s :: RestoreEventDataStore
s@RestoreEventDataStore' {} Text
a -> RestoreEventDataStore
s {$sel:eventDataStore:RestoreEventDataStore' :: Text
eventDataStore = Text
a} :: RestoreEventDataStore)

instance Core.AWSRequest RestoreEventDataStore where
  type
    AWSResponse RestoreEventDataStore =
      RestoreEventDataStoreResponse
  request :: (Service -> Service)
-> RestoreEventDataStore -> Request RestoreEventDataStore
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 RestoreEventDataStore
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse RestoreEventDataStore)))
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 [AdvancedEventSelector]
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Bool
-> Maybe Natural
-> Maybe EventDataStoreStatus
-> Maybe Bool
-> Maybe POSIX
-> Int
-> RestoreEventDataStoreResponse
RestoreEventDataStoreResponse'
            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
"AdvancedEventSelectors"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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
"CreatedTimestamp")
            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
"EventDataStoreArn")
            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
"KmsKeyId")
            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
"MultiRegionEnabled")
            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
"Name")
            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
"OrganizationEnabled")
            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
"RetentionPeriod")
            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
"Status")
            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
"TerminationProtectionEnabled")
            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
"UpdatedTimestamp")
            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 RestoreEventDataStore where
  hashWithSalt :: Int -> RestoreEventDataStore -> Int
hashWithSalt Int
_salt RestoreEventDataStore' {Text
eventDataStore :: Text
$sel:eventDataStore:RestoreEventDataStore' :: RestoreEventDataStore -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
eventDataStore

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

instance Data.ToHeaders RestoreEventDataStore where
  toHeaders :: RestoreEventDataStore -> 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
"com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101.RestoreEventDataStore" ::
                          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 RestoreEventDataStore where
  toJSON :: RestoreEventDataStore -> Value
toJSON RestoreEventDataStore' {Text
eventDataStore :: Text
$sel:eventDataStore:RestoreEventDataStore' :: RestoreEventDataStore -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"EventDataStore" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
eventDataStore)
          ]
      )

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

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

-- | /See:/ 'newRestoreEventDataStoreResponse' smart constructor.
data RestoreEventDataStoreResponse = RestoreEventDataStoreResponse'
  { -- | The advanced event selectors that were used to select events.
    RestoreEventDataStoreResponse -> Maybe [AdvancedEventSelector]
advancedEventSelectors :: Prelude.Maybe [AdvancedEventSelector],
    -- | The timestamp of an event data store\'s creation.
    RestoreEventDataStoreResponse -> Maybe POSIX
createdTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The event data store ARN.
    RestoreEventDataStoreResponse -> Maybe Text
eventDataStoreArn :: Prelude.Maybe Prelude.Text,
    -- | Specifies the KMS key ID that encrypts the events delivered by
    -- CloudTrail. The value is a fully specified ARN to a KMS key in the
    -- following format.
    --
    -- @arn:aws:kms:us-east-2:123456789012:key\/12345678-1234-1234-1234-123456789012@
    RestoreEventDataStoreResponse -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether the event data store is collecting events from all
    -- regions, or only from the region in which the event data store was
    -- created.
    RestoreEventDataStoreResponse -> Maybe Bool
multiRegionEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The name of the event data store.
    RestoreEventDataStoreResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether an event data store is collecting logged events for an
    -- organization in Organizations.
    RestoreEventDataStoreResponse -> Maybe Bool
organizationEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The retention period, in days.
    RestoreEventDataStoreResponse -> Maybe Natural
retentionPeriod :: Prelude.Maybe Prelude.Natural,
    -- | The status of the event data store.
    RestoreEventDataStoreResponse -> Maybe EventDataStoreStatus
status :: Prelude.Maybe EventDataStoreStatus,
    -- | Indicates that termination protection is enabled and the event data
    -- store cannot be automatically deleted.
    RestoreEventDataStoreResponse -> Maybe Bool
terminationProtectionEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The timestamp that shows when an event data store was updated, if
    -- applicable. @UpdatedTimestamp@ is always either the same or newer than
    -- the time shown in @CreatedTimestamp@.
    RestoreEventDataStoreResponse -> Maybe POSIX
updatedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The response's http status code.
    RestoreEventDataStoreResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (RestoreEventDataStoreResponse
-> RestoreEventDataStoreResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RestoreEventDataStoreResponse
-> RestoreEventDataStoreResponse -> Bool
$c/= :: RestoreEventDataStoreResponse
-> RestoreEventDataStoreResponse -> Bool
== :: RestoreEventDataStoreResponse
-> RestoreEventDataStoreResponse -> Bool
$c== :: RestoreEventDataStoreResponse
-> RestoreEventDataStoreResponse -> Bool
Prelude.Eq, ReadPrec [RestoreEventDataStoreResponse]
ReadPrec RestoreEventDataStoreResponse
Int -> ReadS RestoreEventDataStoreResponse
ReadS [RestoreEventDataStoreResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RestoreEventDataStoreResponse]
$creadListPrec :: ReadPrec [RestoreEventDataStoreResponse]
readPrec :: ReadPrec RestoreEventDataStoreResponse
$creadPrec :: ReadPrec RestoreEventDataStoreResponse
readList :: ReadS [RestoreEventDataStoreResponse]
$creadList :: ReadS [RestoreEventDataStoreResponse]
readsPrec :: Int -> ReadS RestoreEventDataStoreResponse
$creadsPrec :: Int -> ReadS RestoreEventDataStoreResponse
Prelude.Read, Int -> RestoreEventDataStoreResponse -> ShowS
[RestoreEventDataStoreResponse] -> ShowS
RestoreEventDataStoreResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RestoreEventDataStoreResponse] -> ShowS
$cshowList :: [RestoreEventDataStoreResponse] -> ShowS
show :: RestoreEventDataStoreResponse -> String
$cshow :: RestoreEventDataStoreResponse -> String
showsPrec :: Int -> RestoreEventDataStoreResponse -> ShowS
$cshowsPrec :: Int -> RestoreEventDataStoreResponse -> ShowS
Prelude.Show, forall x.
Rep RestoreEventDataStoreResponse x
-> RestoreEventDataStoreResponse
forall x.
RestoreEventDataStoreResponse
-> Rep RestoreEventDataStoreResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep RestoreEventDataStoreResponse x
-> RestoreEventDataStoreResponse
$cfrom :: forall x.
RestoreEventDataStoreResponse
-> Rep RestoreEventDataStoreResponse x
Prelude.Generic)

-- |
-- Create a value of 'RestoreEventDataStoreResponse' 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:
--
-- 'advancedEventSelectors', 'restoreEventDataStoreResponse_advancedEventSelectors' - The advanced event selectors that were used to select events.
--
-- 'createdTimestamp', 'restoreEventDataStoreResponse_createdTimestamp' - The timestamp of an event data store\'s creation.
--
-- 'eventDataStoreArn', 'restoreEventDataStoreResponse_eventDataStoreArn' - The event data store ARN.
--
-- 'kmsKeyId', 'restoreEventDataStoreResponse_kmsKeyId' - Specifies the KMS key ID that encrypts the events delivered by
-- CloudTrail. The value is a fully specified ARN to a KMS key in the
-- following format.
--
-- @arn:aws:kms:us-east-2:123456789012:key\/12345678-1234-1234-1234-123456789012@
--
-- 'multiRegionEnabled', 'restoreEventDataStoreResponse_multiRegionEnabled' - Indicates whether the event data store is collecting events from all
-- regions, or only from the region in which the event data store was
-- created.
--
-- 'name', 'restoreEventDataStoreResponse_name' - The name of the event data store.
--
-- 'organizationEnabled', 'restoreEventDataStoreResponse_organizationEnabled' - Indicates whether an event data store is collecting logged events for an
-- organization in Organizations.
--
-- 'retentionPeriod', 'restoreEventDataStoreResponse_retentionPeriod' - The retention period, in days.
--
-- 'status', 'restoreEventDataStoreResponse_status' - The status of the event data store.
--
-- 'terminationProtectionEnabled', 'restoreEventDataStoreResponse_terminationProtectionEnabled' - Indicates that termination protection is enabled and the event data
-- store cannot be automatically deleted.
--
-- 'updatedTimestamp', 'restoreEventDataStoreResponse_updatedTimestamp' - The timestamp that shows when an event data store was updated, if
-- applicable. @UpdatedTimestamp@ is always either the same or newer than
-- the time shown in @CreatedTimestamp@.
--
-- 'httpStatus', 'restoreEventDataStoreResponse_httpStatus' - The response's http status code.
newRestoreEventDataStoreResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  RestoreEventDataStoreResponse
newRestoreEventDataStoreResponse :: Int -> RestoreEventDataStoreResponse
newRestoreEventDataStoreResponse Int
pHttpStatus_ =
  RestoreEventDataStoreResponse'
    { $sel:advancedEventSelectors:RestoreEventDataStoreResponse' :: Maybe [AdvancedEventSelector]
advancedEventSelectors =
        forall a. Maybe a
Prelude.Nothing,
      $sel:createdTimestamp:RestoreEventDataStoreResponse' :: Maybe POSIX
createdTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:eventDataStoreArn:RestoreEventDataStoreResponse' :: Maybe Text
eventDataStoreArn = forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:RestoreEventDataStoreResponse' :: Maybe Text
kmsKeyId = forall a. Maybe a
Prelude.Nothing,
      $sel:multiRegionEnabled:RestoreEventDataStoreResponse' :: Maybe Bool
multiRegionEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:name:RestoreEventDataStoreResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:organizationEnabled:RestoreEventDataStoreResponse' :: Maybe Bool
organizationEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:retentionPeriod:RestoreEventDataStoreResponse' :: Maybe Natural
retentionPeriod = forall a. Maybe a
Prelude.Nothing,
      $sel:status:RestoreEventDataStoreResponse' :: Maybe EventDataStoreStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:terminationProtectionEnabled:RestoreEventDataStoreResponse' :: Maybe Bool
terminationProtectionEnabled =
        forall a. Maybe a
Prelude.Nothing,
      $sel:updatedTimestamp:RestoreEventDataStoreResponse' :: Maybe POSIX
updatedTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:RestoreEventDataStoreResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The advanced event selectors that were used to select events.
restoreEventDataStoreResponse_advancedEventSelectors :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe [AdvancedEventSelector])
restoreEventDataStoreResponse_advancedEventSelectors :: Lens' RestoreEventDataStoreResponse (Maybe [AdvancedEventSelector])
restoreEventDataStoreResponse_advancedEventSelectors = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe [AdvancedEventSelector]
advancedEventSelectors :: Maybe [AdvancedEventSelector]
$sel:advancedEventSelectors:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe [AdvancedEventSelector]
advancedEventSelectors} -> Maybe [AdvancedEventSelector]
advancedEventSelectors) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe [AdvancedEventSelector]
a -> RestoreEventDataStoreResponse
s {$sel:advancedEventSelectors:RestoreEventDataStoreResponse' :: Maybe [AdvancedEventSelector]
advancedEventSelectors = Maybe [AdvancedEventSelector]
a} :: RestoreEventDataStoreResponse) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The timestamp of an event data store\'s creation.
restoreEventDataStoreResponse_createdTimestamp :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe Prelude.UTCTime)
restoreEventDataStoreResponse_createdTimestamp :: Lens' RestoreEventDataStoreResponse (Maybe UTCTime)
restoreEventDataStoreResponse_createdTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe POSIX
createdTimestamp :: Maybe POSIX
$sel:createdTimestamp:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe POSIX
createdTimestamp} -> Maybe POSIX
createdTimestamp) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe POSIX
a -> RestoreEventDataStoreResponse
s {$sel:createdTimestamp:RestoreEventDataStoreResponse' :: Maybe POSIX
createdTimestamp = Maybe POSIX
a} :: RestoreEventDataStoreResponse) 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 event data store ARN.
restoreEventDataStoreResponse_eventDataStoreArn :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe Prelude.Text)
restoreEventDataStoreResponse_eventDataStoreArn :: Lens' RestoreEventDataStoreResponse (Maybe Text)
restoreEventDataStoreResponse_eventDataStoreArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe Text
eventDataStoreArn :: Maybe Text
$sel:eventDataStoreArn:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Text
eventDataStoreArn} -> Maybe Text
eventDataStoreArn) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe Text
a -> RestoreEventDataStoreResponse
s {$sel:eventDataStoreArn:RestoreEventDataStoreResponse' :: Maybe Text
eventDataStoreArn = Maybe Text
a} :: RestoreEventDataStoreResponse)

-- | Specifies the KMS key ID that encrypts the events delivered by
-- CloudTrail. The value is a fully specified ARN to a KMS key in the
-- following format.
--
-- @arn:aws:kms:us-east-2:123456789012:key\/12345678-1234-1234-1234-123456789012@
restoreEventDataStoreResponse_kmsKeyId :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe Prelude.Text)
restoreEventDataStoreResponse_kmsKeyId :: Lens' RestoreEventDataStoreResponse (Maybe Text)
restoreEventDataStoreResponse_kmsKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe Text
a -> RestoreEventDataStoreResponse
s {$sel:kmsKeyId:RestoreEventDataStoreResponse' :: Maybe Text
kmsKeyId = Maybe Text
a} :: RestoreEventDataStoreResponse)

-- | Indicates whether the event data store is collecting events from all
-- regions, or only from the region in which the event data store was
-- created.
restoreEventDataStoreResponse_multiRegionEnabled :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe Prelude.Bool)
restoreEventDataStoreResponse_multiRegionEnabled :: Lens' RestoreEventDataStoreResponse (Maybe Bool)
restoreEventDataStoreResponse_multiRegionEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe Bool
multiRegionEnabled :: Maybe Bool
$sel:multiRegionEnabled:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Bool
multiRegionEnabled} -> Maybe Bool
multiRegionEnabled) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe Bool
a -> RestoreEventDataStoreResponse
s {$sel:multiRegionEnabled:RestoreEventDataStoreResponse' :: Maybe Bool
multiRegionEnabled = Maybe Bool
a} :: RestoreEventDataStoreResponse)

-- | The name of the event data store.
restoreEventDataStoreResponse_name :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe Prelude.Text)
restoreEventDataStoreResponse_name :: Lens' RestoreEventDataStoreResponse (Maybe Text)
restoreEventDataStoreResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe Text
name :: Maybe Text
$sel:name:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Text
name} -> Maybe Text
name) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe Text
a -> RestoreEventDataStoreResponse
s {$sel:name:RestoreEventDataStoreResponse' :: Maybe Text
name = Maybe Text
a} :: RestoreEventDataStoreResponse)

-- | Indicates whether an event data store is collecting logged events for an
-- organization in Organizations.
restoreEventDataStoreResponse_organizationEnabled :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe Prelude.Bool)
restoreEventDataStoreResponse_organizationEnabled :: Lens' RestoreEventDataStoreResponse (Maybe Bool)
restoreEventDataStoreResponse_organizationEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe Bool
organizationEnabled :: Maybe Bool
$sel:organizationEnabled:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Bool
organizationEnabled} -> Maybe Bool
organizationEnabled) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe Bool
a -> RestoreEventDataStoreResponse
s {$sel:organizationEnabled:RestoreEventDataStoreResponse' :: Maybe Bool
organizationEnabled = Maybe Bool
a} :: RestoreEventDataStoreResponse)

-- | The retention period, in days.
restoreEventDataStoreResponse_retentionPeriod :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe Prelude.Natural)
restoreEventDataStoreResponse_retentionPeriod :: Lens' RestoreEventDataStoreResponse (Maybe Natural)
restoreEventDataStoreResponse_retentionPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe Natural
retentionPeriod :: Maybe Natural
$sel:retentionPeriod:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Natural
retentionPeriod} -> Maybe Natural
retentionPeriod) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe Natural
a -> RestoreEventDataStoreResponse
s {$sel:retentionPeriod:RestoreEventDataStoreResponse' :: Maybe Natural
retentionPeriod = Maybe Natural
a} :: RestoreEventDataStoreResponse)

-- | The status of the event data store.
restoreEventDataStoreResponse_status :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe EventDataStoreStatus)
restoreEventDataStoreResponse_status :: Lens' RestoreEventDataStoreResponse (Maybe EventDataStoreStatus)
restoreEventDataStoreResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe EventDataStoreStatus
status :: Maybe EventDataStoreStatus
$sel:status:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe EventDataStoreStatus
status} -> Maybe EventDataStoreStatus
status) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe EventDataStoreStatus
a -> RestoreEventDataStoreResponse
s {$sel:status:RestoreEventDataStoreResponse' :: Maybe EventDataStoreStatus
status = Maybe EventDataStoreStatus
a} :: RestoreEventDataStoreResponse)

-- | Indicates that termination protection is enabled and the event data
-- store cannot be automatically deleted.
restoreEventDataStoreResponse_terminationProtectionEnabled :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe Prelude.Bool)
restoreEventDataStoreResponse_terminationProtectionEnabled :: Lens' RestoreEventDataStoreResponse (Maybe Bool)
restoreEventDataStoreResponse_terminationProtectionEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe Bool
terminationProtectionEnabled :: Maybe Bool
$sel:terminationProtectionEnabled:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Bool
terminationProtectionEnabled} -> Maybe Bool
terminationProtectionEnabled) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe Bool
a -> RestoreEventDataStoreResponse
s {$sel:terminationProtectionEnabled:RestoreEventDataStoreResponse' :: Maybe Bool
terminationProtectionEnabled = Maybe Bool
a} :: RestoreEventDataStoreResponse)

-- | The timestamp that shows when an event data store was updated, if
-- applicable. @UpdatedTimestamp@ is always either the same or newer than
-- the time shown in @CreatedTimestamp@.
restoreEventDataStoreResponse_updatedTimestamp :: Lens.Lens' RestoreEventDataStoreResponse (Prelude.Maybe Prelude.UTCTime)
restoreEventDataStoreResponse_updatedTimestamp :: Lens' RestoreEventDataStoreResponse (Maybe UTCTime)
restoreEventDataStoreResponse_updatedTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Maybe POSIX
updatedTimestamp :: Maybe POSIX
$sel:updatedTimestamp:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe POSIX
updatedTimestamp} -> Maybe POSIX
updatedTimestamp) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Maybe POSIX
a -> RestoreEventDataStoreResponse
s {$sel:updatedTimestamp:RestoreEventDataStoreResponse' :: Maybe POSIX
updatedTimestamp = Maybe POSIX
a} :: RestoreEventDataStoreResponse) 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.
restoreEventDataStoreResponse_httpStatus :: Lens.Lens' RestoreEventDataStoreResponse Prelude.Int
restoreEventDataStoreResponse_httpStatus :: Lens' RestoreEventDataStoreResponse Int
restoreEventDataStoreResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreEventDataStoreResponse' {Int
httpStatus :: Int
$sel:httpStatus:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: RestoreEventDataStoreResponse
s@RestoreEventDataStoreResponse' {} Int
a -> RestoreEventDataStoreResponse
s {$sel:httpStatus:RestoreEventDataStoreResponse' :: Int
httpStatus = Int
a} :: RestoreEventDataStoreResponse)

instance Prelude.NFData RestoreEventDataStoreResponse where
  rnf :: RestoreEventDataStoreResponse -> ()
rnf RestoreEventDataStoreResponse' {Int
Maybe Bool
Maybe Natural
Maybe [AdvancedEventSelector]
Maybe Text
Maybe POSIX
Maybe EventDataStoreStatus
httpStatus :: Int
updatedTimestamp :: Maybe POSIX
terminationProtectionEnabled :: Maybe Bool
status :: Maybe EventDataStoreStatus
retentionPeriod :: Maybe Natural
organizationEnabled :: Maybe Bool
name :: Maybe Text
multiRegionEnabled :: Maybe Bool
kmsKeyId :: Maybe Text
eventDataStoreArn :: Maybe Text
createdTimestamp :: Maybe POSIX
advancedEventSelectors :: Maybe [AdvancedEventSelector]
$sel:httpStatus:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Int
$sel:updatedTimestamp:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe POSIX
$sel:terminationProtectionEnabled:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Bool
$sel:status:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe EventDataStoreStatus
$sel:retentionPeriod:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Natural
$sel:organizationEnabled:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Bool
$sel:name:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Text
$sel:multiRegionEnabled:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Bool
$sel:kmsKeyId:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Text
$sel:eventDataStoreArn:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe Text
$sel:createdTimestamp:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe POSIX
$sel:advancedEventSelectors:RestoreEventDataStoreResponse' :: RestoreEventDataStoreResponse -> Maybe [AdvancedEventSelector]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [AdvancedEventSelector]
advancedEventSelectors
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventDataStoreArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kmsKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
multiRegionEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
organizationEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
retentionPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EventDataStoreStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
terminationProtectionEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
updatedTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus