{-# 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.CreateTrialComponent
-- 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 /trial component/, which is a stage of a machine learning
-- /trial/. A trial is composed of one or more trial components. A trial
-- component can be used in multiple trials.
--
-- Trial components include pre-processing jobs, training jobs, and batch
-- transform jobs.
--
-- When you use SageMaker Studio or the SageMaker Python SDK, all
-- experiments, trials, and trial components are automatically tracked,
-- logged, and indexed. When you use the Amazon Web Services SDK for Python
-- (Boto), you must use the logging APIs provided by the SDK.
--
-- You can add tags to a trial component and then use the Search API to
-- search for the tags.
module Amazonka.SageMaker.CreateTrialComponent
  ( -- * Creating a Request
    CreateTrialComponent (..),
    newCreateTrialComponent,

    -- * Request Lenses
    createTrialComponent_displayName,
    createTrialComponent_endTime,
    createTrialComponent_inputArtifacts,
    createTrialComponent_metadataProperties,
    createTrialComponent_outputArtifacts,
    createTrialComponent_parameters,
    createTrialComponent_startTime,
    createTrialComponent_status,
    createTrialComponent_tags,
    createTrialComponent_trialComponentName,

    -- * Destructuring the Response
    CreateTrialComponentResponse (..),
    newCreateTrialComponentResponse,

    -- * Response Lenses
    createTrialComponentResponse_trialComponentArn,
    createTrialComponentResponse_httpStatus,
  )
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:/ 'newCreateTrialComponent' smart constructor.
data CreateTrialComponent = CreateTrialComponent'
  { -- | The name of the component as displayed. The name doesn\'t need to be
    -- unique. If @DisplayName@ isn\'t specified, @TrialComponentName@ is
    -- displayed.
    CreateTrialComponent -> Maybe Text
displayName :: Prelude.Maybe Prelude.Text,
    -- | When the component ended.
    CreateTrialComponent -> Maybe POSIX
endTime :: Prelude.Maybe Data.POSIX,
    -- | The input artifacts for the component. Examples of input artifacts are
    -- datasets, algorithms, hyperparameters, source code, and instance types.
    CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
inputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
    CreateTrialComponent -> Maybe MetadataProperties
metadataProperties :: Prelude.Maybe MetadataProperties,
    -- | The output artifacts for the component. Examples of output artifacts are
    -- metrics, snapshots, logs, and images.
    CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
outputArtifacts :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact),
    -- | The hyperparameters for the component.
    CreateTrialComponent
-> Maybe (HashMap Text TrialComponentParameterValue)
parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue),
    -- | When the component started.
    CreateTrialComponent -> Maybe POSIX
startTime :: Prelude.Maybe Data.POSIX,
    -- | The status of the component. States include:
    --
    -- -   InProgress
    --
    -- -   Completed
    --
    -- -   Failed
    CreateTrialComponent -> Maybe TrialComponentStatus
status :: Prelude.Maybe TrialComponentStatus,
    -- | A list of tags to associate with the component. You can use Search API
    -- to search on the tags.
    CreateTrialComponent -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The name of the component. The name must be unique in your Amazon Web
    -- Services account and is not case-sensitive.
    CreateTrialComponent -> Text
trialComponentName :: Prelude.Text
  }
  deriving (CreateTrialComponent -> CreateTrialComponent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTrialComponent -> CreateTrialComponent -> Bool
$c/= :: CreateTrialComponent -> CreateTrialComponent -> Bool
== :: CreateTrialComponent -> CreateTrialComponent -> Bool
$c== :: CreateTrialComponent -> CreateTrialComponent -> Bool
Prelude.Eq, ReadPrec [CreateTrialComponent]
ReadPrec CreateTrialComponent
Int -> ReadS CreateTrialComponent
ReadS [CreateTrialComponent]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTrialComponent]
$creadListPrec :: ReadPrec [CreateTrialComponent]
readPrec :: ReadPrec CreateTrialComponent
$creadPrec :: ReadPrec CreateTrialComponent
readList :: ReadS [CreateTrialComponent]
$creadList :: ReadS [CreateTrialComponent]
readsPrec :: Int -> ReadS CreateTrialComponent
$creadsPrec :: Int -> ReadS CreateTrialComponent
Prelude.Read, Int -> CreateTrialComponent -> ShowS
[CreateTrialComponent] -> ShowS
CreateTrialComponent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTrialComponent] -> ShowS
$cshowList :: [CreateTrialComponent] -> ShowS
show :: CreateTrialComponent -> String
$cshow :: CreateTrialComponent -> String
showsPrec :: Int -> CreateTrialComponent -> ShowS
$cshowsPrec :: Int -> CreateTrialComponent -> ShowS
Prelude.Show, forall x. Rep CreateTrialComponent x -> CreateTrialComponent
forall x. CreateTrialComponent -> Rep CreateTrialComponent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateTrialComponent x -> CreateTrialComponent
$cfrom :: forall x. CreateTrialComponent -> Rep CreateTrialComponent x
Prelude.Generic)

