{-# 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.FraudDetector.CreateModelVersion
-- 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 version of the model using the specified model type and model
-- id.
module Amazonka.FraudDetector.CreateModelVersion
  ( -- * Creating a Request
    CreateModelVersion (..),
    newCreateModelVersion,

    -- * Request Lenses
    createModelVersion_externalEventsDetail,
    createModelVersion_ingestedEventsDetail,
    createModelVersion_tags,
    createModelVersion_modelId,
    createModelVersion_modelType,
    createModelVersion_trainingDataSource,
    createModelVersion_trainingDataSchema,

    -- * Destructuring the Response
    CreateModelVersionResponse (..),
    newCreateModelVersionResponse,

    -- * Response Lenses
    createModelVersionResponse_modelId,
    createModelVersionResponse_modelType,
    createModelVersionResponse_modelVersionNumber,
    createModelVersionResponse_status,
    createModelVersionResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.FraudDetector.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newCreateModelVersion' smart constructor.
data CreateModelVersion = CreateModelVersion'
  { -- | Details of the external events data used for model version training.
    -- Required if @trainingDataSource@ is @EXTERNAL_EVENTS@.
    CreateModelVersion -> Maybe ExternalEventsDetail
externalEventsDetail :: Prelude.Maybe ExternalEventsDetail,
    -- | Details of the ingested events data used for model version training.
    -- Required if @trainingDataSource@ is @INGESTED_EVENTS@.
    CreateModelVersion -> Maybe IngestedEventsDetail
ingestedEventsDetail :: Prelude.Maybe IngestedEventsDetail,
    -- | A collection of key and value pairs.
    CreateModelVersion -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The model ID.
    CreateModelVersion -> Text
modelId :: Prelude.Text,
    -- | The model type.
    CreateModelVersion -> ModelTypeEnum
modelType :: ModelTypeEnum,
    -- | The training data source location in Amazon S3.
    CreateModelVersion -> TrainingDataSourceEnum
trainingDataSource :: TrainingDataSourceEnum,
    -- | The training data schema.
    CreateModelVersion -> TrainingDataSchema
trainingDataSchema :: TrainingDataSchema
  }
  deriving (CreateModelVersion -> CreateModelVersion -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateModelVersion -> CreateModelVersion -> Bool
$c/= :: CreateModelVersion -> CreateModelVersion -> Bool
== :: CreateModelVersion -> CreateModelVersion -> Bool
$c== :: CreateModelVersion -> CreateModelVersion -> Bool
Prelude.Eq, ReadPrec [CreateModelVersion]
ReadPrec CreateModelVersion
Int -> ReadS CreateModelVersion
ReadS [CreateModelVersion]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateModelVersion]
$creadListPrec :: ReadPrec [CreateModelVersion]
readPrec :: ReadPrec CreateModelVersion
$creadPrec :: ReadPrec CreateModelVersion
readList :: ReadS [CreateModelVersion]
$creadList :: ReadS [CreateModelVersion]
readsPrec :: Int -> ReadS CreateModelVersion
$creadsPrec :: Int -> ReadS CreateModelVersion
Prelude.Read, Int -> CreateModelVersion -> ShowS
[CreateModelVersion] -> ShowS
CreateModelVersion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateModelVersion] -> ShowS
$cshowList :: [CreateModelVersion] -> ShowS
show :: CreateModelVersion -> String
$cshow :: CreateModelVersion -> String
showsPrec :: Int -> CreateModelVersion -> ShowS
$cshowsPrec :: Int -> CreateModelVersion -> ShowS
Prelude.Show, forall x. Rep CreateModelVersion x -> CreateModelVersion
forall x. CreateModelVersion -> Rep CreateModelVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateModelVersion x -> CreateModelVersion
$cfrom :: forall x. CreateModelVersion -> Rep CreateModelVersion x
Prelude.Generic)

