{-# 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.VoiceId.StartSpeakerEnrollmentJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Starts a new batch speaker enrollment job using specified details.
module Amazonka.VoiceId.StartSpeakerEnrollmentJob
  ( -- * Creating a Request
    StartSpeakerEnrollmentJob (..),
    newStartSpeakerEnrollmentJob,

    -- * Request Lenses
    startSpeakerEnrollmentJob_clientToken,
    startSpeakerEnrollmentJob_enrollmentConfig,
    startSpeakerEnrollmentJob_jobName,
    startSpeakerEnrollmentJob_dataAccessRoleArn,
    startSpeakerEnrollmentJob_domainId,
    startSpeakerEnrollmentJob_inputDataConfig,
    startSpeakerEnrollmentJob_outputDataConfig,

    -- * Destructuring the Response
    StartSpeakerEnrollmentJobResponse (..),
    newStartSpeakerEnrollmentJobResponse,

    -- * Response Lenses
    startSpeakerEnrollmentJobResponse_job,
    startSpeakerEnrollmentJobResponse_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.VoiceId.Types

-- | /See:/ 'newStartSpeakerEnrollmentJob' smart constructor.
data StartSpeakerEnrollmentJob = StartSpeakerEnrollmentJob'
  { -- | The idempotency token for starting a new speaker enrollment Job. If not
    -- provided, Amazon Web Services SDK populates this field.
    StartSpeakerEnrollmentJob -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | The enrollment config that contains details such as the action to take
    -- when a speaker is already enrolled in Voice ID or when a speaker is
    -- identified as a fraudster.
    StartSpeakerEnrollmentJob -> Maybe EnrollmentConfig
enrollmentConfig :: Prelude.Maybe EnrollmentConfig,
    -- | A name for your speaker enrollment job.
    StartSpeakerEnrollmentJob -> Maybe (Sensitive Text)
jobName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions
    -- to access customer\'s buckets to read the input manifest file and write
    -- the job output file. Refer to
    -- <https://docs.aws.amazon.com/connect/latest/adminguide/voiceid-batch-enrollment.html Batch enrollment using audio data from prior calls>
    -- for the permissions needed in this role.
    StartSpeakerEnrollmentJob -> Text
dataAccessRoleArn :: Prelude.Text,
    -- | The identifier of the domain that contains the speaker enrollment job
    -- and in which the speakers are enrolled.
    StartSpeakerEnrollmentJob -> Text
domainId :: Prelude.Text,
    -- | The input data config containing the S3 location for the input manifest
    -- file that contains the list of speaker enrollment requests.
    StartSpeakerEnrollmentJob -> InputDataConfig
inputDataConfig :: InputDataConfig,
    -- | The output data config containing the S3 location where Voice ID writes
    -- the job output file; you must also include a KMS key ID to encrypt the
    -- file.
    StartSpeakerEnrollmentJob -> OutputDataConfig
outputDataConfig :: OutputDataConfig
  }
  deriving (StartSpeakerEnrollmentJob -> StartSpeakerEnrollmentJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartSpeakerEnrollmentJob -> StartSpeakerEnrollmentJob -> Bool
$c/= :: StartSpeakerEnrollmentJob -> StartSpeakerEnrollmentJob -> Bool
== :: StartSpeakerEnrollmentJob -> StartSpeakerEnrollmentJob -> Bool
$c== :: StartSpeakerEnrollmentJob -> StartSpeakerEnrollmentJob -> Bool
Prelude.Eq, Int -> StartSpeakerEnrollmentJob -> ShowS
[StartSpeakerEnrollmentJob] -> ShowS
StartSpeakerEnrollmentJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartSpeakerEnrollmentJob] -> ShowS
$cshowList :: [StartSpeakerEnrollmentJob] -> ShowS
show :: StartSpeakerEnrollmentJob -> String
$cshow :: StartSpeakerEnrollmentJob -> String
showsPrec :: Int -> StartSpeakerEnrollmentJob -> ShowS
$cshowsPrec :: Int -> StartSpeakerEnrollmentJob -> ShowS
Prelude.Show, forall x.
Rep StartSpeakerEnrollmentJob x -> StartSpeakerEnrollmentJob
forall x.
StartSpeakerEnrollmentJob -> Rep StartSpeakerEnrollmentJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartSpeakerEnrollmentJob x -> StartSpeakerEnrollmentJob
$cfrom :: forall x.
StartSpeakerEnrollmentJob -> Rep StartSpeakerEnrollmentJob x
Prelude.Generic)

-- |
-- Create a value of 'StartSpeakerEnrollmentJob' 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:
--
-- 'clientToken', 'startSpeakerEnrollmentJob_clientToken' - The idempotency token for starting a new speaker enrollment Job. If not
-- provided, Amazon Web Services SDK populates this field.
--
-- 'enrollmentConfig', 'startSpeakerEnrollmentJob_enrollmentConfig' - The enrollment config that contains details such as the action to take
-- when a speaker is already enrolled in Voice ID or when a speaker is
-- identified as a fraudster.
--
-- 'jobName', 'startSpeakerEnrollmentJob_jobName' - A name for your speaker enrollment job.
--
-- 'dataAccessRoleArn', 'startSpeakerEnrollmentJob_dataAccessRoleArn' - The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions
-- to access customer\'s buckets to read the input manifest file and write
-- the job output file. Refer to
-- <https://docs.aws.amazon.com/connect/latest/adminguide/voiceid-batch-enrollment.html Batch enrollment using audio data from prior calls>
-- for the permissions needed in this role.
--
-- 'domainId', 'startSpeakerEnrollmentJob_domainId' - The identifier of the domain that contains the speaker enrollment job
-- and in which the speakers are enrolled.
--
-- 'inputDataConfig', 'startSpeakerEnrollmentJob_inputDataConfig' - The input data config containing the S3 location for the input manifest
-- file that contains the list of speaker enrollment requests.
--
-- 'outputDataConfig', 'startSpeakerEnrollmentJob_outputDataConfig' - The output data config containing the S3 location where Voice ID writes
-- the job output file; you must also include a KMS key ID to encrypt the
-- file.
newStartSpeakerEnrollmentJob ::
  -- | 'dataAccessRoleArn'
  Prelude.Text ->
  -- | 'domainId'
  Prelude.Text ->
  -- | 'inputDataConfig'
  InputDataConfig ->
  -- | 'outputDataConfig'
  OutputDataConfig ->
  StartSpeakerEnrollmentJob
newStartSpeakerEnrollmentJob :: Text
-> Text
-> InputDataConfig
-> OutputDataConfig
-> StartSpeakerEnrollmentJob
newStartSpeakerEnrollmentJob
  Text
pDataAccessRoleArn_
  Text
pDomainId_
  InputDataConfig
pInputDataConfig_
  OutputDataConfig
pOutputDataConfig_ =
    StartSpeakerEnrollmentJob'
      { $sel:clientToken:StartSpeakerEnrollmentJob' :: Maybe Text
clientToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:enrollmentConfig:StartSpeakerEnrollmentJob' :: Maybe EnrollmentConfig
enrollmentConfig = forall a. Maybe a
Prelude.Nothing,
        $sel:jobName:StartSpeakerEnrollmentJob' :: Maybe (Sensitive Text)
jobName = forall a. Maybe a
Prelude.Nothing,
        $sel:dataAccessRoleArn:StartSpeakerEnrollmentJob' :: Text
dataAccessRoleArn = Text
pDataAccessRoleArn_,
        $sel:domainId:StartSpeakerEnrollmentJob' :: Text
domainId = Text
pDomainId_,
        $sel:inputDataConfig:StartSpeakerEnrollmentJob' :: InputDataConfig
inputDataConfig = InputDataConfig
pInputDataConfig_,
        $sel:outputDataConfig:StartSpeakerEnrollmentJob' :: OutputDataConfig
outputDataConfig = OutputDataConfig
pOutputDataConfig_
      }

-- | The idempotency token for starting a new speaker enrollment Job. If not
-- provided, Amazon Web Services SDK populates this field.
startSpeakerEnrollmentJob_clientToken :: Lens.Lens' StartSpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)
startSpeakerEnrollmentJob_clientToken :: Lens' StartSpeakerEnrollmentJob (Maybe Text)
startSpeakerEnrollmentJob_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSpeakerEnrollmentJob' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: StartSpeakerEnrollmentJob
s@StartSpeakerEnrollmentJob' {} Maybe Text
a -> StartSpeakerEnrollmentJob
s {$sel:clientToken:StartSpeakerEnrollmentJob' :: Maybe Text
clientToken = Maybe Text
a} :: StartSpeakerEnrollmentJob)