-- |
-- Create a value of 'CreateTrialComponent' 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:
--
-- 'displayName', 'createTrialComponent_displayName' - The name of the component as displayed. The name doesn\'t need to be
-- unique. If @DisplayName@ isn\'t specified, @TrialComponentName@ is
-- displayed.
--
-- 'endTime', 'createTrialComponent_endTime' - When the component ended.
--
-- 'inputArtifacts', 'createTrialComponent_inputArtifacts' - The input artifacts for the component. Examples of input artifacts are
-- datasets, algorithms, hyperparameters, source code, and instance types.
--
-- 'metadataProperties', 'createTrialComponent_metadataProperties' - Undocumented member.
--
-- 'outputArtifacts', 'createTrialComponent_outputArtifacts' - The output artifacts for the component. Examples of output artifacts are
-- metrics, snapshots, logs, and images.
--
-- 'parameters', 'createTrialComponent_parameters' - The hyperparameters for the component.
--
-- 'startTime', 'createTrialComponent_startTime' - When the component started.
--
-- 'status', 'createTrialComponent_status' - The status of the component. States include:
--
-- -   InProgress
--
-- -   Completed
--
-- -   Failed
--
-- 'tags', 'createTrialComponent_tags' - A list of tags to associate with the component. You can use Search API
-- to search on the tags.
--
-- 'trialComponentName', 'createTrialComponent_trialComponentName' - The name of the component. The name must be unique in your Amazon Web
-- Services account and is not case-sensitive.
newCreateTrialComponent ::
  -- | 'trialComponentName'
  Prelude.Text ->
  CreateTrialComponent
newCreateTrialComponent :: Text -> CreateTrialComponent
newCreateTrialComponent Text
pTrialComponentName_ =
  CreateTrialComponent'
    { $sel:displayName:CreateTrialComponent' :: Maybe Text
displayName =
        forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:CreateTrialComponent' :: Maybe POSIX
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:inputArtifacts:CreateTrialComponent' :: Maybe (HashMap Text TrialComponentArtifact)
inputArtifacts = forall a. Maybe a
Prelude.Nothing,
      $sel:metadataProperties:CreateTrialComponent' :: Maybe MetadataProperties
metadataProperties = forall a. Maybe a
Prelude.Nothing,
      $sel:outputArtifacts:CreateTrialComponent' :: Maybe (HashMap Text TrialComponentArtifact)
outputArtifacts = forall a. Maybe a
Prelude.Nothing,
      $sel:parameters:CreateTrialComponent' :: Maybe (HashMap Text TrialComponentParameterValue)
parameters = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:CreateTrialComponent' :: Maybe POSIX
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:status:CreateTrialComponent' :: Maybe TrialComponentStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateTrialComponent' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:trialComponentName:CreateTrialComponent' :: Text
trialComponentName = Text
pTrialComponentName_
    }

-- | The name of the component as displayed. The name doesn\'t need to be
-- unique. If @DisplayName@ isn\'t specified, @TrialComponentName@ is
-- displayed.
createTrialComponent_displayName :: Lens.Lens' CreateTrialComponent (Prelude.Maybe Prelude.Text)
createTrialComponent_displayName :: Lens' CreateTrialComponent (Maybe Text)
createTrialComponent_displayName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Maybe Text
displayName :: Maybe Text
$sel:displayName:CreateTrialComponent' :: CreateTrialComponent -> Maybe Text
displayName} -> Maybe Text
displayName) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Maybe Text
a -> CreateTrialComponent
s {$sel:displayName:CreateTrialComponent' :: Maybe Text
displayName = Maybe Text
a} :: CreateTrialComponent)