-- |
-- Create a value of 'CreateModelVersion' 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:
--
-- 'externalEventsDetail', 'createModelVersion_externalEventsDetail' - Details of the external events data used for model version training.
-- Required if @trainingDataSource@ is @EXTERNAL_EVENTS@.
--
-- 'ingestedEventsDetail', 'createModelVersion_ingestedEventsDetail' - Details of the ingested events data used for model version training.
-- Required if @trainingDataSource@ is @INGESTED_EVENTS@.
--
-- 'tags', 'createModelVersion_tags' - A collection of key and value pairs.
--
-- 'modelId', 'createModelVersion_modelId' - The model ID.
--
-- 'modelType', 'createModelVersion_modelType' - The model type.
--
-- 'trainingDataSource', 'createModelVersion_trainingDataSource' - The training data source location in Amazon S3.
--
-- 'trainingDataSchema', 'createModelVersion_trainingDataSchema' - The training data schema.
newCreateModelVersion ::
  -- | 'modelId'
  Prelude.Text ->
  -- | 'modelType'
  ModelTypeEnum ->
  -- | 'trainingDataSource'
  TrainingDataSourceEnum ->
  -- | 'trainingDataSchema'
  TrainingDataSchema ->
  CreateModelVersion
newCreateModelVersion :: Text
-> ModelTypeEnum
-> TrainingDataSourceEnum
-> TrainingDataSchema
-> CreateModelVersion
newCreateModelVersion
  Text
pModelId_
  ModelTypeEnum
pModelType_
  TrainingDataSourceEnum
pTrainingDataSource_
  TrainingDataSchema
pTrainingDataSchema_ =
    CreateModelVersion'
      { $sel:externalEventsDetail:CreateModelVersion' :: Maybe ExternalEventsDetail
externalEventsDetail =
          forall a. Maybe a
Prelude.Nothing,
        $sel:ingestedEventsDetail:CreateModelVersion' :: Maybe IngestedEventsDetail
ingestedEventsDetail = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateModelVersion' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:modelId:CreateModelVersion' :: Text
modelId = Text
pModelId_,
        $sel:modelType:CreateModelVersion' :: ModelTypeEnum
modelType = ModelTypeEnum
pModelType_,
        $sel:trainingDataSource:CreateModelVersion' :: TrainingDataSourceEnum
trainingDataSource = TrainingDataSourceEnum
pTrainingDataSource_,
        $sel:trainingDataSchema:CreateModelVersion' :: TrainingDataSchema
trainingDataSchema = TrainingDataSchema
pTrainingDataSchema_
      }

-- | Details of the external events data used for model version training.
-- Required if @trainingDataSource@ is @EXTERNAL_EVENTS@.
createModelVersion_externalEventsDetail :: Lens.Lens' CreateModelVersion (Prelude.Maybe ExternalEventsDetail)
createModelVersion_externalEventsDetail :: Lens' CreateModelVersion (Maybe ExternalEventsDetail)
createModelVersion_externalEventsDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersion' {Maybe ExternalEventsDetail
externalEventsDetail :: Maybe ExternalEventsDetail
$sel:externalEventsDetail:CreateModelVersion' :: CreateModelVersion -> Maybe ExternalEventsDetail
externalEventsDetail} -> Maybe ExternalEventsDetail
externalEventsDetail) (\s :: CreateModelVersion
s@CreateModelVersion' {} Maybe ExternalEventsDetail
a -> CreateModelVersion
s {$sel:externalEventsDetail:CreateModelVersion' :: Maybe ExternalEventsDetail
externalEventsDetail = Maybe ExternalEventsDetail
a} :: CreateModelVersion)

-- | Details of the ingested events data used for model version training.
-- Required if @trainingDataSource@ is @INGESTED_EVENTS@.
createModelVersion_ingestedEventsDetail :: Lens.Lens' CreateModelVersion (Prelude.Maybe IngestedEventsDetail)
createModelVersion_ingestedEventsDetail :: Lens' CreateModelVersion (Maybe IngestedEventsDetail)
createModelVersion_ingestedEventsDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersion' {Maybe IngestedEventsDetail
ingestedEventsDetail :: Maybe IngestedEventsDetail
$sel:ingestedEventsDetail:CreateModelVersion' :: CreateModelVersion -> Maybe IngestedEventsDetail
ingestedEventsDetail} -> Maybe IngestedEventsDetail
ingestedEventsDetail) (\s :: CreateModelVersion
s@CreateModelVersion' {} Maybe IngestedEventsDetail
a -> CreateModelVersion
s {$sel:ingestedEventsDetail:CreateModelVersion' :: Maybe IngestedEventsDetail
ingestedEventsDetail = Maybe IngestedEventsDetail
a} :: CreateModelVersion)

