{-# 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.AuditManager.Types.ControlMappingSource
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.AuditManager.Types.ControlMappingSource where

import Amazonka.AuditManager.Types.SourceFrequency
import Amazonka.AuditManager.Types.SourceKeyword
import Amazonka.AuditManager.Types.SourceSetUpOption
import Amazonka.AuditManager.Types.SourceType
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | The data source that determines from where Audit Manager collects
-- evidence for the control.
--
-- /See:/ 'newControlMappingSource' smart constructor.
data ControlMappingSource = ControlMappingSource'
  { -- | The name of the specified source.
    ControlMappingSource -> Maybe Text
sourceName :: Prelude.Maybe Prelude.Text,
    -- | Specifies one of the five types of data sources for evidence collection.
    ControlMappingSource -> Maybe SourceType
sourceType :: Prelude.Maybe SourceType,
    -- | The instructions for troubleshooting the specified control.
    ControlMappingSource -> Maybe Text
troubleshootingText :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the specified source.
    ControlMappingSource -> Maybe Text
sourceId :: Prelude.Maybe Prelude.Text,
    -- | The description of the specified source.
    ControlMappingSource -> Maybe Text
sourceDescription :: Prelude.Maybe Prelude.Text,
    -- | The frequency of evidence collection for the specified control mapping
    -- source.
    ControlMappingSource -> Maybe SourceFrequency
sourceFrequency :: Prelude.Maybe SourceFrequency,
    ControlMappingSource -> Maybe SourceKeyword
sourceKeyword :: Prelude.Maybe SourceKeyword,
    -- | The setup option for the data source, which reflects if the evidence
    -- collection is automated or manual.
    ControlMappingSource -> Maybe SourceSetUpOption
sourceSetUpOption :: Prelude.Maybe SourceSetUpOption
  }
  deriving (ControlMappingSource -> ControlMappingSource -> Bool
(ControlMappingSource -> ControlMappingSource -> Bool)
-> (ControlMappingSource -> ControlMappingSource -> Bool)
-> Eq ControlMappingSource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ControlMappingSource -> ControlMappingSource -> Bool
$c/= :: ControlMappingSource -> ControlMappingSource -> Bool
== :: ControlMappingSource -> ControlMappingSource -> Bool
$c== :: ControlMappingSource -> ControlMappingSource -> Bool
Prelude.Eq, ReadPrec [ControlMappingSource]
ReadPrec ControlMappingSource
Int -> ReadS ControlMappingSource
ReadS [ControlMappingSource]
(Int -> ReadS ControlMappingSource)
-> ReadS [ControlMappingSource]
-> ReadPrec ControlMappingSource
-> ReadPrec [ControlMappingSource]
-> Read ControlMappingSource
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ControlMappingSource]
$creadListPrec :: ReadPrec [ControlMappingSource]
readPrec :: ReadPrec ControlMappingSource
$creadPrec :: ReadPrec ControlMappingSource
readList :: ReadS [ControlMappingSource]
$creadList :: ReadS [ControlMappingSource]
readsPrec :: Int -> ReadS ControlMappingSource
$creadsPrec :: Int -> ReadS ControlMappingSource
Prelude.Read, Int -> ControlMappingSource -> ShowS
[ControlMappingSource] -> ShowS
ControlMappingSource -> String
(Int -> ControlMappingSource -> ShowS)
-> (ControlMappingSource -> String)
-> ([ControlMappingSource] -> ShowS)
-> Show ControlMappingSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ControlMappingSource] -> ShowS
$cshowList :: [ControlMappingSource] -> ShowS
show :: ControlMappingSource -> String
$cshow :: ControlMappingSource -> String
showsPrec :: Int -> ControlMappingSource -> ShowS
$cshowsPrec :: Int -> ControlMappingSource -> ShowS
Prelude.Show, (forall x. ControlMappingSource -> Rep ControlMappingSource x)
-> (forall x. Rep ControlMappingSource x -> ControlMappingSource)
-> Generic ControlMappingSource
forall x. Rep ControlMappingSource x -> ControlMappingSource
forall x. ControlMappingSource -> Rep ControlMappingSource x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ControlMappingSource x -> ControlMappingSource
$cfrom :: forall x. ControlMappingSource -> Rep ControlMappingSource x
Prelude.Generic)

-- |
-- Create a value of 'ControlMappingSource' 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:
--
-- 'sourceName', 'controlMappingSource_sourceName' - The name of the specified source.
--
-- 'sourceType', 'controlMappingSource_sourceType' - Specifies one of the five types of data sources for evidence collection.
--
-- 'troubleshootingText', 'controlMappingSource_troubleshootingText' - The instructions for troubleshooting the specified control.
--
-- 'sourceId', 'controlMappingSource_sourceId' - The unique identifier for the specified source.
--
-- 'sourceDescription', 'controlMappingSource_sourceDescription' - The description of the specified source.
--
-- 'sourceFrequency', 'controlMappingSource_sourceFrequency' - The frequency of evidence collection for the specified control mapping
-- source.
--
-- 'sourceKeyword', 'controlMappingSource_sourceKeyword' - Undocumented member.
--
-- 'sourceSetUpOption', 'controlMappingSource_sourceSetUpOption' - The setup option for the data source, which reflects if the evidence
-- collection is automated or manual.
newControlMappingSource ::
  ControlMappingSource
newControlMappingSource :: ControlMappingSource
newControlMappingSource =
  ControlMappingSource' :: Maybe Text
-> Maybe SourceType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe SourceFrequency
-> Maybe SourceKeyword
-> Maybe SourceSetUpOption
-> ControlMappingSource
ControlMappingSource'
    { $sel:sourceName:ControlMappingSource' :: Maybe Text
sourceName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sourceType:ControlMappingSource' :: Maybe SourceType
sourceType = Maybe SourceType
forall a. Maybe a
Prelude.Nothing,
      $sel:troubleshootingText:ControlMappingSource' :: Maybe Text
troubleshootingText = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sourceId:ControlMappingSource' :: Maybe Text
sourceId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sourceDescription:ControlMappingSource' :: Maybe Text
sourceDescription = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sourceFrequency:ControlMappingSource' :: Maybe SourceFrequency
sourceFrequency = Maybe SourceFrequency
forall a. Maybe a
Prelude.Nothing,
      $sel:sourceKeyword:ControlMappingSource' :: Maybe SourceKeyword
sourceKeyword = Maybe SourceKeyword
forall a. Maybe a
Prelude.Nothing,
      $sel:sourceSetUpOption:ControlMappingSource' :: Maybe SourceSetUpOption
sourceSetUpOption = Maybe SourceSetUpOption
forall a. Maybe a
Prelude.Nothing
    }

-- | The name of the specified source.
controlMappingSource_sourceName :: Lens.Lens' ControlMappingSource (Prelude.Maybe Prelude.Text)
controlMappingSource_sourceName :: (Maybe Text -> f (Maybe Text))
-> ControlMappingSource -> f ControlMappingSource
controlMappingSource_sourceName = (ControlMappingSource -> Maybe Text)
-> (ControlMappingSource -> Maybe Text -> ControlMappingSource)
-> Lens
     ControlMappingSource ControlMappingSource (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ControlMappingSource' {Maybe Text
sourceName :: Maybe Text
$sel:sourceName:ControlMappingSource' :: ControlMappingSource -> Maybe Text
sourceName} -> Maybe Text
sourceName) (\s :: ControlMappingSource
s@ControlMappingSource' {} Maybe Text
a -> ControlMappingSource
s {$sel:sourceName:ControlMappingSource' :: Maybe Text
sourceName = Maybe Text
a} :: ControlMappingSource)

-- | Specifies one of the five types of data sources for evidence collection.
controlMappingSource_sourceType :: Lens.Lens' ControlMappingSource (Prelude.Maybe SourceType)
controlMappingSource_sourceType :: (Maybe SourceType -> f (Maybe SourceType))
-> ControlMappingSource -> f ControlMappingSource
controlMappingSource_sourceType = (ControlMappingSource -> Maybe SourceType)
-> (ControlMappingSource
    -> Maybe SourceType -> ControlMappingSource)
-> Lens
     ControlMappingSource
     ControlMappingSource
     (Maybe SourceType)
     (Maybe SourceType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ControlMappingSource' {Maybe SourceType
sourceType :: Maybe SourceType
$sel:sourceType:ControlMappingSource' :: ControlMappingSource -> Maybe SourceType
sourceType} -> Maybe SourceType
sourceType) (\s :: ControlMappingSource
s@ControlMappingSource' {} Maybe SourceType
a -> ControlMappingSource
s {$sel:sourceType:ControlMappingSource' :: Maybe SourceType
sourceType = Maybe SourceType
a} :: ControlMappingSource)