-- | The enrollment config that contains details such as the action to take
-- when a speaker is already enrolled in Voice ID or when a speaker is
-- identified as a fraudster.
startSpeakerEnrollmentJob_enrollmentConfig :: Lens.Lens' StartSpeakerEnrollmentJob (Prelude.Maybe EnrollmentConfig)
startSpeakerEnrollmentJob_enrollmentConfig :: Lens' StartSpeakerEnrollmentJob (Maybe EnrollmentConfig)
startSpeakerEnrollmentJob_enrollmentConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSpeakerEnrollmentJob' {Maybe EnrollmentConfig
enrollmentConfig :: Maybe EnrollmentConfig
$sel:enrollmentConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe EnrollmentConfig
enrollmentConfig} -> Maybe EnrollmentConfig
enrollmentConfig) (\s :: StartSpeakerEnrollmentJob
s@StartSpeakerEnrollmentJob' {} Maybe EnrollmentConfig
a -> StartSpeakerEnrollmentJob
s {$sel:enrollmentConfig:StartSpeakerEnrollmentJob' :: Maybe EnrollmentConfig
enrollmentConfig = Maybe EnrollmentConfig
a} :: StartSpeakerEnrollmentJob)

-- | A name for your speaker enrollment job.
startSpeakerEnrollmentJob_jobName :: Lens.Lens' StartSpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)
startSpeakerEnrollmentJob_jobName :: Lens' StartSpeakerEnrollmentJob (Maybe Text)
startSpeakerEnrollmentJob_jobName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSpeakerEnrollmentJob' {Maybe (Sensitive Text)
jobName :: Maybe (Sensitive Text)
$sel:jobName:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe (Sensitive Text)
jobName} -> Maybe (Sensitive Text)
jobName) (\s :: StartSpeakerEnrollmentJob
s@StartSpeakerEnrollmentJob' {} Maybe (Sensitive Text)
a -> StartSpeakerEnrollmentJob
s {$sel:jobName:StartSpeakerEnrollmentJob' :: Maybe (Sensitive Text)
jobName = Maybe (Sensitive Text)
a} :: StartSpeakerEnrollmentJob) 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. Iso' (Sensitive a) a
Data._Sensitive