-- | A collection of key and value pairs.
createModelVersion_tags :: Lens.Lens' CreateModelVersion (Prelude.Maybe [Tag])
createModelVersion_tags :: Lens' CreateModelVersion (Maybe [Tag])
createModelVersion_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersion' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateModelVersion' :: CreateModelVersion -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateModelVersion
s@CreateModelVersion' {} Maybe [Tag]
a -> CreateModelVersion
s {$sel:tags:CreateModelVersion' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateModelVersion) 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 model ID.
createModelVersion_modelId :: Lens.Lens' CreateModelVersion Prelude.Text
createModelVersion_modelId :: Lens' CreateModelVersion Text
createModelVersion_modelId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersion' {Text
modelId :: Text
$sel:modelId:CreateModelVersion' :: CreateModelVersion -> Text
modelId} -> Text
modelId) (\s :: CreateModelVersion
s@CreateModelVersion' {} Text
a -> CreateModelVersion
s {$sel:modelId:CreateModelVersion' :: Text
modelId = Text
a} :: CreateModelVersion)

-- | The model type.
createModelVersion_modelType :: Lens.Lens' CreateModelVersion ModelTypeEnum
createModelVersion_modelType :: Lens' CreateModelVersion ModelTypeEnum
createModelVersion_modelType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersion' {ModelTypeEnum
modelType :: ModelTypeEnum
$sel:modelType:CreateModelVersion' :: CreateModelVersion -> ModelTypeEnum
modelType} -> ModelTypeEnum
modelType) (\s :: CreateModelVersion
s@CreateModelVersion' {} ModelTypeEnum
a -> CreateModelVersion
s {$sel:modelType:CreateModelVersion' :: ModelTypeEnum
modelType = ModelTypeEnum
a} :: CreateModelVersion)

-- | The training data source location in Amazon S3.
createModelVersion_trainingDataSource :: Lens.Lens' CreateModelVersion TrainingDataSourceEnum
createModelVersion_trainingDataSource :: Lens' CreateModelVersion TrainingDataSourceEnum
createModelVersion_trainingDataSource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersion' {TrainingDataSourceEnum
trainingDataSource :: TrainingDataSourceEnum
$sel:trainingDataSource:CreateModelVersion' :: CreateModelVersion -> TrainingDataSourceEnum
trainingDataSource} -> TrainingDataSourceEnum
trainingDataSource) (\s :: CreateModelVersion
s@CreateModelVersion' {} TrainingDataSourceEnum
a -> CreateModelVersion
s {$sel:trainingDataSource:CreateModelVersion' :: TrainingDataSourceEnum
trainingDataSource = TrainingDataSourceEnum
a} :: CreateModelVersion)

-- | The training data schema.
createModelVersion_trainingDataSchema :: Lens.Lens' CreateModelVersion TrainingDataSchema
createModelVersion_trainingDataSchema :: Lens' CreateModelVersion TrainingDataSchema
createModelVersion_trainingDataSchema = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersion' {TrainingDataSchema
trainingDataSchema :: TrainingDataSchema
$sel:trainingDataSchema:CreateModelVersion' :: CreateModelVersion -> TrainingDataSchema
trainingDataSchema} -> TrainingDataSchema
trainingDataSchema) (\s :: CreateModelVersion
s@CreateModelVersion' {} TrainingDataSchema
a -> CreateModelVersion
s {$sel:trainingDataSchema:CreateModelVersion' :: TrainingDataSchema
trainingDataSchema = TrainingDataSchema
a} :: CreateModelVersion)

instance Core.AWSRequest CreateModelVersion where
  type
    AWSResponse CreateModelVersion =
      CreateModelVersionResponse
  request :: (Service -> Service)
-> CreateModelVersion -> Request CreateModelVersion
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 CreateModelVersion
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateModelVersion)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe ModelTypeEnum
-> Maybe Text
-> Maybe Text
-> Int
-> CreateModelVersionResponse
CreateModelVersionResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"modelId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"modelType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"modelVersionNumber")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"status")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable CreateModelVersion where
  hashWithSalt :: Int -> CreateModelVersion -> Int