-- | The instructions for troubleshooting the specified control.
controlMappingSource_troubleshootingText :: Lens.Lens' ControlMappingSource (Prelude.Maybe Prelude.Text)
controlMappingSource_troubleshootingText :: (Maybe Text -> f (Maybe Text))
-> ControlMappingSource -> f ControlMappingSource
controlMappingSource_troubleshootingText = (ControlMappingSource -> Maybe Text)
-> (ControlMappingSource -> Maybe Text -> ControlMappingSource)
-> Lens
     ControlMappingSource ControlMappingSource (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ControlMappingSource' {Maybe Text
troubleshootingText :: Maybe Text
$sel:troubleshootingText:ControlMappingSource' :: ControlMappingSource -> Maybe Text
troubleshootingText} -> Maybe Text
troubleshootingText) (\s :: ControlMappingSource
s@ControlMappingSource' {} Maybe Text
a -> ControlMappingSource
s {$sel:troubleshootingText:ControlMappingSource' :: Maybe Text
troubleshootingText = Maybe Text
a} :: ControlMappingSource)

-- | The unique identifier for the specified source.
controlMappingSource_sourceId :: Lens.Lens' ControlMappingSource (Prelude.Maybe Prelude.Text)
controlMappingSource_sourceId :: (Maybe Text -> f (Maybe Text))
-> ControlMappingSource -> f ControlMappingSource
controlMappingSource_sourceId = (ControlMappingSource -> Maybe Text)
-> (ControlMappingSource -> Maybe Text -> ControlMappingSource)
-> Lens
     ControlMappingSource ControlMappingSource (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ControlMappingSource' {Maybe Text
sourceId :: Maybe Text
$sel:sourceId:ControlMappingSource' :: ControlMappingSource -> Maybe Text
sourceId} -> Maybe Text
sourceId) (\s :: ControlMappingSource
s@ControlMappingSource' {} Maybe Text
a -> ControlMappingSource
s {$sel:sourceId:ControlMappingSource' :: Maybe Text
sourceId = Maybe Text
a} :: ControlMappingSource)

-- | The description of the specified source.
controlMappingSource_sourceDescription :: Lens.Lens' ControlMappingSource (Prelude.Maybe Prelude.Text)
controlMappingSource_sourceDescription :: (Maybe Text -> f (Maybe Text))
-> ControlMappingSource -> f ControlMappingSource
controlMappingSource_sourceDescription = (ControlMappingSource -> Maybe Text)
-> (ControlMappingSource -> Maybe Text -> ControlMappingSource)
-> Lens
     ControlMappingSource ControlMappingSource (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ControlMappingSource' {Maybe Text
sourceDescription :: Maybe Text
$sel:sourceDescription:ControlMappingSource' :: ControlMappingSource -> Maybe Text
sourceDescription} -> Maybe Text
sourceDescription) (\s :: ControlMappingSource
s@ControlMappingSource' {} Maybe Text
a -> ControlMappingSource
s {$sel:sourceDescription:ControlMappingSource' :: Maybe Text
sourceDescription = Maybe Text
a} :: ControlMappingSource)

-- | The frequency of evidence collection for the specified control mapping
-- source.
controlMappingSource_sourceFrequency :: Lens.Lens' ControlMappingSource (Prelude.Maybe SourceFrequency)
controlMappingSource_sourceFrequency :: (Maybe SourceFrequency -> f (Maybe SourceFrequency))
-> ControlMappingSource -> f ControlMappingSource
controlMappingSource_sourceFrequency = (ControlMappingSource -> Maybe SourceFrequency)
-> (ControlMappingSource
    -> Maybe SourceFrequency -> ControlMappingSource)
-> Lens
     ControlMappingSource
     ControlMappingSource
     (Maybe SourceFrequency)
     (Maybe SourceFrequency)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ControlMappingSource' {Maybe SourceFrequency
sourceFrequency :: Maybe SourceFrequency
$sel:sourceFrequency:ControlMappingSource' :: ControlMappingSource -> Maybe SourceFrequency
sourceFrequency} -> Maybe SourceFrequency
sourceFrequency) (\s :: ControlMappingSource
s@ControlMappingSource' {} Maybe SourceFrequency
a -> ControlMappingSource
s {$sel:sourceFrequency:ControlMappingSource' :: Maybe SourceFrequency
sourceFrequency = Maybe SourceFrequency
a} :: ControlMappingSource)

-- | Undocumented member.
controlMappingSource_sourceKeyword :: Lens.Lens' ControlMappingSource (Prelude.Maybe SourceKeyword)
controlMappingSource_sourceKeyword :: (Maybe SourceKeyword -> f (Maybe SourceKeyword))
-> ControlMappingSource -> f ControlMappingSource
controlMappingSource_sourceKeyword = (ControlMappingSource -> Maybe SourceKeyword)
-> (ControlMappingSource
    -> Maybe SourceKeyword -> ControlMappingSource)
-> Lens
     ControlMappingSource
     ControlMappingSource
     (Maybe SourceKeyword)
     (Maybe SourceKeyword)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ControlMappingSource' {Maybe SourceKeyword
sourceKeyword :: Maybe SourceKeyword
$sel:sourceKeyword:ControlMappingSource' :: ControlMappingSource -> Maybe SourceKeyword
sourceKeyword} -> Maybe SourceKeyword
sourceKeyword) (\s :: ControlMappingSource
s@ControlMappingSource' {} Maybe SourceKeyword
a -> ControlMappingSource
s {$sel:sourceKeyword:ControlMappingSource' :: Maybe SourceKeyword
sourceKeyword = Maybe SourceKeyword
a} :: ControlMappingSource)

-- | The setup option for the data source, which reflects if the evidence
-- collection is automated or manual.
controlMappingSource_sourceSetUpOption :: Lens.Lens' ControlMappingSource (Prelude.Maybe SourceSetUpOption)
controlMappingSource_sourceSetUpOption :: (Maybe SourceSetUpOption -> f (Maybe SourceSetUpOption))
-> ControlMappingSource -> f ControlMappingSource
controlMappingSource_sourceSetUpOption = (ControlMappingSource -> Maybe SourceSetUpOption)
-> (ControlMappingSource
    -> Maybe SourceSetUpOption -> ControlMappingSource)
-> Lens
     ControlMappingSource
     ControlMappingSource
     (Maybe SourceSetUpOption)
     (Maybe SourceSetUpOption)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ControlMappingSource' {Maybe SourceSetUpOption
sourceSetUpOption :: Maybe SourceSetUpOption
$sel:sourceSetUpOption:ControlMappingSource' :: ControlMappingSource -> Maybe SourceSetUpOption
sourceSetUpOption} -> Maybe SourceSetUpOption
sourceSetUpOption) (\s :: ControlMappingSource
s@ControlMappingSource' {} Maybe SourceSetUpOption
a -> ControlMappingSource
s {$sel:sourceSetUpOption:ControlMappingSource' :: Maybe SourceSetUpOption
sourceSetUpOption = Maybe SourceSetUpOption
a} :: ControlMappingSource)

instance Core.FromJSON ControlMappingSource where
  parseJSON :: Value -> Parser ControlMappingSource
parseJSON =
    String
-> (Object -> Parser ControlMappingSource)
-> Value
-> Parser ControlMappingSource
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"ControlMappingSource"
      ( \Object
x ->
          Maybe Text
-> Maybe SourceType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe SourceFrequency
-> Maybe SourceKeyword
-> Maybe SourceSetUpOption
-> ControlMappingSource
ControlMappingSource'
            (Maybe Text
 -> Maybe SourceType
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe SourceFrequency
 -> Maybe SourceKeyword
 -> Maybe SourceSetUpOption
 -> ControlMappingSource)
-> Parser (Maybe Text)
-> Parser
     (Maybe SourceType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe SourceFrequency
      -> Maybe SourceKeyword
      -> Maybe SourceSetUpOption
      -> ControlMappingSource)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"sourceName")
            Parser
  (Maybe SourceType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe SourceFrequency
   -> Maybe SourceKeyword
   -> Maybe SourceSetUpOption
   -> ControlMappingSource)
-> Parser (Maybe SourceType)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe SourceFrequency
      -> Maybe SourceKeyword
      -> Maybe SourceSetUpOption
      -> ControlMappingSource)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SourceType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"sourceType")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe SourceFrequency
   -> Maybe SourceKeyword
   -> Maybe SourceSetUpOption
   -> ControlMappingSource)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe SourceFrequency
      -> Maybe SourceKeyword
      -> Maybe SourceSetUpOption
      -> ControlMappingSource)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"troubleshootingText")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe SourceFrequency
   -> Maybe SourceKeyword
   -> Maybe SourceSetUpOption
   -> ControlMappingSource)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe SourceFrequency
      -> Maybe SourceKeyword
      -> Maybe SourceSetUpOption
      -> ControlMappingSource)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"sourceId")
            Parser
  (Maybe Text
   -> Maybe SourceFrequency
   -> Maybe SourceKeyword
   -> Maybe SourceSetUpOption
   -> ControlMappingSource)
-> Parser (Maybe Text)
-> Parser
     (Maybe SourceFrequency
      -> Maybe SourceKeyword
      -> Maybe SourceSetUpOption
      -> ControlMappingSource)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"sourceDescription")
            Parser
  (Maybe SourceFrequency
   -> Maybe SourceKeyword
   -> Maybe SourceSetUpOption
   -> ControlMappingSource)
-> Parser (Maybe SourceFrequency)
-> Parser
     (Maybe SourceKeyword
      -> Maybe SourceSetUpOption -> ControlMappingSource)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SourceFrequency)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"sourceFrequency")
            Parser
  (Maybe SourceKeyword
   -> Maybe SourceSetUpOption -> ControlMappingSource)
-> Parser (Maybe SourceKeyword)
-> Parser (Maybe SourceSetUpOption -> ControlMappingSource)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SourceKeyword)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"sourceKeyword")
            Parser (Maybe SourceSetUpOption -> ControlMappingSource)
-> Parser (Maybe SourceSetUpOption) -> Parser ControlMappingSource
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SourceSetUpOption)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"sourceSetUpOption")
      )

instance Prelude.Hashable ControlMappingSource

instance Prelude.NFData ControlMappingSource

instance Core.ToJSON ControlMappingSource where
  toJSON :: ControlMappingSource -> Value
toJSON ControlMappingSource' {Maybe Text
Maybe SourceFrequency
Maybe SourceKeyword
Maybe SourceSetUpOption
Maybe SourceType
sourceSetUpOption :: Maybe SourceSetUpOption
sourceKeyword :: Maybe SourceKeyword
sourceFrequency :: Maybe SourceFrequency
sourceDescription :: Maybe Text
sourceId :: Maybe Text
troubleshootingText :: Maybe Text
sourceType :: Maybe SourceType
sourceName :: Maybe Text
$sel:sourceSetUpOption:ControlMappingSource' :: ControlMappingSource -> Maybe SourceSetUpOption
$sel:sourceKeyword:ControlMappingSource' :: ControlMappingSource -> Maybe SourceKeyword
$sel:sourceFrequency:ControlMappingSource' :: ControlMappingSource -> Maybe SourceFrequency
$sel:sourceDescription:ControlMappingSource' :: ControlMappingSource -> Maybe Text
$sel:sourceId:ControlMappingSource' :: ControlMappingSource -> Maybe Text
$sel:troubleshootingText:ControlMappingSource' :: ControlMappingSource -> Maybe Text
$sel:sourceType:ControlMappingSource' :: ControlMappingSource -> Maybe SourceType
$sel:sourceName:ControlMappingSource' :: ControlMappingSource -> Maybe Text
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"sourceName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
sourceName,
            (Text
"sourceType" Text -> SourceType -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (SourceType -> Pair) -> Maybe SourceType -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SourceType
sourceType,
            (Text
"troubleshootingText" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
troubleshootingText,
            (Text
"sourceId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
sourceId,
            (Text
"sourceDescription" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
sourceDescription,
            (Text
"sourceFrequency" Text -> SourceFrequency -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (SourceFrequency -> Pair) -> Maybe SourceFrequency -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SourceFrequency
sourceFrequency,
            (Text
"sourceKeyword" Text -> SourceKeyword -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (SourceKeyword -> Pair) -> Maybe SourceKeyword -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SourceKeyword
sourceKeyword,
            (Text
"sourceSetUpOption" Text -> SourceSetUpOption -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (SourceSetUpOption -> Pair)
-> Maybe SourceSetUpOption -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SourceSetUpOption
sourceSetUpOption
          ]
      )