-- | The IAM role Amazon Resource Name (ARN) that grants Voice ID permissions
-- to access customer\'s buckets to read the input manifest file and write
-- the job output file. Refer to
-- <https://docs.aws.amazon.com/connect/latest/adminguide/voiceid-batch-enrollment.html Batch enrollment using audio data from prior calls>
-- for the permissions needed in this role.
startSpeakerEnrollmentJob_dataAccessRoleArn :: Lens.Lens' StartSpeakerEnrollmentJob Prelude.Text
startSpeakerEnrollmentJob_dataAccessRoleArn :: Lens' StartSpeakerEnrollmentJob Text
startSpeakerEnrollmentJob_dataAccessRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSpeakerEnrollmentJob' {Text
dataAccessRoleArn :: Text
$sel:dataAccessRoleArn:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Text
dataAccessRoleArn} -> Text
dataAccessRoleArn) (\s :: StartSpeakerEnrollmentJob
s@StartSpeakerEnrollmentJob' {} Text
a -> StartSpeakerEnrollmentJob
s {$sel:dataAccessRoleArn:StartSpeakerEnrollmentJob' :: Text
dataAccessRoleArn = Text
a} :: StartSpeakerEnrollmentJob)

-- | The identifier of the domain that contains the speaker enrollment job
-- and in which the speakers are enrolled.
startSpeakerEnrollmentJob_domainId :: Lens.Lens' StartSpeakerEnrollmentJob Prelude.Text
startSpeakerEnrollmentJob_domainId :: Lens' StartSpeakerEnrollmentJob Text
startSpeakerEnrollmentJob_domainId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSpeakerEnrollmentJob' {Text
domainId :: Text
$sel:domainId:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Text
domainId} -> Text
domainId) (\s :: StartSpeakerEnrollmentJob
s@StartSpeakerEnrollmentJob' {} Text
a -> StartSpeakerEnrollmentJob
s {$sel:domainId:StartSpeakerEnrollmentJob' :: Text
domainId = Text
a} :: StartSpeakerEnrollmentJob)