-- | When the component ended.
createTrialComponent_endTime :: Lens.Lens' CreateTrialComponent (Prelude.Maybe Prelude.UTCTime)
createTrialComponent_endTime :: Lens' CreateTrialComponent (Maybe UTCTime)
createTrialComponent_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Maybe POSIX
endTime :: Maybe POSIX
$sel:endTime:CreateTrialComponent' :: CreateTrialComponent -> Maybe POSIX
endTime} -> Maybe POSIX
endTime) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Maybe POSIX
a -> CreateTrialComponent
s {$sel:endTime:CreateTrialComponent' :: Maybe POSIX
endTime = Maybe POSIX
a} :: CreateTrialComponent) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The input artifacts for the component. Examples of input artifacts are
-- datasets, algorithms, hyperparameters, source code, and instance types.
createTrialComponent_inputArtifacts :: Lens.Lens' CreateTrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
createTrialComponent_inputArtifacts :: Lens'
  CreateTrialComponent (Maybe (HashMap Text TrialComponentArtifact))
createTrialComponent_inputArtifacts = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Maybe (HashMap Text TrialComponentArtifact)
inputArtifacts :: Maybe (HashMap Text TrialComponentArtifact)
$sel:inputArtifacts:CreateTrialComponent' :: CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
inputArtifacts} -> Maybe (HashMap Text TrialComponentArtifact)
inputArtifacts) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Maybe (HashMap Text TrialComponentArtifact)
a -> CreateTrialComponent
s {$sel:inputArtifacts:CreateTrialComponent' :: Maybe (HashMap Text TrialComponentArtifact)
inputArtifacts = Maybe (HashMap Text TrialComponentArtifact)
a} :: CreateTrialComponent) 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

-- | Undocumented member.
createTrialComponent_metadataProperties :: Lens.Lens' CreateTrialComponent (Prelude.Maybe MetadataProperties)
createTrialComponent_metadataProperties :: Lens' CreateTrialComponent (Maybe MetadataProperties)
createTrialComponent_metadataProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Maybe MetadataProperties
metadataProperties :: Maybe MetadataProperties
$sel:metadataProperties:CreateTrialComponent' :: CreateTrialComponent -> Maybe MetadataProperties
metadataProperties} -> Maybe MetadataProperties
metadataProperties) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Maybe MetadataProperties
a -> CreateTrialComponent
s {$sel:metadataProperties:CreateTrialComponent' :: Maybe MetadataProperties
metadataProperties = Maybe MetadataProperties
a} :: CreateTrialComponent)

-- | The output artifacts for the component. Examples of output artifacts are
-- metrics, snapshots, logs, and images.
createTrialComponent_outputArtifacts :: Lens.Lens' CreateTrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentArtifact))
createTrialComponent_outputArtifacts :: Lens'
  CreateTrialComponent (Maybe (HashMap Text TrialComponentArtifact))
createTrialComponent_outputArtifacts = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Maybe (HashMap Text TrialComponentArtifact)
outputArtifacts :: Maybe (HashMap Text TrialComponentArtifact)
$sel:outputArtifacts:CreateTrialComponent' :: CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
outputArtifacts} -> Maybe (HashMap Text TrialComponentArtifact)
outputArtifacts) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Maybe (HashMap Text TrialComponentArtifact)
a -> CreateTrialComponent
s {$sel:outputArtifacts:CreateTrialComponent' :: Maybe (HashMap Text TrialComponentArtifact)
outputArtifacts = Maybe (HashMap Text TrialComponentArtifact)
a} :: CreateTrialComponent) 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 hyperparameters for the component.
createTrialComponent_parameters :: Lens.Lens' CreateTrialComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text TrialComponentParameterValue))
createTrialComponent_parameters :: Lens'
  CreateTrialComponent
  (Maybe (HashMap Text TrialComponentParameterValue))