hashWithSalt Int
_salt CreateModelVersion' {Maybe [Tag]
Maybe ExternalEventsDetail
Maybe IngestedEventsDetail
Text
ModelTypeEnum
TrainingDataSourceEnum
TrainingDataSchema
trainingDataSchema :: TrainingDataSchema
trainingDataSource :: TrainingDataSourceEnum
modelType :: ModelTypeEnum
modelId :: Text
tags :: Maybe [Tag]
ingestedEventsDetail :: Maybe IngestedEventsDetail
externalEventsDetail :: Maybe ExternalEventsDetail
$sel:trainingDataSchema:CreateModelVersion' :: CreateModelVersion -> TrainingDataSchema
$sel:trainingDataSource:CreateModelVersion' :: CreateModelVersion -> TrainingDataSourceEnum
$sel:modelType:CreateModelVersion' :: CreateModelVersion -> ModelTypeEnum
$sel:modelId:CreateModelVersion' :: CreateModelVersion -> Text
$sel:tags:CreateModelVersion' :: CreateModelVersion -> Maybe [Tag]
$sel:ingestedEventsDetail:CreateModelVersion' :: CreateModelVersion -> Maybe IngestedEventsDetail
$sel:externalEventsDetail:CreateModelVersion' :: CreateModelVersion -> Maybe ExternalEventsDetail
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExternalEventsDetail
externalEventsDetail
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IngestedEventsDetail
ingestedEventsDetail
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
modelId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ModelTypeEnum
modelType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` TrainingDataSourceEnum
trainingDataSource
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` TrainingDataSchema
trainingDataSchema

instance Prelude.NFData CreateModelVersion where
  rnf :: CreateModelVersion -> ()
rnf CreateModelVersion' {Maybe [Tag]
Maybe ExternalEventsDetail
Maybe IngestedEventsDetail
Text
ModelTypeEnum
TrainingDataSourceEnum
TrainingDataSchema
trainingDataSchema :: TrainingDataSchema
trainingDataSource :: TrainingDataSourceEnum
modelType :: ModelTypeEnum
modelId :: Text
tags :: Maybe [Tag]
ingestedEventsDetail :: Maybe IngestedEventsDetail
externalEventsDetail :: Maybe ExternalEventsDetail
$sel:trainingDataSchema:CreateModelVersion' :: CreateModelVersion -> TrainingDataSchema
$sel:trainingDataSource:CreateModelVersion' :: CreateModelVersion -> TrainingDataSourceEnum
$sel:modelType:CreateModelVersion' :: CreateModelVersion -> ModelTypeEnum
$sel:modelId:CreateModelVersion' :: CreateModelVersion -> Text
$sel:tags:CreateModelVersion' :: CreateModelVersion -> Maybe [Tag]
$sel:ingestedEventsDetail:CreateModelVersion' :: CreateModelVersion -> Maybe IngestedEventsDetail
$sel:externalEventsDetail:CreateModelVersion' :: CreateModelVersion -> Maybe ExternalEventsDetail
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ExternalEventsDetail
externalEventsDetail
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IngestedEventsDetail
ingestedEventsDetail
      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
modelId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ModelTypeEnum
modelType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf TrainingDataSourceEnum
trainingDataSource
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf TrainingDataSchema
trainingDataSchema

instance Data.ToHeaders CreateModelVersion where
  toHeaders :: CreateModelVersion -> 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
"AWSHawksNestServiceFacade.CreateModelVersion" ::
                          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 CreateModelVersion where
  toJSON :: CreateModelVersion -> Value
toJSON CreateModelVersion' {Maybe [Tag]
Maybe ExternalEventsDetail
Maybe IngestedEventsDetail
Text
ModelTypeEnum
TrainingDataSourceEnum
TrainingDataSchema
trainingDataSchema :: TrainingDataSchema
trainingDataSource :: TrainingDataSourceEnum
modelType :: ModelTypeEnum
modelId :: Text
tags :: Maybe [Tag]
ingestedEventsDetail :: Maybe IngestedEventsDetail
externalEventsDetail :: Maybe ExternalEventsDetail
$sel:trainingDataSchema:CreateModelVersion' :: CreateModelVersion -> TrainingDataSchema
$sel:trainingDataSource:CreateModelVersion' :: CreateModelVersion -> TrainingDataSourceEnum
$sel:modelType:CreateModelVersion' :: CreateModelVersion -> ModelTypeEnum
$sel:modelId:CreateModelVersion' :: CreateModelVersion -> Text
$sel:tags:CreateModelVersion' :: CreateModelVersion -> Maybe [Tag]
$sel:ingestedEventsDetail:CreateModelVersion' :: CreateModelVersion -> Maybe IngestedEventsDetail
$sel:externalEventsDetail:CreateModelVersion' :: CreateModelVersion -> Maybe ExternalEventsDetail
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"externalEventsDetail" 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 ExternalEventsDetail
externalEventsDetail,
            (Key
"ingestedEventsDetail" 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 IngestedEventsDetail
ingestedEventsDetail,
            (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
"modelId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
modelId),
            forall a. a -> Maybe a
Prelude.Just (Key
"modelType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ModelTypeEnum
modelType),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"trainingDataSource" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= TrainingDataSourceEnum
trainingDataSource),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"trainingDataSchema" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= TrainingDataSchema
trainingDataSchema)
          ]
      )

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

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

