{-# 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.SageMaker.CreateDataQualityJobDefinition
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a definition for a job that monitors data quality and drift. For
-- information about model monitor, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html Amazon SageMaker Model Monitor>.
module Amazonka.SageMaker.CreateDataQualityJobDefinition
  ( -- * Creating a Request
    CreateDataQualityJobDefinition (..),
    newCreateDataQualityJobDefinition,

    -- * Request Lenses
    createDataQualityJobDefinition_dataQualityBaselineConfig,
    createDataQualityJobDefinition_networkConfig,
    createDataQualityJobDefinition_stoppingCondition,
    createDataQualityJobDefinition_tags,
    createDataQualityJobDefinition_jobDefinitionName,
    createDataQualityJobDefinition_dataQualityAppSpecification,
    createDataQualityJobDefinition_dataQualityJobInput,
    createDataQualityJobDefinition_dataQualityJobOutputConfig,
    createDataQualityJobDefinition_jobResources,
    createDataQualityJobDefinition_roleArn,

    -- * Destructuring the Response
    CreateDataQualityJobDefinitionResponse (..),
    newCreateDataQualityJobDefinitionResponse,

    -- * Response Lenses
    createDataQualityJobDefinitionResponse_httpStatus,
    createDataQualityJobDefinitionResponse_jobDefinitionArn,
  )
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SageMaker.Types

-- | /See:/ 'newCreateDataQualityJobDefinition' smart constructor.
data CreateDataQualityJobDefinition = CreateDataQualityJobDefinition'
  { -- | Configures the constraints and baselines for the monitoring job.
    CreateDataQualityJobDefinition -> Maybe DataQualityBaselineConfig
dataQualityBaselineConfig :: Prelude.Maybe DataQualityBaselineConfig,
    -- | Specifies networking configuration for the monitoring job.
    CreateDataQualityJobDefinition -> Maybe MonitoringNetworkConfig
networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
    CreateDataQualityJobDefinition -> Maybe MonitoringStoppingCondition
stoppingCondition :: Prelude.Maybe MonitoringStoppingCondition,
    -- | (Optional) An array of key-value pairs. For more information, see
    -- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
    -- in the /Amazon Web Services Billing and Cost Management User Guide/.
    CreateDataQualityJobDefinition -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The name for the monitoring job definition.
    CreateDataQualityJobDefinition -> Text
jobDefinitionName :: Prelude.Text,
    -- | Specifies the container that runs the monitoring job.
    CreateDataQualityJobDefinition -> DataQualityAppSpecification
dataQualityAppSpecification :: DataQualityAppSpecification,
    -- | A list of inputs for the monitoring job. Currently endpoints are
    -- supported as monitoring inputs.
    CreateDataQualityJobDefinition -> DataQualityJobInput
dataQualityJobInput :: DataQualityJobInput,
    CreateDataQualityJobDefinition -> MonitoringOutputConfig
dataQualityJobOutputConfig :: MonitoringOutputConfig,
    CreateDataQualityJobDefinition -> MonitoringResources
jobResources :: MonitoringResources,
    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
    -- assume to perform tasks on your behalf.
    CreateDataQualityJobDefinition -> Text
roleArn :: Prelude.Text
  }
  deriving (CreateDataQualityJobDefinition
-> CreateDataQualityJobDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateDataQualityJobDefinition
-> CreateDataQualityJobDefinition -> Bool
$c/= :: CreateDataQualityJobDefinition
-> CreateDataQualityJobDefinition -> Bool
== :: CreateDataQualityJobDefinition
-> CreateDataQualityJobDefinition -> Bool
$c== :: CreateDataQualityJobDefinition
-> CreateDataQualityJobDefinition -> Bool
Prelude.Eq, ReadPrec [CreateDataQualityJobDefinition]
ReadPrec CreateDataQualityJobDefinition
Int -> ReadS CreateDataQualityJobDefinition
ReadS [CreateDataQualityJobDefinition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateDataQualityJobDefinition]
$creadListPrec :: ReadPrec [CreateDataQualityJobDefinition]
readPrec :: ReadPrec CreateDataQualityJobDefinition
$creadPrec :: ReadPrec CreateDataQualityJobDefinition
readList :: ReadS [CreateDataQualityJobDefinition]
$creadList :: ReadS [CreateDataQualityJobDefinition]
readsPrec :: Int -> ReadS CreateDataQualityJobDefinition
$creadsPrec :: Int -> ReadS CreateDataQualityJobDefinition
Prelude.Read, Int -> CreateDataQualityJobDefinition -> ShowS
[CreateDataQualityJobDefinition] -> ShowS
CreateDataQualityJobDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateDataQualityJobDefinition] -> ShowS
$cshowList :: [CreateDataQualityJobDefinition] -> ShowS
show :: CreateDataQualityJobDefinition -> String
$cshow :: CreateDataQualityJobDefinition -> String
showsPrec :: Int -> CreateDataQualityJobDefinition -> ShowS
$cshowsPrec :: Int -> CreateDataQualityJobDefinition -> ShowS
Prelude.Show, forall x.
Rep CreateDataQualityJobDefinition x
-> CreateDataQualityJobDefinition
forall x.
CreateDataQualityJobDefinition
-> Rep CreateDataQualityJobDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateDataQualityJobDefinition x
-> CreateDataQualityJobDefinition
$cfrom :: forall x.
CreateDataQualityJobDefinition
-> Rep CreateDataQualityJobDefinition x
Prelude.Generic)

