{-# 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.CreateModelQualityJobDefinition
-- 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 model 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.CreateModelQualityJobDefinition
  ( -- * Creating a Request
    CreateModelQualityJobDefinition (..),
    newCreateModelQualityJobDefinition,

    -- * Request Lenses
    createModelQualityJobDefinition_modelQualityBaselineConfig,
    createModelQualityJobDefinition_networkConfig,
    createModelQualityJobDefinition_stoppingCondition,
    createModelQualityJobDefinition_tags,
    createModelQualityJobDefinition_jobDefinitionName,
    createModelQualityJobDefinition_modelQualityAppSpecification,
    createModelQualityJobDefinition_modelQualityJobInput,
    createModelQualityJobDefinition_modelQualityJobOutputConfig,
    createModelQualityJobDefinition_jobResources,
    createModelQualityJobDefinition_roleArn,

    -- * Destructuring the Response
    CreateModelQualityJobDefinitionResponse (..),
    newCreateModelQualityJobDefinitionResponse,

    -- * Response Lenses
    createModelQualityJobDefinitionResponse_httpStatus,
    createModelQualityJobDefinitionResponse_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:/ 'newCreateModelQualityJobDefinition' smart constructor.
data CreateModelQualityJobDefinition = CreateModelQualityJobDefinition'
  { -- | Specifies the constraints and baselines for the monitoring job.
    CreateModelQualityJobDefinition -> Maybe ModelQualityBaselineConfig
modelQualityBaselineConfig :: Prelude.Maybe ModelQualityBaselineConfig,
    -- | Specifies the network configuration for the monitoring job.
    CreateModelQualityJobDefinition -> Maybe MonitoringNetworkConfig
networkConfig :: Prelude.Maybe MonitoringNetworkConfig,
    CreateModelQualityJobDefinition
-> 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/.
    CreateModelQualityJobDefinition -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The name of the monitoring job definition.
    CreateModelQualityJobDefinition -> Text
jobDefinitionName :: Prelude.Text,
    -- | The container that runs the monitoring job.
    CreateModelQualityJobDefinition -> ModelQualityAppSpecification
modelQualityAppSpecification :: ModelQualityAppSpecification,
    -- | A list of the inputs that are monitored. Currently endpoints are
    -- supported.
    CreateModelQualityJobDefinition -> ModelQualityJobInput
modelQualityJobInput :: ModelQualityJobInput,
    CreateModelQualityJobDefinition -> MonitoringOutputConfig
modelQualityJobOutputConfig :: MonitoringOutputConfig,
    CreateModelQualityJobDefinition -> MonitoringResources
jobResources :: MonitoringResources,
    -- | The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
    -- assume to perform tasks on your behalf.
    CreateModelQualityJobDefinition -> Text
roleArn :: Prelude.Text
  }
  deriving (CreateModelQualityJobDefinition
-> CreateModelQualityJobDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateModelQualityJobDefinition
-> CreateModelQualityJobDefinition -> Bool
$c/= :: CreateModelQualityJobDefinition
-> CreateModelQualityJobDefinition -> Bool
== :: CreateModelQualityJobDefinition
-> CreateModelQualityJobDefinition -> Bool
$c== :: CreateModelQualityJobDefinition
-> CreateModelQualityJobDefinition -> Bool
Prelude.Eq, ReadPrec [CreateModelQualityJobDefinition]
ReadPrec CreateModelQualityJobDefinition
Int -> ReadS CreateModelQualityJobDefinition
ReadS [CreateModelQualityJobDefinition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateModelQualityJobDefinition]
$creadListPrec :: ReadPrec [CreateModelQualityJobDefinition]
readPrec :: ReadPrec CreateModelQualityJobDefinition
$creadPrec :: ReadPrec CreateModelQualityJobDefinition
readList :: ReadS [CreateModelQualityJobDefinition]
$creadList :: ReadS [CreateModelQualityJobDefinition]
readsPrec :: Int -> ReadS CreateModelQualityJobDefinition
$creadsPrec :: Int -> ReadS CreateModelQualityJobDefinition
Prelude.Read, Int -> CreateModelQualityJobDefinition -> ShowS
[CreateModelQualityJobDefinition] -> ShowS
CreateModelQualityJobDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateModelQualityJobDefinition] -> ShowS
$cshowList :: [CreateModelQualityJobDefinition] -> ShowS
show :: CreateModelQualityJobDefinition -> String
$cshow :: CreateModelQualityJobDefinition -> String
showsPrec :: Int -> CreateModelQualityJobDefinition -> ShowS
$cshowsPrec :: Int -> CreateModelQualityJobDefinition -> ShowS
Prelude.Show, forall x.
Rep CreateModelQualityJobDefinition x
-> CreateModelQualityJobDefinition
forall x.
CreateModelQualityJobDefinition
-> Rep CreateModelQualityJobDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateModelQualityJobDefinition x
-> CreateModelQualityJobDefinition
$cfrom :: forall x.
CreateModelQualityJobDefinition
-> Rep CreateModelQualityJobDefinition x
Prelude.Generic)

-- |
-- Create a value of 'CreateModelQualityJobDefinition' 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:
--
-- 'modelQualityBaselineConfig', 'createModelQualityJobDefinition_modelQualityBaselineConfig' - Specifies the constraints and baselines for the monitoring job.
--
-- 'networkConfig', 'createModelQualityJobDefinition_networkConfig' - Specifies the network configuration for the monitoring job.
--
-- 'stoppingCondition', 'createModelQualityJobDefinition_stoppingCondition' - Undocumented member.
--
-- 'tags', 'createModelQualityJobDefinition_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', 'createModelQualityJobDefinition_jobDefinitionName' - The name of the monitoring job definition.
--
-- 'modelQualityAppSpecification', 'createModelQualityJobDefinition_modelQualityAppSpecification' - The container that runs the monitoring job.
--
-- 'modelQualityJobInput', 'createModelQualityJobDefinition_modelQualityJobInput' - A list of the inputs that are monitored. Currently endpoints are
-- supported.
--
-- 'modelQualityJobOutputConfig', 'createModelQualityJobDefinition_modelQualityJobOutputConfig' - Undocumented member.
--
-- 'jobResources', 'createModelQualityJobDefinition_jobResources' - Undocumented member.
--
-- 'roleArn', 'createModelQualityJobDefinition_roleArn' - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can
-- assume to perform tasks on your behalf.
newCreateModelQualityJobDefinition ::
  -- | 'jobDefinitionName'
  Prelude.Text ->
  -- | 'modelQualityAppSpecification'
  ModelQualityAppSpecification ->
  -- | 'modelQualityJobInput'
  ModelQualityJobInput ->
  -- | 'modelQualityJobOutputConfig'
  MonitoringOutputConfig ->
  -- | 'jobResources'
  MonitoringResources ->
  -- | 'roleArn'
  Prelude.Text ->
  CreateModelQualityJobDefinition
newCreateModelQualityJobDefinition :: Text
-> ModelQualityAppSpecification
-> ModelQualityJobInput
-> MonitoringOutputConfig
-> MonitoringResources
-> Text
-> CreateModelQualityJobDefinition
newCreateModelQualityJobDefinition
  Text
pJobDefinitionName_
  ModelQualityAppSpecification
pModelQualityAppSpecification_
  ModelQualityJobInput
pModelQualityJobInput_
  MonitoringOutputConfig
pModelQualityJobOutputConfig_
  MonitoringResources
pJobResources_
  Text
pRoleArn_ =
    CreateModelQualityJobDefinition'
      { $sel:modelQualityBaselineConfig:CreateModelQualityJobDefinition' :: Maybe ModelQualityBaselineConfig
modelQualityBaselineConfig =
          forall a. Maybe a
Prelude.Nothing,
        $sel:networkConfig:CreateModelQualityJobDefinition' :: Maybe MonitoringNetworkConfig
networkConfig = forall a. Maybe a
Prelude.Nothing,
        $sel:stoppingCondition:CreateModelQualityJobDefinition' :: Maybe MonitoringStoppingCondition
stoppingCondition = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateModelQualityJobDefinition' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:jobDefinitionName:CreateModelQualityJobDefinition' :: Text
jobDefinitionName = Text
pJobDefinitionName_,
        $sel:modelQualityAppSpecification:CreateModelQualityJobDefinition' :: ModelQualityAppSpecification
modelQualityAppSpecification =
          ModelQualityAppSpecification
pModelQualityAppSpecification_,
        $sel:modelQualityJobInput:CreateModelQualityJobDefinition' :: ModelQualityJobInput
modelQualityJobInput =
          ModelQualityJobInput
pModelQualityJobInput_,
        $sel:modelQualityJobOutputConfig:CreateModelQualityJobDefinition' :: MonitoringOutputConfig
modelQualityJobOutputConfig =
          MonitoringOutputConfig
pModelQualityJobOutputConfig_,
        $sel:jobResources:CreateModelQualityJobDefinition' :: MonitoringResources
jobResources = MonitoringResources
pJobResources_,
        $sel:roleArn:CreateModelQualityJobDefinition' :: Text
roleArn = Text
pRoleArn_
      }

-- | Specifies the constraints and baselines for the monitoring job.
createModelQualityJobDefinition_modelQualityBaselineConfig :: Lens.Lens' CreateModelQualityJobDefinition (Prelude.Maybe ModelQualityBaselineConfig)
createModelQualityJobDefinition_modelQualityBaselineConfig :: Lens'
  CreateModelQualityJobDefinition (Maybe ModelQualityBaselineConfig)
createModelQualityJobDefinition_modelQualityBaselineConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelQualityJobDefinition' {Maybe ModelQualityBaselineConfig
modelQualityBaselineConfig :: Maybe ModelQualityBaselineConfig
$sel:modelQualityBaselineConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe ModelQualityBaselineConfig
modelQualityBaselineConfig} -> Maybe ModelQualityBaselineConfig
modelQualityBaselineConfig) (\s :: CreateModelQualityJobDefinition
s@CreateModelQualityJobDefinition' {} Maybe ModelQualityBaselineConfig
a -> CreateModelQualityJobDefinition
s {$sel:modelQualityBaselineConfig:CreateModelQualityJobDefinition' :: Maybe ModelQualityBaselineConfig
modelQualityBaselineConfig = Maybe ModelQualityBaselineConfig
a} :: CreateModelQualityJobDefinition)

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

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