-- | /See:/ 'newCreateModelVersionResponse' smart constructor.
data CreateModelVersionResponse = CreateModelVersionResponse'
  { -- | The model ID.
    CreateModelVersionResponse -> Maybe Text
modelId :: Prelude.Maybe Prelude.Text,
    -- | The model type.
    CreateModelVersionResponse -> Maybe ModelTypeEnum
modelType :: Prelude.Maybe ModelTypeEnum,
    -- | The model version number of the model version created.
    CreateModelVersionResponse -> Maybe Text
modelVersionNumber :: Prelude.Maybe Prelude.Text,
    -- | The model version status.
    CreateModelVersionResponse -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateModelVersionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateModelVersionResponse -> CreateModelVersionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateModelVersionResponse -> CreateModelVersionResponse -> Bool
$c/= :: CreateModelVersionResponse -> CreateModelVersionResponse -> Bool
== :: CreateModelVersionResponse -> CreateModelVersionResponse -> Bool
$c== :: CreateModelVersionResponse -> CreateModelVersionResponse -> Bool
Prelude.Eq, ReadPrec [CreateModelVersionResponse]
ReadPrec CreateModelVersionResponse
Int -> ReadS CreateModelVersionResponse
ReadS [CreateModelVersionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateModelVersionResponse]
$creadListPrec :: ReadPrec [CreateModelVersionResponse]
readPrec :: ReadPrec CreateModelVersionResponse
$creadPrec :: ReadPrec CreateModelVersionResponse
readList :: ReadS [CreateModelVersionResponse]
$creadList :: ReadS [CreateModelVersionResponse]
readsPrec :: Int -> ReadS CreateModelVersionResponse
$creadsPrec :: Int -> ReadS CreateModelVersionResponse
Prelude.Read, Int -> CreateModelVersionResponse -> ShowS
[CreateModelVersionResponse] -> ShowS
CreateModelVersionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateModelVersionResponse] -> ShowS
$cshowList :: [CreateModelVersionResponse] -> ShowS
show :: CreateModelVersionResponse -> String
$cshow :: CreateModelVersionResponse -> String
showsPrec :: Int -> CreateModelVersionResponse -> ShowS
$cshowsPrec :: Int -> CreateModelVersionResponse -> ShowS
Prelude.Show, forall x.
Rep CreateModelVersionResponse x -> CreateModelVersionResponse
forall x.
CreateModelVersionResponse -> Rep CreateModelVersionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateModelVersionResponse x -> CreateModelVersionResponse
$cfrom :: forall x.
CreateModelVersionResponse -> Rep CreateModelVersionResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateModelVersionResponse' 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:
--
-- 'modelId', 'createModelVersionResponse_modelId' - The model ID.
--
-- 'modelType', 'createModelVersionResponse_modelType' - The model type.
--
-- 'modelVersionNumber', 'createModelVersionResponse_modelVersionNumber' - The model version number of the model version created.
--
-- 'status', 'createModelVersionResponse_status' - The model version status.
--
-- 'httpStatus', 'createModelVersionResponse_httpStatus' - The response's http status code.
newCreateModelVersionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateModelVersionResponse
newCreateModelVersionResponse :: Int -> CreateModelVersionResponse
newCreateModelVersionResponse Int
pHttpStatus_ =
  CreateModelVersionResponse'
    { $sel:modelId:CreateModelVersionResponse' :: Maybe Text
modelId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:modelType:CreateModelVersionResponse' :: Maybe ModelTypeEnum
modelType = forall a. Maybe a
Prelude.Nothing,
      $sel:modelVersionNumber:CreateModelVersionResponse' :: Maybe Text
modelVersionNumber = forall a. Maybe a
Prelude.Nothing,
      $sel:status:CreateModelVersionResponse' :: Maybe Text
status = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateModelVersionResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The model ID.
createModelVersionResponse_modelId :: Lens.Lens' CreateModelVersionResponse (Prelude.Maybe Prelude.Text)
createModelVersionResponse_modelId :: Lens' CreateModelVersionResponse (Maybe Text)
createModelVersionResponse_modelId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersionResponse' {Maybe Text
modelId :: Maybe Text
$sel:modelId:CreateModelVersionResponse' :: CreateModelVersionResponse -> Maybe Text
modelId} -> Maybe Text
modelId) (\s :: CreateModelVersionResponse
s@CreateModelVersionResponse' {} Maybe Text
a -> CreateModelVersionResponse
s {$sel:modelId:CreateModelVersionResponse' :: Maybe Text
modelId = Maybe Text
a} :: CreateModelVersionResponse)