-- |
-- Create a value of 'CreateDataQualityJobDefinition' 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:
--
-- 'dataQualityBaselineConfig', 'createDataQualityJobDefinition_dataQualityBaselineConfig' - Configures the constraints and baselines for the monitoring job.
--
-- 'networkConfig', 'createDataQualityJobDefinition_networkConfig' - Specifies networking configuration for the monitoring job.
--
-- 'stoppingCondition', 'createDataQualityJobDefinition_stoppingCondition' - Undocumented member.
--
-- 'tags', 'createDataQualityJobDefinition_tags' - (Optional) An array of key-value pairs. For more information, see
-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
-- in the /Amazon Web Services Billing and Cost Management User Guide/.
--
-- 'jobDefinitionName', 'createDataQualityJobDefinition_jobDefinitionName' - The name for the monitoring job definition.
--
-- 'dataQualityAppSpecification', 'createDataQualityJobDefinition_dataQualityAppSpecification' - Specifies the container that runs the monitoring job.
--
-- 'dataQualityJobInput', 'createDataQualityJobDefinition_dataQualityJobInput' - A list of inputs for the monitoring job. Currently endpoints are
-- supported as monitoring inputs.
--
-- 'dataQualityJobOutputConfig', 'createDataQualityJobDefinition_dataQualityJobOutputConfig' - Undocumented member.
--
-- 'jobResources', 'createDataQualityJobDefinition_jobResources' - Undocumented member.
--
-- 'roleArn', 'createDataQualityJobDefinition_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
-- assume to perform tasks on your behalf.
newCreateDataQualityJobDefinition ::
  -- | 'jobDefinitionName'
  Prelude.Text ->
  -- | 'dataQualityAppSpecification'
  DataQualityAppSpecification ->
  -- | 'dataQualityJobInput'
  DataQualityJobInput ->
  -- | 'dataQualityJobOutputConfig'
  MonitoringOutputConfig ->
  -- | 'jobResources'
  MonitoringResources ->
  -- | 'roleArn'
  Prelude.Text ->
  CreateDataQualityJobDefinition
newCreateDataQualityJobDefinition :: Text
-> DataQualityAppSpecification
-> DataQualityJobInput
-> MonitoringOutputConfig
-> MonitoringResources
-> Text
-> CreateDataQualityJobDefinition
newCreateDataQualityJobDefinition
  Text
pJobDefinitionName_
  DataQualityAppSpecification
pDataQualityAppSpecification_
  DataQualityJobInput
pDataQualityJobInput_
  MonitoringOutputConfig
pDataQualityJobOutputConfig_
  MonitoringResources
pJobResources_
  Text
pRoleArn_ =
    CreateDataQualityJobDefinition'
      { $sel:dataQualityBaselineConfig:CreateDataQualityJobDefinition' :: Maybe DataQualityBaselineConfig
dataQualityBaselineConfig =
          forall a. Maybe a
Prelude.Nothing,
        $sel:networkConfig:CreateDataQualityJobDefinition' :: Maybe MonitoringNetworkConfig
networkConfig = forall a. Maybe a
Prelude.Nothing,
        $sel:stoppingCondition:CreateDataQualityJobDefinition' :: Maybe MonitoringStoppingCondition
stoppingCondition = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateDataQualityJobDefinition' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:jobDefinitionName:CreateDataQualityJobDefinition' :: Text
jobDefinitionName = Text
pJobDefinitionName_,
        $sel:dataQualityAppSpecification:CreateDataQualityJobDefinition' :: DataQualityAppSpecification
dataQualityAppSpecification =
          DataQualityAppSpecification
pDataQualityAppSpecification_,
        $sel:dataQualityJobInput:CreateDataQualityJobDefinition' :: DataQualityJobInput
dataQualityJobInput = DataQualityJobInput
pDataQualityJobInput_,
        $sel:dataQualityJobOutputConfig:CreateDataQualityJobDefinition' :: MonitoringOutputConfig
dataQualityJobOutputConfig =
          MonitoringOutputConfig
pDataQualityJobOutputConfig_,
        $sel:jobResources:CreateDataQualityJobDefinition' :: MonitoringResources
jobResources = MonitoringResources
pJobResources_,
        $sel:roleArn:CreateDataQualityJobDefinition' :: Text
roleArn = Text
pRoleArn_
      }

-- | Configures the constraints and baselines for the monitoring job.
createDataQualityJobDefinition_dataQualityBaselineConfig :: Lens.Lens' CreateDataQualityJobDefinition (Prelude.Maybe DataQualityBaselineConfig)
createDataQualityJobDefinition_dataQualityBaselineConfig :: Lens'
  CreateDataQualityJobDefinition (Maybe DataQualityBaselineConfig)
createDataQualityJobDefinition_dataQualityBaselineConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {Maybe DataQualityBaselineConfig
dataQualityBaselineConfig :: Maybe DataQualityBaselineConfig
$sel:dataQualityBaselineConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe DataQualityBaselineConfig
dataQualityBaselineConfig} -> Maybe DataQualityBaselineConfig
dataQualityBaselineConfig) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} Maybe DataQualityBaselineConfig
a -> CreateDataQualityJobDefinition
s {$sel:dataQualityBaselineConfig:CreateDataQualityJobDefinition' :: Maybe DataQualityBaselineConfig
dataQualityBaselineConfig = Maybe DataQualityBaselineConfig
a} :: CreateDataQualityJobDefinition)

-- | Specifies networking configuration for the monitoring job.
createDataQualityJobDefinition_networkConfig :: Lens.Lens' CreateDataQualityJobDefinition (Prelude.Maybe MonitoringNetworkConfig)
createDataQualityJobDefinition_networkConfig :: Lens'
  CreateDataQualityJobDefinition (Maybe MonitoringNetworkConfig)
createDataQualityJobDefinition_networkConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {Maybe MonitoringNetworkConfig
networkConfig :: Maybe MonitoringNetworkConfig
$sel:networkConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe MonitoringNetworkConfig
networkConfig} -> Maybe MonitoringNetworkConfig
networkConfig) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} Maybe MonitoringNetworkConfig
a -> CreateDataQualityJobDefinition
s {$sel:networkConfig:CreateDataQualityJobDefinition' :: Maybe MonitoringNetworkConfig
networkConfig = Maybe MonitoringNetworkConfig
a} :: CreateDataQualityJobDefinition)

-- | Undocumented member.
createDataQualityJobDefinition_stoppingCondition :: Lens.Lens' CreateDataQualityJobDefinition (Prelude.Maybe MonitoringStoppingCondition)
createDataQualityJobDefinition_stoppingCondition :: Lens'
  CreateDataQualityJobDefinition (Maybe MonitoringStoppingCondition)