createTrialComponent_parameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Maybe (HashMap Text TrialComponentParameterValue)
parameters :: Maybe (HashMap Text TrialComponentParameterValue)
$sel:parameters:CreateTrialComponent' :: CreateTrialComponent
-> Maybe (HashMap Text TrialComponentParameterValue)
parameters} -> Maybe (HashMap Text TrialComponentParameterValue)
parameters) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Maybe (HashMap Text TrialComponentParameterValue)
a -> CreateTrialComponent
s {$sel:parameters:CreateTrialComponent' :: Maybe (HashMap Text TrialComponentParameterValue)
parameters = Maybe (HashMap Text TrialComponentParameterValue)
a} :: CreateTrialComponent) 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

-- | When the component started.
createTrialComponent_startTime :: Lens.Lens' CreateTrialComponent (Prelude.Maybe Prelude.UTCTime)
createTrialComponent_startTime :: Lens' CreateTrialComponent (Maybe UTCTime)
createTrialComponent_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:CreateTrialComponent' :: CreateTrialComponent -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Maybe POSIX
a -> CreateTrialComponent
s {$sel:startTime:CreateTrialComponent' :: Maybe POSIX
startTime = Maybe POSIX
a} :: CreateTrialComponent) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The status of the component. States include:
--
-- -   InProgress
--
-- -   Completed
--
-- -   Failed
createTrialComponent_status :: Lens.Lens' CreateTrialComponent (Prelude.Maybe TrialComponentStatus)
createTrialComponent_status :: Lens' CreateTrialComponent (Maybe TrialComponentStatus)
createTrialComponent_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Maybe TrialComponentStatus
status :: Maybe TrialComponentStatus
$sel:status:CreateTrialComponent' :: CreateTrialComponent -> Maybe TrialComponentStatus
status} -> Maybe TrialComponentStatus
status) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Maybe TrialComponentStatus
a -> CreateTrialComponent
s {$sel:status:CreateTrialComponent' :: Maybe TrialComponentStatus
status = Maybe TrialComponentStatus
a} :: CreateTrialComponent)

-- | A list of tags to associate with the component. You can use Search API
-- to search on the tags.
createTrialComponent_tags :: Lens.Lens' CreateTrialComponent (Prelude.Maybe [Tag])
createTrialComponent_tags :: Lens' CreateTrialComponent (Maybe [Tag])
createTrialComponent_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateTrialComponent' :: CreateTrialComponent -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Maybe [Tag]
a -> CreateTrialComponent
s {$sel:tags:CreateTrialComponent' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateTrialComponent) 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 component. The name must be unique in your Amazon Web
-- Services account and is not case-sensitive.
createTrialComponent_trialComponentName :: Lens.Lens' CreateTrialComponent Prelude.Text
createTrialComponent_trialComponentName :: Lens' CreateTrialComponent Text
createTrialComponent_trialComponentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponent' {Text
trialComponentName :: Text
$sel:trialComponentName:CreateTrialComponent' :: CreateTrialComponent -> Text
trialComponentName} -> Text
trialComponentName) (\s :: CreateTrialComponent
s@CreateTrialComponent' {} Text
a -> CreateTrialComponent
s {$sel:trialComponentName:CreateTrialComponent' :: Text
trialComponentName = Text
a} :: CreateTrialComponent)

instance Core.AWSRequest CreateTrialComponent where
  type
    AWSResponse CreateTrialComponent =
      CreateTrialComponentResponse
  request :: (Service -> Service)
-> CreateTrialComponent -> Request CreateTrialComponent
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 CreateTrialComponent
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateTrialComponent)))
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 -> Int -> CreateTrialComponentResponse
CreateTrialComponentResponse'
            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
"TrialComponentArn")
            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 CreateTrialComponent where
  hashWithSalt :: Int -> CreateTrialComponent -> Int
hashWithSalt Int
_salt CreateTrialComponent' {Maybe [Tag]
Maybe Text
Maybe (HashMap Text TrialComponentArtifact)
Maybe (HashMap Text TrialComponentParameterValue)
Maybe POSIX
Maybe MetadataProperties
Maybe TrialComponentStatus
Text
trialComponentName :: Text
tags :: Maybe [Tag]
status :: Maybe TrialComponentStatus
startTime :: Maybe POSIX
parameters :: Maybe (HashMap Text TrialComponentParameterValue)
outputArtifacts :: Maybe (HashMap Text TrialComponentArtifact)
metadataProperties :: Maybe MetadataProperties
inputArtifacts :: Maybe (HashMap Text TrialComponentArtifact)
endTime :: Maybe POSIX
displayName :: Maybe Text
$sel:trialComponentName:CreateTrialComponent' :: CreateTrialComponent -> Text
$sel:tags:CreateTrialComponent' :: CreateTrialComponent -> Maybe [Tag]
$sel:status:CreateTrialComponent' :: CreateTrialComponent -> Maybe TrialComponentStatus
$sel:startTime:CreateTrialComponent' :: CreateTrialComponent -> Maybe POSIX
$sel:parameters:CreateTrialComponent' :: CreateTrialComponent
-> Maybe (HashMap Text TrialComponentParameterValue)
$sel:outputArtifacts:CreateTrialComponent' :: CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
$sel:metadataProperties:CreateTrialComponent' :: CreateTrialComponent -> Maybe MetadataProperties
$sel:inputArtifacts:CreateTrialComponent' :: CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
$sel:endTime:CreateTrialComponent' :: CreateTrialComponent -> Maybe POSIX
$sel:displayName:CreateTrialComponent' :: CreateTrialComponent -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
displayName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text TrialComponentArtifact)
inputArtifacts
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MetadataProperties
metadataProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text TrialComponentArtifact)
outputArtifacts
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text TrialComponentParameterValue)
parameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
startTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TrialComponentStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
trialComponentName

instance Prelude.NFData CreateTrialComponent where
  rnf :: CreateTrialComponent -> ()
rnf CreateTrialComponent' {Maybe [Tag]
Maybe Text
Maybe (HashMap Text TrialComponentArtifact)
Maybe (HashMap Text TrialComponentParameterValue)
Maybe POSIX
Maybe MetadataProperties
Maybe TrialComponentStatus
Text
trialComponentName :: Text
tags :: Maybe [Tag]
status :: Maybe TrialComponentStatus
startTime :: Maybe POSIX
parameters :: Maybe (HashMap Text TrialComponentParameterValue)
outputArtifacts :: Maybe (HashMap Text TrialComponentArtifact)
metadataProperties :: Maybe MetadataProperties
inputArtifacts :: Maybe (HashMap Text TrialComponentArtifact)
endTime :: Maybe POSIX
displayName :: Maybe Text
$sel:trialComponentName:CreateTrialComponent' :: CreateTrialComponent -> Text
$sel:tags:CreateTrialComponent' :: CreateTrialComponent -> Maybe [Tag]
$sel:status:CreateTrialComponent' :: CreateTrialComponent -> Maybe TrialComponentStatus
$sel:startTime:CreateTrialComponent' :: CreateTrialComponent -> Maybe POSIX
$sel:parameters:CreateTrialComponent' :: CreateTrialComponent
-> Maybe (HashMap Text TrialComponentParameterValue)
$sel:outputArtifacts:CreateTrialComponent' :: CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
$sel:metadataProperties:CreateTrialComponent' :: CreateTrialComponent -> Maybe MetadataProperties
$sel:inputArtifacts:CreateTrialComponent' :: CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
$sel:endTime:CreateTrialComponent' :: CreateTrialComponent -> Maybe POSIX
$sel:displayName:CreateTrialComponent' :: CreateTrialComponent -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
displayName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text TrialComponentArtifact)
inputArtifacts
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MetadataProperties
metadataProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text TrialComponentArtifact)
outputArtifacts
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text TrialComponentParameterValue)
parameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TrialComponentStatus
status
      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
trialComponentName

instance Data.ToHeaders CreateTrialComponent where
  toHeaders :: CreateTrialComponent -> 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.CreateTrialComponent" ::
                          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 CreateTrialComponent where
  toJSON :: CreateTrialComponent -> Value
toJSON CreateTrialComponent' {Maybe [Tag]
Maybe Text
Maybe (HashMap Text TrialComponentArtifact)
Maybe (HashMap Text TrialComponentParameterValue)
Maybe POSIX
Maybe MetadataProperties
Maybe TrialComponentStatus
Text
trialComponentName :: Text
tags :: Maybe [Tag]
status :: Maybe TrialComponentStatus
startTime :: Maybe POSIX
parameters :: Maybe (HashMap Text TrialComponentParameterValue)
outputArtifacts :: Maybe (HashMap Text TrialComponentArtifact)
metadataProperties :: Maybe MetadataProperties
inputArtifacts :: Maybe (HashMap Text TrialComponentArtifact)
endTime :: Maybe POSIX
displayName :: Maybe Text
$sel:trialComponentName:CreateTrialComponent' :: CreateTrialComponent -> Text
$sel:tags:CreateTrialComponent' :: CreateTrialComponent -> Maybe [Tag]
$sel:status:CreateTrialComponent' :: CreateTrialComponent -> Maybe TrialComponentStatus
$sel:startTime:CreateTrialComponent' :: CreateTrialComponent -> Maybe POSIX
$sel:parameters:CreateTrialComponent' :: CreateTrialComponent
-> Maybe (HashMap Text TrialComponentParameterValue)
$sel:outputArtifacts:CreateTrialComponent' :: CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
$sel:metadataProperties:CreateTrialComponent' :: CreateTrialComponent -> Maybe MetadataProperties
$sel:inputArtifacts:CreateTrialComponent' :: CreateTrialComponent -> Maybe (HashMap Text TrialComponentArtifact)
$sel:endTime:CreateTrialComponent' :: CreateTrialComponent -> Maybe POSIX
$sel:displayName:CreateTrialComponent' :: CreateTrialComponent -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DisplayName" 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 Text
displayName,
            (Key
"EndTime" 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 POSIX
endTime,
            (Key
"InputArtifacts" 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 (HashMap Text TrialComponentArtifact)
inputArtifacts,
            (Key
"MetadataProperties" 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 MetadataProperties
metadataProperties,
            (Key
"OutputArtifacts" 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 (HashMap Text TrialComponentArtifact)
outputArtifacts,
            (Key
"Parameters" 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 (HashMap Text TrialComponentParameterValue)
parameters,
            (Key
"StartTime" 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 POSIX
startTime,
            (Key
"Status" 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 TrialComponentStatus
status,
            (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
"TrialComponentName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
trialComponentName)
          ]
      )

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

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

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

-- |
-- Create a value of 'CreateTrialComponentResponse' 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:
--
-- 'trialComponentArn', 'createTrialComponentResponse_trialComponentArn' - The Amazon Resource Name (ARN) of the trial component.
--
-- 'httpStatus', 'createTrialComponentResponse_httpStatus' - The response's http status code.
newCreateTrialComponentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateTrialComponentResponse
newCreateTrialComponentResponse :: Int -> CreateTrialComponentResponse
newCreateTrialComponentResponse Int
pHttpStatus_ =
  CreateTrialComponentResponse'
    { $sel:trialComponentArn:CreateTrialComponentResponse' :: Maybe Text
trialComponentArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateTrialComponentResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The Amazon Resource Name (ARN) of the trial component.
createTrialComponentResponse_trialComponentArn :: Lens.Lens' CreateTrialComponentResponse (Prelude.Maybe Prelude.Text)
createTrialComponentResponse_trialComponentArn :: Lens' CreateTrialComponentResponse (Maybe Text)
createTrialComponentResponse_trialComponentArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrialComponentResponse' {Maybe Text
trialComponentArn :: Maybe Text
$sel:trialComponentArn:CreateTrialComponentResponse' :: CreateTrialComponentResponse -> Maybe Text
trialComponentArn} -> Maybe Text
trialComponentArn) (\s :: CreateTrialComponentResponse
s@CreateTrialComponentResponse' {} Maybe Text
a -> CreateTrialComponentResponse
s {$sel:trialComponentArn:CreateTrialComponentResponse' :: Maybe Text
trialComponentArn = Maybe Text
a} :: CreateTrialComponentResponse)

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

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