-- | The model type.
createModelVersionResponse_modelType :: Lens.Lens' CreateModelVersionResponse (Prelude.Maybe ModelTypeEnum)
createModelVersionResponse_modelType :: Lens' CreateModelVersionResponse (Maybe ModelTypeEnum)
createModelVersionResponse_modelType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersionResponse' {Maybe ModelTypeEnum
modelType :: Maybe ModelTypeEnum
$sel:modelType:CreateModelVersionResponse' :: CreateModelVersionResponse -> Maybe ModelTypeEnum
modelType} -> Maybe ModelTypeEnum
modelType) (\s :: CreateModelVersionResponse
s@CreateModelVersionResponse' {} Maybe ModelTypeEnum
a -> CreateModelVersionResponse
s {$sel:modelType:CreateModelVersionResponse' :: Maybe ModelTypeEnum
modelType = Maybe ModelTypeEnum
a} :: CreateModelVersionResponse)

-- | The model version number of the model version created.
createModelVersionResponse_modelVersionNumber :: Lens.Lens' CreateModelVersionResponse (Prelude.Maybe Prelude.Text)
createModelVersionResponse_modelVersionNumber :: Lens' CreateModelVersionResponse (Maybe Text)
createModelVersionResponse_modelVersionNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersionResponse' {Maybe Text
modelVersionNumber :: Maybe Text
$sel:modelVersionNumber:CreateModelVersionResponse' :: CreateModelVersionResponse -> Maybe Text
modelVersionNumber} -> Maybe Text
modelVersionNumber) (\s :: CreateModelVersionResponse
s@CreateModelVersionResponse' {} Maybe Text
a -> CreateModelVersionResponse
s {$sel:modelVersionNumber:CreateModelVersionResponse' :: Maybe Text
modelVersionNumber = Maybe Text
a} :: CreateModelVersionResponse)

-- | The model version status.
createModelVersionResponse_status :: Lens.Lens' CreateModelVersionResponse (Prelude.Maybe Prelude.Text)
createModelVersionResponse_status :: Lens' CreateModelVersionResponse (Maybe Text)
createModelVersionResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelVersionResponse' {Maybe Text
status :: Maybe Text
$sel:status:CreateModelVersionResponse' :: CreateModelVersionResponse -> Maybe Text
status} -> Maybe Text
status) (\s :: CreateModelVersionResponse
s@CreateModelVersionResponse' {} Maybe Text
a -> CreateModelVersionResponse
s {$sel:status:CreateModelVersionResponse' :: Maybe Text
status = Maybe Text
a} :: CreateModelVersionResponse)

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

instance Prelude.NFData CreateModelVersionResponse where
  rnf :: CreateModelVersionResponse -> ()
rnf CreateModelVersionResponse' {Int
Maybe Text
Maybe ModelTypeEnum
httpStatus :: Int
status :: Maybe Text
modelVersionNumber :: Maybe Text
modelType :: Maybe ModelTypeEnum
modelId :: Maybe Text
$sel:httpStatus:CreateModelVersionResponse' :: CreateModelVersionResponse -> Int
$sel:status:CreateModelVersionResponse' :: CreateModelVersionResponse -> Maybe Text
$sel:modelVersionNumber:CreateModelVersionResponse' :: CreateModelVersionResponse -> Maybe Text
$sel:modelType:CreateModelVersionResponse' :: CreateModelVersionResponse -> Maybe ModelTypeEnum
$sel:modelId:CreateModelVersionResponse' :: CreateModelVersionResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
modelId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ModelTypeEnum
modelType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
modelVersionNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus