{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.SSM.Types.ResourceDataSyncItem
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SSM.Types.ResourceDataSyncItem 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.SSM.Types.LastResourceDataSyncStatus
import Amazonka.SSM.Types.ResourceDataSyncS3Destination
import Amazonka.SSM.Types.ResourceDataSyncSourceWithState

-- | Information about a resource data sync configuration, including its
-- current status and last successful sync.
--
-- /See:/ 'newResourceDataSyncItem' smart constructor.
data ResourceDataSyncItem = ResourceDataSyncItem'
  { -- | The status reported by the last sync.
    ResourceDataSyncItem -> Maybe LastResourceDataSyncStatus
lastStatus :: Prelude.Maybe LastResourceDataSyncStatus,
    -- | The last time the sync operations returned a status of @SUCCESSFUL@
    -- (UTC).
    ResourceDataSyncItem -> Maybe POSIX
lastSuccessfulSyncTime :: Prelude.Maybe Data.POSIX,
    -- | The status message details reported by the last sync.
    ResourceDataSyncItem -> Maybe Text
lastSyncStatusMessage :: Prelude.Maybe Prelude.Text,
    -- | The last time the configuration attempted to sync (UTC).
    ResourceDataSyncItem -> Maybe POSIX
lastSyncTime :: Prelude.Maybe Data.POSIX,
    -- | Configuration information for the target S3 bucket.
    ResourceDataSyncItem -> Maybe ResourceDataSyncS3Destination
s3Destination :: Prelude.Maybe ResourceDataSyncS3Destination,
    -- | The date and time the configuration was created (UTC).
    ResourceDataSyncItem -> Maybe POSIX
syncCreatedTime :: Prelude.Maybe Data.POSIX,
    -- | The date and time the resource data sync was changed.
    ResourceDataSyncItem -> Maybe POSIX
syncLastModifiedTime :: Prelude.Maybe Data.POSIX,
    -- | The name of the resource data sync.
    ResourceDataSyncItem -> Maybe Text
syncName :: Prelude.Maybe Prelude.Text,
    -- | Information about the source where the data was synchronized.
    ResourceDataSyncItem -> Maybe ResourceDataSyncSourceWithState
syncSource :: Prelude.Maybe ResourceDataSyncSourceWithState,
    -- | The type of resource data sync. If @SyncType@ is @SyncToDestination@,
    -- then the resource data sync synchronizes data to an S3 bucket. If the
    -- @SyncType@ is @SyncFromSource@ then the resource data sync synchronizes
    -- data from Organizations or from multiple Amazon Web Services Regions.
    ResourceDataSyncItem -> Maybe Text
syncType :: Prelude.Maybe Prelude.Text
  }
  deriving (ResourceDataSyncItem -> ResourceDataSyncItem -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ResourceDataSyncItem -> ResourceDataSyncItem -> Bool
$c/= :: ResourceDataSyncItem -> ResourceDataSyncItem -> Bool
== :: ResourceDataSyncItem -> ResourceDataSyncItem -> Bool
$c== :: ResourceDataSyncItem -> ResourceDataSyncItem -> Bool
Prelude.Eq, ReadPrec [ResourceDataSyncItem]
ReadPrec ResourceDataSyncItem
Int -> ReadS ResourceDataSyncItem
ReadS [ResourceDataSyncItem]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ResourceDataSyncItem]
$creadListPrec :: ReadPrec [ResourceDataSyncItem]
readPrec :: ReadPrec ResourceDataSyncItem
$creadPrec :: ReadPrec ResourceDataSyncItem
readList :: ReadS [ResourceDataSyncItem]
$creadList :: ReadS [ResourceDataSyncItem]
readsPrec :: Int -> ReadS ResourceDataSyncItem
$creadsPrec :: Int -> ReadS ResourceDataSyncItem
Prelude.Read, Int -> ResourceDataSyncItem -> ShowS
[ResourceDataSyncItem] -> ShowS
ResourceDataSyncItem -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ResourceDataSyncItem] -> ShowS
$cshowList :: [ResourceDataSyncItem] -> ShowS
show :: ResourceDataSyncItem -> String
$cshow :: ResourceDataSyncItem -> String
showsPrec :: Int -> ResourceDataSyncItem -> ShowS
$cshowsPrec :: Int -> ResourceDataSyncItem -> ShowS
Prelude.Show, forall x. Rep ResourceDataSyncItem x -> ResourceDataSyncItem
forall x. ResourceDataSyncItem -> Rep ResourceDataSyncItem x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ResourceDataSyncItem x -> ResourceDataSyncItem
$cfrom :: forall x. ResourceDataSyncItem -> Rep ResourceDataSyncItem x
Prelude.Generic)

-- |
-- Create a value of 'ResourceDataSyncItem' 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:
--
-- 'lastStatus', 'resourceDataSyncItem_lastStatus' - The status reported by the last sync.
--
-- 'lastSuccessfulSyncTime', 'resourceDataSyncItem_lastSuccessfulSyncTime' - The last time the sync operations returned a status of @SUCCESSFUL@
-- (UTC).
--
-- 'lastSyncStatusMessage', 'resourceDataSyncItem_lastSyncStatusMessage' - The status message details reported by the last sync.
--
-- 'lastSyncTime', 'resourceDataSyncItem_lastSyncTime' - The last time the configuration attempted to sync (UTC).
--
-- 's3Destination', 'resourceDataSyncItem_s3Destination' - Configuration information for the target S3 bucket.
--
-- 'syncCreatedTime', 'resourceDataSyncItem_syncCreatedTime' - The date and time the configuration was created (UTC).
--
-- 'syncLastModifiedTime', 'resourceDataSyncItem_syncLastModifiedTime' - The date and time the resource data sync was changed.
--
-- 'syncName', 'resourceDataSyncItem_syncName' - The name of the resource data sync.
--
-- 'syncSource', 'resourceDataSyncItem_syncSource' - Information about the source where the data was synchronized.
--
-- 'syncType', 'resourceDataSyncItem_syncType' - The type of resource data sync. If @SyncType@ is @SyncToDestination@,
-- then the resource data sync synchronizes data to an S3 bucket. If the
-- @SyncType@ is @SyncFromSource@ then the resource data sync synchronizes
-- data from Organizations or from multiple Amazon Web Services Regions.
newResourceDataSyncItem ::
  ResourceDataSyncItem
newResourceDataSyncItem :: ResourceDataSyncItem
newResourceDataSyncItem =
  ResourceDataSyncItem'
    { $sel:lastStatus:ResourceDataSyncItem' :: Maybe LastResourceDataSyncStatus
lastStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:lastSuccessfulSyncTime:ResourceDataSyncItem' :: Maybe POSIX
lastSuccessfulSyncTime = forall a. Maybe a
Prelude.Nothing,
      $sel:lastSyncStatusMessage:ResourceDataSyncItem' :: Maybe Text
lastSyncStatusMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:lastSyncTime:ResourceDataSyncItem' :: Maybe POSIX
lastSyncTime = forall a. Maybe a
Prelude.Nothing,
      $sel:s3Destination:ResourceDataSyncItem' :: Maybe ResourceDataSyncS3Destination
s3Destination = forall a. Maybe a
Prelude.Nothing,
      $sel:syncCreatedTime:ResourceDataSyncItem' :: Maybe POSIX
syncCreatedTime = forall a. Maybe a
Prelude.Nothing,
      $sel:syncLastModifiedTime:ResourceDataSyncItem' :: Maybe POSIX
syncLastModifiedTime = forall a. Maybe a
Prelude.Nothing,
      $sel:syncName:ResourceDataSyncItem' :: Maybe Text
syncName = forall a. Maybe a
Prelude.Nothing,
      $sel:syncSource:ResourceDataSyncItem' :: Maybe ResourceDataSyncSourceWithState
syncSource = forall a. Maybe a
Prelude.Nothing,
      $sel:syncType:ResourceDataSyncItem' :: Maybe Text
syncType = forall a. Maybe a
Prelude.Nothing
    }

-- | The status reported by the last sync.
resourceDataSyncItem_lastStatus :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe LastResourceDataSyncStatus)
resourceDataSyncItem_lastStatus :: Lens' ResourceDataSyncItem (Maybe LastResourceDataSyncStatus)
resourceDataSyncItem_lastStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe LastResourceDataSyncStatus
lastStatus :: Maybe LastResourceDataSyncStatus
$sel:lastStatus:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe LastResourceDataSyncStatus
lastStatus} -> Maybe LastResourceDataSyncStatus
lastStatus) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe LastResourceDataSyncStatus
a -> ResourceDataSyncItem
s {$sel:lastStatus:ResourceDataSyncItem' :: Maybe LastResourceDataSyncStatus
lastStatus = Maybe LastResourceDataSyncStatus
a} :: ResourceDataSyncItem)

-- | The last time the sync operations returned a status of @SUCCESSFUL@
-- (UTC).
resourceDataSyncItem_lastSuccessfulSyncTime :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe Prelude.UTCTime)
resourceDataSyncItem_lastSuccessfulSyncTime :: Lens' ResourceDataSyncItem (Maybe UTCTime)
resourceDataSyncItem_lastSuccessfulSyncTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe POSIX
lastSuccessfulSyncTime :: Maybe POSIX
$sel:lastSuccessfulSyncTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
lastSuccessfulSyncTime} -> Maybe POSIX
lastSuccessfulSyncTime) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe POSIX
a -> ResourceDataSyncItem
s {$sel:lastSuccessfulSyncTime:ResourceDataSyncItem' :: Maybe POSIX
lastSuccessfulSyncTime = Maybe POSIX
a} :: ResourceDataSyncItem) 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 status message details reported by the last sync.
resourceDataSyncItem_lastSyncStatusMessage :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe Prelude.Text)
resourceDataSyncItem_lastSyncStatusMessage :: Lens' ResourceDataSyncItem (Maybe Text)
resourceDataSyncItem_lastSyncStatusMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe Text
lastSyncStatusMessage :: Maybe Text
$sel:lastSyncStatusMessage:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe Text
lastSyncStatusMessage} -> Maybe Text
lastSyncStatusMessage) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe Text
a -> ResourceDataSyncItem
s {$sel:lastSyncStatusMessage:ResourceDataSyncItem' :: Maybe Text
lastSyncStatusMessage = Maybe Text
a} :: ResourceDataSyncItem)

-- | The last time the configuration attempted to sync (UTC).
resourceDataSyncItem_lastSyncTime :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe Prelude.UTCTime)
resourceDataSyncItem_lastSyncTime :: Lens' ResourceDataSyncItem (Maybe UTCTime)
resourceDataSyncItem_lastSyncTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe POSIX
lastSyncTime :: Maybe POSIX
$sel:lastSyncTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
lastSyncTime} -> Maybe POSIX
lastSyncTime) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe POSIX
a -> ResourceDataSyncItem
s {$sel:lastSyncTime:ResourceDataSyncItem' :: Maybe POSIX
lastSyncTime = Maybe POSIX
a} :: ResourceDataSyncItem) 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

-- | Configuration information for the target S3 bucket.
resourceDataSyncItem_s3Destination :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe ResourceDataSyncS3Destination)
resourceDataSyncItem_s3Destination :: Lens' ResourceDataSyncItem (Maybe ResourceDataSyncS3Destination)
resourceDataSyncItem_s3Destination = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe ResourceDataSyncS3Destination
s3Destination :: Maybe ResourceDataSyncS3Destination
$sel:s3Destination:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe ResourceDataSyncS3Destination
s3Destination} -> Maybe ResourceDataSyncS3Destination
s3Destination) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe ResourceDataSyncS3Destination
a -> ResourceDataSyncItem
s {$sel:s3Destination:ResourceDataSyncItem' :: Maybe ResourceDataSyncS3Destination
s3Destination = Maybe ResourceDataSyncS3Destination
a} :: ResourceDataSyncItem)

-- | The date and time the configuration was created (UTC).
resourceDataSyncItem_syncCreatedTime :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe Prelude.UTCTime)
resourceDataSyncItem_syncCreatedTime :: Lens' ResourceDataSyncItem (Maybe UTCTime)
resourceDataSyncItem_syncCreatedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe POSIX
syncCreatedTime :: Maybe POSIX
$sel:syncCreatedTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
syncCreatedTime} -> Maybe POSIX
syncCreatedTime) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe POSIX
a -> ResourceDataSyncItem
s {$sel:syncCreatedTime:ResourceDataSyncItem' :: Maybe POSIX
syncCreatedTime = Maybe POSIX
a} :: ResourceDataSyncItem) 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 date and time the resource data sync was changed.
resourceDataSyncItem_syncLastModifiedTime :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe Prelude.UTCTime)
resourceDataSyncItem_syncLastModifiedTime :: Lens' ResourceDataSyncItem (Maybe UTCTime)
resourceDataSyncItem_syncLastModifiedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe POSIX
syncLastModifiedTime :: Maybe POSIX
$sel:syncLastModifiedTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
syncLastModifiedTime} -> Maybe POSIX
syncLastModifiedTime) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe POSIX
a -> ResourceDataSyncItem
s {$sel:syncLastModifiedTime:ResourceDataSyncItem' :: Maybe POSIX
syncLastModifiedTime = Maybe POSIX
a} :: ResourceDataSyncItem) 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 name of the resource data sync.
resourceDataSyncItem_syncName :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe Prelude.Text)
resourceDataSyncItem_syncName :: Lens' ResourceDataSyncItem (Maybe Text)
resourceDataSyncItem_syncName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe Text
syncName :: Maybe Text
$sel:syncName:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe Text
syncName} -> Maybe Text
syncName) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe Text
a -> ResourceDataSyncItem
s {$sel:syncName:ResourceDataSyncItem' :: Maybe Text
syncName = Maybe Text
a} :: ResourceDataSyncItem)

-- | Information about the source where the data was synchronized.
resourceDataSyncItem_syncSource :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe ResourceDataSyncSourceWithState)
resourceDataSyncItem_syncSource :: Lens' ResourceDataSyncItem (Maybe ResourceDataSyncSourceWithState)
resourceDataSyncItem_syncSource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe ResourceDataSyncSourceWithState
syncSource :: Maybe ResourceDataSyncSourceWithState
$sel:syncSource:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe ResourceDataSyncSourceWithState
syncSource} -> Maybe ResourceDataSyncSourceWithState
syncSource) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe ResourceDataSyncSourceWithState
a -> ResourceDataSyncItem
s {$sel:syncSource:ResourceDataSyncItem' :: Maybe ResourceDataSyncSourceWithState
syncSource = Maybe ResourceDataSyncSourceWithState
a} :: ResourceDataSyncItem)

-- | The type of resource data sync. If @SyncType@ is @SyncToDestination@,
-- then the resource data sync synchronizes data to an S3 bucket. If the
-- @SyncType@ is @SyncFromSource@ then the resource data sync synchronizes
-- data from Organizations or from multiple Amazon Web Services Regions.
resourceDataSyncItem_syncType :: Lens.Lens' ResourceDataSyncItem (Prelude.Maybe Prelude.Text)
resourceDataSyncItem_syncType :: Lens' ResourceDataSyncItem (Maybe Text)
resourceDataSyncItem_syncType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceDataSyncItem' {Maybe Text
syncType :: Maybe Text
$sel:syncType:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe Text
syncType} -> Maybe Text
syncType) (\s :: ResourceDataSyncItem
s@ResourceDataSyncItem' {} Maybe Text
a -> ResourceDataSyncItem
s {$sel:syncType:ResourceDataSyncItem' :: Maybe Text
syncType = Maybe Text
a} :: ResourceDataSyncItem)

instance Data.FromJSON ResourceDataSyncItem where
  parseJSON :: Value -> Parser ResourceDataSyncItem
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ResourceDataSyncItem"
      ( \Object
x ->
          Maybe LastResourceDataSyncStatus
-> Maybe POSIX
-> Maybe Text
-> Maybe POSIX
-> Maybe ResourceDataSyncS3Destination
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe ResourceDataSyncSourceWithState
-> Maybe Text
-> ResourceDataSyncItem
ResourceDataSyncItem'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LastStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LastSuccessfulSyncTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LastSyncStatusMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LastSyncTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"S3Destination")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SyncCreatedTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SyncLastModifiedTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SyncName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SyncSource")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SyncType")
      )

instance Prelude.Hashable ResourceDataSyncItem where
  hashWithSalt :: Int -> ResourceDataSyncItem -> Int
hashWithSalt Int
_salt ResourceDataSyncItem' {Maybe Text
Maybe POSIX
Maybe LastResourceDataSyncStatus
Maybe ResourceDataSyncS3Destination
Maybe ResourceDataSyncSourceWithState
syncType :: Maybe Text
syncSource :: Maybe ResourceDataSyncSourceWithState
syncName :: Maybe Text
syncLastModifiedTime :: Maybe POSIX
syncCreatedTime :: Maybe POSIX
s3Destination :: Maybe ResourceDataSyncS3Destination
lastSyncTime :: Maybe POSIX
lastSyncStatusMessage :: Maybe Text
lastSuccessfulSyncTime :: Maybe POSIX
lastStatus :: Maybe LastResourceDataSyncStatus
$sel:syncType:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe Text
$sel:syncSource:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe ResourceDataSyncSourceWithState
$sel:syncName:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe Text
$sel:syncLastModifiedTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
$sel:syncCreatedTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
$sel:s3Destination:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe ResourceDataSyncS3Destination
$sel:lastSyncTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
$sel:lastSyncStatusMessage:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe Text
$sel:lastSuccessfulSyncTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
$sel:lastStatus:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe LastResourceDataSyncStatus
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LastResourceDataSyncStatus
lastStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastSuccessfulSyncTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastSyncStatusMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastSyncTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceDataSyncS3Destination
s3Destination
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
syncCreatedTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
syncLastModifiedTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
syncName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceDataSyncSourceWithState
syncSource
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
syncType

instance Prelude.NFData ResourceDataSyncItem where
  rnf :: ResourceDataSyncItem -> ()
rnf ResourceDataSyncItem' {Maybe Text
Maybe POSIX
Maybe LastResourceDataSyncStatus
Maybe ResourceDataSyncS3Destination
Maybe ResourceDataSyncSourceWithState
syncType :: Maybe Text
syncSource :: Maybe ResourceDataSyncSourceWithState
syncName :: Maybe Text
syncLastModifiedTime :: Maybe POSIX
syncCreatedTime :: Maybe POSIX
s3Destination :: Maybe ResourceDataSyncS3Destination
lastSyncTime :: Maybe POSIX
lastSyncStatusMessage :: Maybe Text
lastSuccessfulSyncTime :: Maybe POSIX
lastStatus :: Maybe LastResourceDataSyncStatus
$sel:syncType:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe Text
$sel:syncSource:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe ResourceDataSyncSourceWithState
$sel:syncName:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe Text
$sel:syncLastModifiedTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
$sel:syncCreatedTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
$sel:s3Destination:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe ResourceDataSyncS3Destination
$sel:lastSyncTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
$sel:lastSyncStatusMessage:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe Text
$sel:lastSuccessfulSyncTime:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe POSIX
$sel:lastStatus:ResourceDataSyncItem' :: ResourceDataSyncItem -> Maybe LastResourceDataSyncStatus
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe LastResourceDataSyncStatus
lastStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastSuccessfulSyncTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastSyncStatusMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastSyncTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceDataSyncS3Destination
s3Destination
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
syncCreatedTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
syncLastModifiedTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
syncName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceDataSyncSourceWithState
syncSource
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
syncType