createDataQualityJobDefinition_stoppingCondition = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {Maybe MonitoringStoppingCondition
stoppingCondition :: Maybe MonitoringStoppingCondition
$sel:stoppingCondition:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe MonitoringStoppingCondition
stoppingCondition} -> Maybe MonitoringStoppingCondition
stoppingCondition) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} Maybe MonitoringStoppingCondition
a -> CreateDataQualityJobDefinition
s {$sel:stoppingCondition:CreateDataQualityJobDefinition' :: Maybe MonitoringStoppingCondition
stoppingCondition = Maybe MonitoringStoppingCondition
a} :: CreateDataQualityJobDefinition)

-- | (Optional) An array of key-value pairs. For more information, see
-- <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL Using Cost Allocation Tags>
-- in the /Amazon Web Services Billing and Cost Management User Guide/.
createDataQualityJobDefinition_tags :: Lens.Lens' CreateDataQualityJobDefinition (Prelude.Maybe [Tag])
createDataQualityJobDefinition_tags :: Lens' CreateDataQualityJobDefinition (Maybe [Tag])
createDataQualityJobDefinition_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} Maybe [Tag]
a -> CreateDataQualityJobDefinition
s {$sel:tags:CreateDataQualityJobDefinition' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateDataQualityJobDefinition) 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 name for the monitoring job definition.
createDataQualityJobDefinition_jobDefinitionName :: Lens.Lens' CreateDataQualityJobDefinition Prelude.Text
createDataQualityJobDefinition_jobDefinitionName :: Lens' CreateDataQualityJobDefinition Text
createDataQualityJobDefinition_jobDefinitionName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {Text
jobDefinitionName :: Text
$sel:jobDefinitionName:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Text
jobDefinitionName} -> Text
jobDefinitionName) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} Text
a -> CreateDataQualityJobDefinition
s {$sel:jobDefinitionName:CreateDataQualityJobDefinition' :: Text
jobDefinitionName = Text
a} :: CreateDataQualityJobDefinition)

-- | Specifies the container that runs the monitoring job.
createDataQualityJobDefinition_dataQualityAppSpecification :: Lens.Lens' CreateDataQualityJobDefinition DataQualityAppSpecification
createDataQualityJobDefinition_dataQualityAppSpecification :: Lens' CreateDataQualityJobDefinition DataQualityAppSpecification
createDataQualityJobDefinition_dataQualityAppSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {DataQualityAppSpecification
dataQualityAppSpecification :: DataQualityAppSpecification
$sel:dataQualityAppSpecification:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> DataQualityAppSpecification
dataQualityAppSpecification} -> DataQualityAppSpecification
dataQualityAppSpecification) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} DataQualityAppSpecification
a -> CreateDataQualityJobDefinition
s {$sel:dataQualityAppSpecification:CreateDataQualityJobDefinition' :: DataQualityAppSpecification
dataQualityAppSpecification = DataQualityAppSpecification
a} :: CreateDataQualityJobDefinition)

-- | A list of inputs for the monitoring job. Currently endpoints are
-- supported as monitoring inputs.
createDataQualityJobDefinition_dataQualityJobInput :: Lens.Lens' CreateDataQualityJobDefinition DataQualityJobInput
createDataQualityJobDefinition_dataQualityJobInput :: Lens' CreateDataQualityJobDefinition DataQualityJobInput
createDataQualityJobDefinition_dataQualityJobInput = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {DataQualityJobInput
dataQualityJobInput :: DataQualityJobInput
$sel:dataQualityJobInput:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> DataQualityJobInput
dataQualityJobInput} -> DataQualityJobInput
dataQualityJobInput) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} DataQualityJobInput
a -> CreateDataQualityJobDefinition
s {$sel:dataQualityJobInput:CreateDataQualityJobDefinition' :: DataQualityJobInput
dataQualityJobInput = DataQualityJobInput
a} :: CreateDataQualityJobDefinition)