-- | The input data config containing the S3 location for the input manifest
-- file that contains the list of speaker enrollment requests.
startSpeakerEnrollmentJob_inputDataConfig :: Lens.Lens' StartSpeakerEnrollmentJob InputDataConfig
startSpeakerEnrollmentJob_inputDataConfig :: Lens' StartSpeakerEnrollmentJob InputDataConfig
startSpeakerEnrollmentJob_inputDataConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSpeakerEnrollmentJob' {InputDataConfig
inputDataConfig :: InputDataConfig
$sel:inputDataConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> InputDataConfig
inputDataConfig} -> InputDataConfig
inputDataConfig) (\s :: StartSpeakerEnrollmentJob
s@StartSpeakerEnrollmentJob' {} InputDataConfig
a -> StartSpeakerEnrollmentJob
s {$sel:inputDataConfig:StartSpeakerEnrollmentJob' :: InputDataConfig
inputDataConfig = InputDataConfig
a} :: StartSpeakerEnrollmentJob)

-- | The output data config containing the S3 location where Voice ID writes
-- the job output file; you must also include a KMS key ID to encrypt the
-- file.
startSpeakerEnrollmentJob_outputDataConfig :: Lens.Lens' StartSpeakerEnrollmentJob OutputDataConfig
startSpeakerEnrollmentJob_outputDataConfig :: Lens' StartSpeakerEnrollmentJob OutputDataConfig
startSpeakerEnrollmentJob_outputDataConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSpeakerEnrollmentJob' {OutputDataConfig
outputDataConfig :: OutputDataConfig
$sel:outputDataConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> OutputDataConfig
outputDataConfig} -> OutputDataConfig
outputDataConfig) (\s :: StartSpeakerEnrollmentJob
s@StartSpeakerEnrollmentJob' {} OutputDataConfig
a -> StartSpeakerEnrollmentJob
s {$sel:outputDataConfig:StartSpeakerEnrollmentJob' :: OutputDataConfig
outputDataConfig = OutputDataConfig
a} :: StartSpeakerEnrollmentJob)

instance Core.AWSRequest StartSpeakerEnrollmentJob where
  type
    AWSResponse StartSpeakerEnrollmentJob =
      StartSpeakerEnrollmentJobResponse
  request :: (Service -> Service)
-> StartSpeakerEnrollmentJob -> Request StartSpeakerEnrollmentJob
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 StartSpeakerEnrollmentJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse StartSpeakerEnrollmentJob)))
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 SpeakerEnrollmentJob
-> Int -> StartSpeakerEnrollmentJobResponse
StartSpeakerEnrollmentJobResponse'
            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
"Job")
            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 StartSpeakerEnrollmentJob where
  hashWithSalt :: Int -> StartSpeakerEnrollmentJob -> Int