-- | (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/.
createModelQualityJobDefinition_tags :: Lens.Lens' CreateModelQualityJobDefinition (Prelude.Maybe [Tag])
createModelQualityJobDefinition_tags :: Lens' CreateModelQualityJobDefinition (Maybe [Tag])
createModelQualityJobDefinition_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelQualityJobDefinition' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateModelQualityJobDefinition
s@CreateModelQualityJobDefinition' {} Maybe [Tag]
a -> CreateModelQualityJobDefinition
s {$sel:tags:CreateModelQualityJobDefinition' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateModelQualityJobDefinition) 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 of the monitoring job definition.
createModelQualityJobDefinition_jobDefinitionName :: Lens.Lens' CreateModelQualityJobDefinition Prelude.Text
createModelQualityJobDefinition_jobDefinitionName :: Lens' CreateModelQualityJobDefinition Text
createModelQualityJobDefinition_jobDefinitionName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelQualityJobDefinition' {Text
jobDefinitionName :: Text
$sel:jobDefinitionName:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Text
jobDefinitionName} -> Text
jobDefinitionName) (\s :: CreateModelQualityJobDefinition
s@CreateModelQualityJobDefinition' {} Text
a -> CreateModelQualityJobDefinition
s {$sel:jobDefinitionName:CreateModelQualityJobDefinition' :: Text
jobDefinitionName = Text
a} :: CreateModelQualityJobDefinition)