-- | Undocumented member.
createDataQualityJobDefinition_dataQualityJobOutputConfig :: Lens.Lens' CreateDataQualityJobDefinition MonitoringOutputConfig
createDataQualityJobDefinition_dataQualityJobOutputConfig :: Lens' CreateDataQualityJobDefinition MonitoringOutputConfig
createDataQualityJobDefinition_dataQualityJobOutputConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {MonitoringOutputConfig
dataQualityJobOutputConfig :: MonitoringOutputConfig
$sel:dataQualityJobOutputConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> MonitoringOutputConfig
dataQualityJobOutputConfig} -> MonitoringOutputConfig
dataQualityJobOutputConfig) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} MonitoringOutputConfig
a -> CreateDataQualityJobDefinition
s {$sel:dataQualityJobOutputConfig:CreateDataQualityJobDefinition' :: MonitoringOutputConfig
dataQualityJobOutputConfig = MonitoringOutputConfig
a} :: CreateDataQualityJobDefinition)

-- | Undocumented member.
createDataQualityJobDefinition_jobResources :: Lens.Lens' CreateDataQualityJobDefinition MonitoringResources
createDataQualityJobDefinition_jobResources :: Lens' CreateDataQualityJobDefinition MonitoringResources
createDataQualityJobDefinition_jobResources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {MonitoringResources
jobResources :: MonitoringResources
$sel:jobResources:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> MonitoringResources
jobResources} -> MonitoringResources
jobResources) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} MonitoringResources
a -> CreateDataQualityJobDefinition
s {$sel:jobResources:CreateDataQualityJobDefinition' :: MonitoringResources
jobResources = MonitoringResources
a} :: CreateDataQualityJobDefinition)

-- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
-- assume to perform tasks on your behalf.
createDataQualityJobDefinition_roleArn :: Lens.Lens' CreateDataQualityJobDefinition Prelude.Text
createDataQualityJobDefinition_roleArn :: Lens' CreateDataQualityJobDefinition Text
createDataQualityJobDefinition_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinition' {Text
roleArn :: Text
$sel:roleArn:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Text
roleArn} -> Text
roleArn) (\s :: CreateDataQualityJobDefinition
s@CreateDataQualityJobDefinition' {} Text
a -> CreateDataQualityJobDefinition
s {$sel:roleArn:CreateDataQualityJobDefinition' :: Text
roleArn = Text
a} :: CreateDataQualityJobDefinition)

instance
  Core.AWSRequest
    CreateDataQualityJobDefinition
  where
  type
    AWSResponse CreateDataQualityJobDefinition =
      CreateDataQualityJobDefinitionResponse
  request :: (Service -> Service)
-> CreateDataQualityJobDefinition
-> Request CreateDataQualityJobDefinition
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 CreateDataQualityJobDefinition
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse CreateDataQualityJobDefinition)))
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 ->
          Int -> Text -> CreateDataQualityJobDefinitionResponse
CreateDataQualityJobDefinitionResponse'
            forall (f :: * -> *) a b. Functor 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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"JobDefinitionArn")
      )

instance
  Prelude.Hashable
    CreateDataQualityJobDefinition
  where
  hashWithSalt :: Int -> CreateDataQualityJobDefinition -> Int
hashWithSalt
    Int
_salt
    CreateDataQualityJobDefinition' {Maybe [Tag]