hashWithSalt Int
_salt StartSpeakerEnrollmentJob' {Maybe Text
Maybe (Sensitive Text)
Maybe EnrollmentConfig
Text
InputDataConfig
OutputDataConfig
outputDataConfig :: OutputDataConfig
inputDataConfig :: InputDataConfig
domainId :: Text
dataAccessRoleArn :: Text
jobName :: Maybe (Sensitive Text)
enrollmentConfig :: Maybe EnrollmentConfig
clientToken :: Maybe Text
$sel:outputDataConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> OutputDataConfig
$sel:inputDataConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> InputDataConfig
$sel:domainId:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Text
$sel:dataAccessRoleArn:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Text
$sel:jobName:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe (Sensitive Text)
$sel:enrollmentConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe EnrollmentConfig
$sel:clientToken:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EnrollmentConfig
enrollmentConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
jobName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dataAccessRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domainId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` InputDataConfig
inputDataConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` OutputDataConfig
outputDataConfig

instance Prelude.NFData StartSpeakerEnrollmentJob where
  rnf :: StartSpeakerEnrollmentJob -> ()
rnf StartSpeakerEnrollmentJob' {Maybe Text
Maybe (Sensitive Text)
Maybe EnrollmentConfig
Text
InputDataConfig
OutputDataConfig
outputDataConfig :: OutputDataConfig
inputDataConfig :: InputDataConfig
domainId :: Text
dataAccessRoleArn :: Text
jobName :: Maybe (Sensitive Text)
enrollmentConfig :: Maybe EnrollmentConfig
clientToken :: Maybe Text
$sel:outputDataConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> OutputDataConfig
$sel:inputDataConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> InputDataConfig
$sel:domainId:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Text
$sel:dataAccessRoleArn:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Text
$sel:jobName:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe (Sensitive Text)
$sel:enrollmentConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe EnrollmentConfig
$sel:clientToken:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EnrollmentConfig
enrollmentConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
jobName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
dataAccessRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
domainId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf InputDataConfig
inputDataConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf OutputDataConfig
outputDataConfig

instance Data.ToHeaders StartSpeakerEnrollmentJob where
  toHeaders :: StartSpeakerEnrollmentJob -> 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
"VoiceID.StartSpeakerEnrollmentJob" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON StartSpeakerEnrollmentJob where
  toJSON :: StartSpeakerEnrollmentJob -> Value
toJSON StartSpeakerEnrollmentJob' {Maybe Text
Maybe (Sensitive Text)
Maybe EnrollmentConfig
Text
InputDataConfig
OutputDataConfig
outputDataConfig :: OutputDataConfig
inputDataConfig :: InputDataConfig
domainId :: Text
dataAccessRoleArn :: Text
jobName :: Maybe (Sensitive Text)
enrollmentConfig :: Maybe EnrollmentConfig
clientToken :: Maybe Text
$sel:outputDataConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> OutputDataConfig
$sel:inputDataConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> InputDataConfig
$sel:domainId:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Text
$sel:dataAccessRoleArn:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Text
$sel:jobName:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe (Sensitive Text)
$sel:enrollmentConfig:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe EnrollmentConfig
$sel:clientToken:StartSpeakerEnrollmentJob' :: StartSpeakerEnrollmentJob -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ClientToken" 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
clientToken,
            (Key
"EnrollmentConfig" 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 EnrollmentConfig
enrollmentConfig,
            (Key
"JobName" 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 (Sensitive Text)
jobName,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"DataAccessRoleArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
dataAccessRoleArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"DomainId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
domainId),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"InputDataConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= InputDataConfig
inputDataConfig),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"OutputDataConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= OutputDataConfig
outputDataConfig)
          ]
      )

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

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

-- | /See:/ 'newStartSpeakerEnrollmentJobResponse' smart constructor.
data StartSpeakerEnrollmentJobResponse = StartSpeakerEnrollmentJobResponse'
  { -- | Details about the started speaker enrollment job.
    StartSpeakerEnrollmentJobResponse -> Maybe SpeakerEnrollmentJob
job :: Prelude.Maybe SpeakerEnrollmentJob,
    -- | The response's http status code.
    StartSpeakerEnrollmentJobResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (StartSpeakerEnrollmentJobResponse
-> StartSpeakerEnrollmentJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartSpeakerEnrollmentJobResponse
-> StartSpeakerEnrollmentJobResponse -> Bool
$c/= :: StartSpeakerEnrollmentJobResponse
-> StartSpeakerEnrollmentJobResponse -> Bool
== :: StartSpeakerEnrollmentJobResponse
-> StartSpeakerEnrollmentJobResponse -> Bool
$c== :: StartSpeakerEnrollmentJobResponse
-> StartSpeakerEnrollmentJobResponse -> Bool
Prelude.Eq, Int -> StartSpeakerEnrollmentJobResponse -> ShowS
[StartSpeakerEnrollmentJobResponse] -> ShowS
StartSpeakerEnrollmentJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartSpeakerEnrollmentJobResponse] -> ShowS
$cshowList :: [StartSpeakerEnrollmentJobResponse] -> ShowS
show :: StartSpeakerEnrollmentJobResponse -> String
$cshow :: StartSpeakerEnrollmentJobResponse -> String
showsPrec :: Int -> StartSpeakerEnrollmentJobResponse -> ShowS
$cshowsPrec :: Int -> StartSpeakerEnrollmentJobResponse -> ShowS
Prelude.Show, forall x.
Rep StartSpeakerEnrollmentJobResponse x
-> StartSpeakerEnrollmentJobResponse
forall x.
StartSpeakerEnrollmentJobResponse
-> Rep StartSpeakerEnrollmentJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartSpeakerEnrollmentJobResponse x
-> StartSpeakerEnrollmentJobResponse
$cfrom :: forall x.
StartSpeakerEnrollmentJobResponse
-> Rep StartSpeakerEnrollmentJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'StartSpeakerEnrollmentJobResponse' 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:
--
-- 'job', 'startSpeakerEnrollmentJobResponse_job' - Details about the started speaker enrollment job.
--
-- 'httpStatus', 'startSpeakerEnrollmentJobResponse_httpStatus' - The response's http status code.
newStartSpeakerEnrollmentJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  StartSpeakerEnrollmentJobResponse
newStartSpeakerEnrollmentJobResponse :: Int -> StartSpeakerEnrollmentJobResponse
newStartSpeakerEnrollmentJobResponse Int
pHttpStatus_ =
  StartSpeakerEnrollmentJobResponse'
    { $sel:job:StartSpeakerEnrollmentJobResponse' :: Maybe SpeakerEnrollmentJob
job =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:StartSpeakerEnrollmentJobResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Details about the started speaker enrollment job.
startSpeakerEnrollmentJobResponse_job :: Lens.Lens' StartSpeakerEnrollmentJobResponse (Prelude.Maybe SpeakerEnrollmentJob)
startSpeakerEnrollmentJobResponse_job :: Lens'
  StartSpeakerEnrollmentJobResponse (Maybe SpeakerEnrollmentJob)
startSpeakerEnrollmentJobResponse_job = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartSpeakerEnrollmentJobResponse' {Maybe SpeakerEnrollmentJob
job :: Maybe SpeakerEnrollmentJob
$sel:job:StartSpeakerEnrollmentJobResponse' :: StartSpeakerEnrollmentJobResponse -> Maybe SpeakerEnrollmentJob
job} -> Maybe SpeakerEnrollmentJob
job) (\s :: StartSpeakerEnrollmentJobResponse
s@StartSpeakerEnrollmentJobResponse' {} Maybe SpeakerEnrollmentJob
a -> StartSpeakerEnrollmentJobResponse
s {$sel:job:StartSpeakerEnrollmentJobResponse' :: Maybe SpeakerEnrollmentJob
job = Maybe SpeakerEnrollmentJob
a} :: StartSpeakerEnrollmentJobResponse)

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

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