-- | The container that runs the monitoring job.
createModelQualityJobDefinition_modelQualityAppSpecification :: Lens.Lens' CreateModelQualityJobDefinition ModelQualityAppSpecification
createModelQualityJobDefinition_modelQualityAppSpecification :: Lens' CreateModelQualityJobDefinition ModelQualityAppSpecification
createModelQualityJobDefinition_modelQualityAppSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelQualityJobDefinition' {ModelQualityAppSpecification
modelQualityAppSpecification :: ModelQualityAppSpecification
$sel:modelQualityAppSpecification:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> ModelQualityAppSpecification
modelQualityAppSpecification} -> ModelQualityAppSpecification
modelQualityAppSpecification) (\s :: CreateModelQualityJobDefinition
s@CreateModelQualityJobDefinition' {} ModelQualityAppSpecification
a -> CreateModelQualityJobDefinition
s {$sel:modelQualityAppSpecification:CreateModelQualityJobDefinition' :: ModelQualityAppSpecification
modelQualityAppSpecification = ModelQualityAppSpecification
a} :: CreateModelQualityJobDefinition)

-- | A list of the inputs that are monitored. Currently endpoints are
-- supported.
createModelQualityJobDefinition_modelQualityJobInput :: Lens.Lens' CreateModelQualityJobDefinition ModelQualityJobInput
createModelQualityJobDefinition_modelQualityJobInput :: Lens' CreateModelQualityJobDefinition ModelQualityJobInput
createModelQualityJobDefinition_modelQualityJobInput = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelQualityJobDefinition' {ModelQualityJobInput
modelQualityJobInput :: ModelQualityJobInput
$sel:modelQualityJobInput:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> ModelQualityJobInput
modelQualityJobInput} -> ModelQualityJobInput
modelQualityJobInput) (\s :: CreateModelQualityJobDefinition
s@CreateModelQualityJobDefinition' {} ModelQualityJobInput
a -> CreateModelQualityJobDefinition
s {$sel:modelQualityJobInput:CreateModelQualityJobDefinition' :: ModelQualityJobInput
modelQualityJobInput = ModelQualityJobInput
a} :: CreateModelQualityJobDefinition)

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

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

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

instance
  Core.AWSRequest
    CreateModelQualityJobDefinition
  where
  type
    AWSResponse CreateModelQualityJobDefinition =
      CreateModelQualityJobDefinitionResponse
  request :: (Service -> Service)
-> CreateModelQualityJobDefinition
-> Request CreateModelQualityJobDefinition
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 CreateModelQualityJobDefinition
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse CreateModelQualityJobDefinition)))
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 -> CreateModelQualityJobDefinitionResponse
CreateModelQualityJobDefinitionResponse'
            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
    CreateModelQualityJobDefinition
  where
  hashWithSalt :: Int -> CreateModelQualityJobDefinition -> Int
hashWithSalt
    Int
_salt
    CreateModelQualityJobDefinition' {Maybe [Tag]
Maybe ModelQualityBaselineConfig
Maybe MonitoringStoppingCondition
Maybe MonitoringNetworkConfig
Text
ModelQualityAppSpecification
MonitoringResources
ModelQualityJobInput
MonitoringOutputConfig
roleArn :: Text
jobResources :: MonitoringResources
modelQualityJobOutputConfig :: MonitoringOutputConfig
modelQualityJobInput :: ModelQualityJobInput
modelQualityAppSpecification :: ModelQualityAppSpecification
jobDefinitionName :: Text
tags :: Maybe [Tag]
stoppingCondition :: Maybe MonitoringStoppingCondition
networkConfig :: Maybe MonitoringNetworkConfig
modelQualityBaselineConfig :: Maybe ModelQualityBaselineConfig
$sel:roleArn:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Text
$sel:jobResources:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> MonitoringResources
$sel:modelQualityJobOutputConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> MonitoringOutputConfig
$sel:modelQualityJobInput:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> ModelQualityJobInput
$sel:modelQualityAppSpecification:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> ModelQualityAppSpecification
$sel:jobDefinitionName:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Text
$sel:tags:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe [Tag]
$sel:stoppingCondition:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition
-> Maybe MonitoringStoppingCondition
$sel:networkConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe MonitoringNetworkConfig
$sel:modelQualityBaselineConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe ModelQualityBaselineConfig
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModelQualityBaselineConfig
modelQualityBaselineConfig
        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` ModelQualityAppSpecification
modelQualityAppSpecification
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ModelQualityJobInput
modelQualityJobInput
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MonitoringOutputConfig
modelQualityJobOutputConfig
        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
    CreateModelQualityJobDefinition
  where
  rnf :: CreateModelQualityJobDefinition -> ()
rnf CreateModelQualityJobDefinition' {Maybe [Tag]
Maybe ModelQualityBaselineConfig
Maybe MonitoringStoppingCondition
Maybe MonitoringNetworkConfig
Text
ModelQualityAppSpecification
MonitoringResources
ModelQualityJobInput
MonitoringOutputConfig
roleArn :: Text
jobResources :: MonitoringResources
modelQualityJobOutputConfig :: MonitoringOutputConfig
modelQualityJobInput :: ModelQualityJobInput
modelQualityAppSpecification :: ModelQualityAppSpecification
jobDefinitionName :: Text
tags :: Maybe [Tag]
stoppingCondition :: Maybe MonitoringStoppingCondition
networkConfig :: Maybe MonitoringNetworkConfig
modelQualityBaselineConfig :: Maybe ModelQualityBaselineConfig
$sel:roleArn:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Text
$sel:jobResources:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> MonitoringResources
$sel:modelQualityJobOutputConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> MonitoringOutputConfig
$sel:modelQualityJobInput:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> ModelQualityJobInput
$sel:modelQualityAppSpecification:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> ModelQualityAppSpecification
$sel:jobDefinitionName:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Text
$sel:tags:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe [Tag]
$sel:stoppingCondition:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition
-> Maybe MonitoringStoppingCondition
$sel:networkConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe MonitoringNetworkConfig
$sel:modelQualityBaselineConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe ModelQualityBaselineConfig
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ModelQualityBaselineConfig
modelQualityBaselineConfig
      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 ModelQualityAppSpecification
modelQualityAppSpecification
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ModelQualityJobInput
modelQualityJobInput
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MonitoringOutputConfig
modelQualityJobOutputConfig
      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
    CreateModelQualityJobDefinition
  where
  toHeaders :: CreateModelQualityJobDefinition -> 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.CreateModelQualityJobDefinition" ::
                          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 CreateModelQualityJobDefinition where
  toJSON :: CreateModelQualityJobDefinition -> Value
toJSON CreateModelQualityJobDefinition' {Maybe [Tag]
Maybe ModelQualityBaselineConfig
Maybe MonitoringStoppingCondition
Maybe MonitoringNetworkConfig
Text
ModelQualityAppSpecification
MonitoringResources
ModelQualityJobInput
MonitoringOutputConfig
roleArn :: Text
jobResources :: MonitoringResources
modelQualityJobOutputConfig :: MonitoringOutputConfig
modelQualityJobInput :: ModelQualityJobInput
modelQualityAppSpecification :: ModelQualityAppSpecification
jobDefinitionName :: Text
tags :: Maybe [Tag]
stoppingCondition :: Maybe MonitoringStoppingCondition
networkConfig :: Maybe MonitoringNetworkConfig
modelQualityBaselineConfig :: Maybe ModelQualityBaselineConfig
$sel:roleArn:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Text
$sel:jobResources:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> MonitoringResources
$sel:modelQualityJobOutputConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> MonitoringOutputConfig
$sel:modelQualityJobInput:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> ModelQualityJobInput
$sel:modelQualityAppSpecification:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> ModelQualityAppSpecification
$sel:jobDefinitionName:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Text
$sel:tags:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe [Tag]
$sel:stoppingCondition:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition
-> Maybe MonitoringStoppingCondition
$sel:networkConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe MonitoringNetworkConfig
$sel:modelQualityBaselineConfig:CreateModelQualityJobDefinition' :: CreateModelQualityJobDefinition -> Maybe ModelQualityBaselineConfig
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ModelQualityBaselineConfig" 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 ModelQualityBaselineConfig
modelQualityBaselineConfig,
            (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
"ModelQualityAppSpecification"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ModelQualityAppSpecification
modelQualityAppSpecification
              ),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"ModelQualityJobInput"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ModelQualityJobInput
modelQualityJobInput
              ),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"ModelQualityJobOutputConfig"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MonitoringOutputConfig
modelQualityJobOutputConfig
              ),
            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 CreateModelQualityJobDefinition where
  toPath :: CreateModelQualityJobDefinition -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

-- |
-- Create a value of 'CreateModelQualityJobDefinitionResponse' 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', 'createModelQualityJobDefinitionResponse_httpStatus' - The response's http status code.
--
-- 'jobDefinitionArn', 'createModelQualityJobDefinitionResponse_jobDefinitionArn' - The Amazon Resource Name (ARN) of the model quality monitoring job.
newCreateModelQualityJobDefinitionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'jobDefinitionArn'
  Prelude.Text ->
  CreateModelQualityJobDefinitionResponse
newCreateModelQualityJobDefinitionResponse :: Int -> Text -> CreateModelQualityJobDefinitionResponse
newCreateModelQualityJobDefinitionResponse
  Int
pHttpStatus_
  Text
pJobDefinitionArn_ =
    CreateModelQualityJobDefinitionResponse'
      { $sel:httpStatus:CreateModelQualityJobDefinitionResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:jobDefinitionArn:CreateModelQualityJobDefinitionResponse' :: Text
jobDefinitionArn =
          Text
pJobDefinitionArn_
      }

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

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

instance
  Prelude.NFData
    CreateModelQualityJobDefinitionResponse
  where
  rnf :: CreateModelQualityJobDefinitionResponse -> ()
rnf CreateModelQualityJobDefinitionResponse' {Int
Text
jobDefinitionArn :: Text
httpStatus :: Int
$sel:jobDefinitionArn:CreateModelQualityJobDefinitionResponse' :: CreateModelQualityJobDefinitionResponse -> Text
$sel:httpStatus:CreateModelQualityJobDefinitionResponse' :: CreateModelQualityJobDefinitionResponse -> 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