Maybe DataQualityBaselineConfig
Maybe MonitoringStoppingCondition
Maybe MonitoringNetworkConfig
Text
DataQualityAppSpecification
MonitoringResources
DataQualityJobInput
MonitoringOutputConfig
roleArn :: Text
jobResources :: MonitoringResources
dataQualityJobOutputConfig :: MonitoringOutputConfig
dataQualityJobInput :: DataQualityJobInput
dataQualityAppSpecification :: DataQualityAppSpecification
jobDefinitionName :: Text
tags :: Maybe [Tag]
stoppingCondition :: Maybe MonitoringStoppingCondition
networkConfig :: Maybe MonitoringNetworkConfig
dataQualityBaselineConfig :: Maybe DataQualityBaselineConfig
$sel:roleArn:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Text
$sel:jobResources:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> MonitoringResources
$sel:dataQualityJobOutputConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> MonitoringOutputConfig
$sel:dataQualityJobInput:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> DataQualityJobInput
$sel:dataQualityAppSpecification:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> DataQualityAppSpecification
$sel:jobDefinitionName:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Text
$sel:tags:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe [Tag]
$sel:stoppingCondition:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe MonitoringStoppingCondition
$sel:networkConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe MonitoringNetworkConfig
$sel:dataQualityBaselineConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe DataQualityBaselineConfig
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataQualityBaselineConfig
dataQualityBaselineConfig
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MonitoringNetworkConfig
networkConfig
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MonitoringStoppingCondition
stoppingCondition
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
jobDefinitionName
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` DataQualityAppSpecification
dataQualityAppSpecification
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` DataQualityJobInput
dataQualityJobInput
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MonitoringOutputConfig
dataQualityJobOutputConfig
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MonitoringResources
jobResources
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
roleArn

instance
  Prelude.NFData
    CreateDataQualityJobDefinition
  where
  rnf :: CreateDataQualityJobDefinition -> ()
rnf CreateDataQualityJobDefinition' {Maybe [Tag]
Maybe DataQualityBaselineConfig
Maybe MonitoringStoppingCondition
Maybe MonitoringNetworkConfig
Text
DataQualityAppSpecification
MonitoringResources
DataQualityJobInput
MonitoringOutputConfig
roleArn :: Text
jobResources :: MonitoringResources
dataQualityJobOutputConfig :: MonitoringOutputConfig
dataQualityJobInput :: DataQualityJobInput
dataQualityAppSpecification :: DataQualityAppSpecification
jobDefinitionName :: Text
tags :: Maybe [Tag]
stoppingCondition :: Maybe MonitoringStoppingCondition
networkConfig :: Maybe MonitoringNetworkConfig
dataQualityBaselineConfig :: Maybe DataQualityBaselineConfig
$sel:roleArn:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Text
$sel:jobResources:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> MonitoringResources
$sel:dataQualityJobOutputConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> MonitoringOutputConfig
$sel:dataQualityJobInput:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> DataQualityJobInput
$sel:dataQualityAppSpecification:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> DataQualityAppSpecification
$sel:jobDefinitionName:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Text
$sel:tags:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe [Tag]
$sel:stoppingCondition:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe MonitoringStoppingCondition
$sel:networkConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe MonitoringNetworkConfig
$sel:dataQualityBaselineConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe DataQualityBaselineConfig
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DataQualityBaselineConfig
dataQualityBaselineConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MonitoringNetworkConfig
networkConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MonitoringStoppingCondition
stoppingCondition
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
jobDefinitionName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf DataQualityAppSpecification
dataQualityAppSpecification
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf DataQualityJobInput
dataQualityJobInput
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MonitoringOutputConfig
dataQualityJobOutputConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MonitoringResources
jobResources
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
roleArn

instance
  Data.ToHeaders
    CreateDataQualityJobDefinition
  where
  toHeaders :: CreateDataQualityJobDefinition -> 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
"SageMaker.CreateDataQualityJobDefinition" ::
                          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 CreateDataQualityJobDefinition where
  toJSON :: CreateDataQualityJobDefinition -> Value
toJSON CreateDataQualityJobDefinition' {Maybe [Tag]
Maybe DataQualityBaselineConfig
Maybe MonitoringStoppingCondition
Maybe MonitoringNetworkConfig
Text
DataQualityAppSpecification
MonitoringResources
DataQualityJobInput
MonitoringOutputConfig
roleArn :: Text
jobResources :: MonitoringResources
dataQualityJobOutputConfig :: MonitoringOutputConfig
dataQualityJobInput :: DataQualityJobInput
dataQualityAppSpecification :: DataQualityAppSpecification
jobDefinitionName :: Text
tags :: Maybe [Tag]
stoppingCondition :: Maybe MonitoringStoppingCondition
networkConfig :: Maybe MonitoringNetworkConfig
dataQualityBaselineConfig :: Maybe DataQualityBaselineConfig
$sel:roleArn:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Text
$sel:jobResources:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> MonitoringResources
$sel:dataQualityJobOutputConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> MonitoringOutputConfig
$sel:dataQualityJobInput:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> DataQualityJobInput
$sel:dataQualityAppSpecification:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> DataQualityAppSpecification
$sel:jobDefinitionName:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Text
$sel:tags:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe [Tag]
$sel:stoppingCondition:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe MonitoringStoppingCondition
$sel:networkConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe MonitoringNetworkConfig
$sel:dataQualityBaselineConfig:CreateDataQualityJobDefinition' :: CreateDataQualityJobDefinition -> Maybe DataQualityBaselineConfig
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DataQualityBaselineConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DataQualityBaselineConfig
dataQualityBaselineConfig,
            (Key
"NetworkConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MonitoringNetworkConfig
networkConfig,
            (Key
"StoppingCondition" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MonitoringStoppingCondition
stoppingCondition,
            (Key
"Tags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Tag]
tags,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"JobDefinitionName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
jobDefinitionName),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"DataQualityAppSpecification"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= DataQualityAppSpecification
dataQualityAppSpecification
              ),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"DataQualityJobInput" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= DataQualityJobInput
dataQualityJobInput),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"DataQualityJobOutputConfig"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MonitoringOutputConfig
dataQualityJobOutputConfig
              ),
            forall a. a -> Maybe a
Prelude.Just (Key
"JobResources" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MonitoringResources
jobResources),
            forall a. a -> Maybe a
Prelude.Just (Key
"RoleArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
roleArn)
          ]
      )

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

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

-- | /See:/ 'newCreateDataQualityJobDefinitionResponse' smart constructor.
data CreateDataQualityJobDefinitionResponse = CreateDataQualityJobDefinitionResponse'
  { -- | The response's http status code.
    CreateDataQualityJobDefinitionResponse -> Int
httpStatus :: Prelude.Int,
    -- | The Amazon Resource Name (ARN) of the job definition.
    CreateDataQualityJobDefinitionResponse -> Text
jobDefinitionArn :: Prelude.Text
  }
  deriving (CreateDataQualityJobDefinitionResponse
-> CreateDataQualityJobDefinitionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateDataQualityJobDefinitionResponse
-> CreateDataQualityJobDefinitionResponse -> Bool
$c/= :: CreateDataQualityJobDefinitionResponse
-> CreateDataQualityJobDefinitionResponse -> Bool
== :: CreateDataQualityJobDefinitionResponse
-> CreateDataQualityJobDefinitionResponse -> Bool
$c== :: CreateDataQualityJobDefinitionResponse
-> CreateDataQualityJobDefinitionResponse -> Bool
Prelude.Eq, ReadPrec [CreateDataQualityJobDefinitionResponse]
ReadPrec CreateDataQualityJobDefinitionResponse
Int -> ReadS CreateDataQualityJobDefinitionResponse
ReadS [CreateDataQualityJobDefinitionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateDataQualityJobDefinitionResponse]
$creadListPrec :: ReadPrec [CreateDataQualityJobDefinitionResponse]
readPrec :: ReadPrec CreateDataQualityJobDefinitionResponse
$creadPrec :: ReadPrec CreateDataQualityJobDefinitionResponse
readList :: ReadS [CreateDataQualityJobDefinitionResponse]
$creadList :: ReadS [CreateDataQualityJobDefinitionResponse]
readsPrec :: Int -> ReadS CreateDataQualityJobDefinitionResponse
$creadsPrec :: Int -> ReadS CreateDataQualityJobDefinitionResponse
Prelude.Read, Int -> CreateDataQualityJobDefinitionResponse -> ShowS
[CreateDataQualityJobDefinitionResponse] -> ShowS
CreateDataQualityJobDefinitionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateDataQualityJobDefinitionResponse] -> ShowS
$cshowList :: [CreateDataQualityJobDefinitionResponse] -> ShowS
show :: CreateDataQualityJobDefinitionResponse -> String
$cshow :: CreateDataQualityJobDefinitionResponse -> String
showsPrec :: Int -> CreateDataQualityJobDefinitionResponse -> ShowS
$cshowsPrec :: Int -> CreateDataQualityJobDefinitionResponse -> ShowS
Prelude.Show, forall x.
Rep CreateDataQualityJobDefinitionResponse x
-> CreateDataQualityJobDefinitionResponse
forall x.
CreateDataQualityJobDefinitionResponse
-> Rep CreateDataQualityJobDefinitionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateDataQualityJobDefinitionResponse x
-> CreateDataQualityJobDefinitionResponse
$cfrom :: forall x.
CreateDataQualityJobDefinitionResponse
-> Rep CreateDataQualityJobDefinitionResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateDataQualityJobDefinitionResponse' 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:
--
-- 'httpStatus', 'createDataQualityJobDefinitionResponse_httpStatus' - The response's http status code.
--
-- 'jobDefinitionArn', 'createDataQualityJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the job definition.
newCreateDataQualityJobDefinitionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'jobDefinitionArn'
  Prelude.Text ->
  CreateDataQualityJobDefinitionResponse
newCreateDataQualityJobDefinitionResponse :: Int -> Text -> CreateDataQualityJobDefinitionResponse
newCreateDataQualityJobDefinitionResponse
  Int
pHttpStatus_
  Text
pJobDefinitionArn_ =
    CreateDataQualityJobDefinitionResponse'
      { $sel:httpStatus:CreateDataQualityJobDefinitionResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:jobDefinitionArn:CreateDataQualityJobDefinitionResponse' :: Text
jobDefinitionArn =
          Text
pJobDefinitionArn_
      }

-- | The response's http status code.
createDataQualityJobDefinitionResponse_httpStatus :: Lens.Lens' CreateDataQualityJobDefinitionResponse Prelude.Int
createDataQualityJobDefinitionResponse_httpStatus :: Lens' CreateDataQualityJobDefinitionResponse Int
createDataQualityJobDefinitionResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinitionResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateDataQualityJobDefinitionResponse' :: CreateDataQualityJobDefinitionResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateDataQualityJobDefinitionResponse
s@CreateDataQualityJobDefinitionResponse' {} Int
a -> CreateDataQualityJobDefinitionResponse
s {$sel:httpStatus:CreateDataQualityJobDefinitionResponse' :: Int
httpStatus = Int
a} :: CreateDataQualityJobDefinitionResponse)

-- | The Amazon Resource Name (ARN) of the job definition.
createDataQualityJobDefinitionResponse_jobDefinitionArn :: Lens.Lens' CreateDataQualityJobDefinitionResponse Prelude.Text
createDataQualityJobDefinitionResponse_jobDefinitionArn :: Lens' CreateDataQualityJobDefinitionResponse Text
createDataQualityJobDefinitionResponse_jobDefinitionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataQualityJobDefinitionResponse' {Text
jobDefinitionArn :: Text
$sel:jobDefinitionArn:CreateDataQualityJobDefinitionResponse' :: CreateDataQualityJobDefinitionResponse -> Text
jobDefinitionArn} -> Text
jobDefinitionArn) (\s :: CreateDataQualityJobDefinitionResponse
s@CreateDataQualityJobDefinitionResponse' {} Text
a -> CreateDataQualityJobDefinitionResponse
s {$sel:jobDefinitionArn:CreateDataQualityJobDefinitionResponse' :: Text
jobDefinitionArn = Text
a} :: CreateDataQualityJobDefinitionResponse)

instance
  Prelude.NFData
    CreateDataQualityJobDefinitionResponse
  where
  rnf :: CreateDataQualityJobDefinitionResponse -> ()
rnf CreateDataQualityJobDefinitionResponse' {Int
Text
jobDefinitionArn :: Text
httpStatus :: Int
$sel:jobDefinitionArn:CreateDataQualityJobDefinitionResponse' :: CreateDataQualityJobDefinitionResponse -> Text
$sel:httpStatus:CreateDataQualityJobDefinitionResponse' :: CreateDataQualityJobDefinitionResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
jobDefinitionArn