{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.SpeakerEnrollmentJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.VoiceId.Types.SpeakerEnrollmentJob 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 Amazonka.VoiceId.Types.EnrollmentConfig
import Amazonka.VoiceId.Types.FailureDetails
import Amazonka.VoiceId.Types.InputDataConfig
import Amazonka.VoiceId.Types.JobProgress
import Amazonka.VoiceId.Types.OutputDataConfig
import Amazonka.VoiceId.Types.SpeakerEnrollmentJobStatus

-- | Contains all the information about a speaker enrollment job.
--
-- /See:/ 'newSpeakerEnrollmentJob' smart constructor.
data SpeakerEnrollmentJob = SpeakerEnrollmentJob'
  { -- | A timestamp showing the creation of the speaker enrollment job.
    SpeakerEnrollmentJob -> Maybe POSIX
createdAt :: Prelude.Maybe Data.POSIX,
    -- | 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.
    SpeakerEnrollmentJob -> Maybe Text
dataAccessRoleArn :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the domain that contains the speaker enrollment job.
    SpeakerEnrollmentJob -> Maybe Text
domainId :: Prelude.Maybe Prelude.Text,
    -- | A timestamp showing when the speaker enrollment job ended.
    SpeakerEnrollmentJob -> Maybe POSIX
endedAt :: Prelude.Maybe Data.POSIX,
    -- | The configuration that defines the action to take when the speaker is
    -- already enrolled in Voice ID, and the @FraudDetectionConfig@ to use.
    SpeakerEnrollmentJob -> Maybe EnrollmentConfig
enrollmentConfig :: Prelude.Maybe EnrollmentConfig,
    -- | Contains details that are populated when an entire batch job fails. In
    -- cases of individual registration job failures, the batch job as a whole
    -- doesn\'t fail; it is completed with a @JobStatus@ of
    -- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the
    -- individual registration requests that failed.
    SpeakerEnrollmentJob -> Maybe FailureDetails
failureDetails :: Prelude.Maybe FailureDetails,
    -- | The input data config containing an S3 URI for the input manifest file
    -- that contains the list of speaker enrollment job requests.
    SpeakerEnrollmentJob -> Maybe InputDataConfig
inputDataConfig :: Prelude.Maybe InputDataConfig,
    -- | The service-generated identifier for the speaker enrollment job.
    SpeakerEnrollmentJob -> Maybe Text
jobId :: Prelude.Maybe Prelude.Text,
    -- | The client-provided name for the speaker enrollment job.
    SpeakerEnrollmentJob -> Maybe (Sensitive Text)
jobName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Provides details on job progress. This field shows the completed
    -- percentage of registration requests listed in the input file.
    SpeakerEnrollmentJob -> Maybe JobProgress
jobProgress :: Prelude.Maybe JobProgress,
    -- | The current status of the speaker enrollment job.
    SpeakerEnrollmentJob -> Maybe SpeakerEnrollmentJobStatus
jobStatus :: Prelude.Maybe SpeakerEnrollmentJobStatus,
    -- | 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.
    SpeakerEnrollmentJob -> Maybe OutputDataConfig
outputDataConfig :: Prelude.Maybe OutputDataConfig
  }
  deriving (SpeakerEnrollmentJob -> SpeakerEnrollmentJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SpeakerEnrollmentJob -> SpeakerEnrollmentJob -> Bool
$c/= :: SpeakerEnrollmentJob -> SpeakerEnrollmentJob -> Bool
== :: SpeakerEnrollmentJob -> SpeakerEnrollmentJob -> Bool
$c== :: SpeakerEnrollmentJob -> SpeakerEnrollmentJob -> Bool
Prelude.Eq, Int -> SpeakerEnrollmentJob -> ShowS
[SpeakerEnrollmentJob] -> ShowS
SpeakerEnrollmentJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SpeakerEnrollmentJob] -> ShowS
$cshowList :: [SpeakerEnrollmentJob] -> ShowS
show :: SpeakerEnrollmentJob -> String
$cshow :: SpeakerEnrollmentJob -> String
showsPrec :: Int -> SpeakerEnrollmentJob -> ShowS
$cshowsPrec :: Int -> SpeakerEnrollmentJob -> ShowS
Prelude.Show, forall x. Rep SpeakerEnrollmentJob x -> SpeakerEnrollmentJob
forall x. SpeakerEnrollmentJob -> Rep SpeakerEnrollmentJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SpeakerEnrollmentJob x -> SpeakerEnrollmentJob
$cfrom :: forall x. SpeakerEnrollmentJob -> Rep SpeakerEnrollmentJob x
Prelude.Generic)

-- |
-- Create a value of 'SpeakerEnrollmentJob' 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:
--
-- 'createdAt', 'speakerEnrollmentJob_createdAt' - A timestamp showing the creation of the speaker enrollment job.
--
-- 'dataAccessRoleArn', 'speakerEnrollmentJob_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.
--
-- 'domainId', 'speakerEnrollmentJob_domainId' - The identifier of the domain that contains the speaker enrollment job.
--
-- 'endedAt', 'speakerEnrollmentJob_endedAt' - A timestamp showing when the speaker enrollment job ended.
--
-- 'enrollmentConfig', 'speakerEnrollmentJob_enrollmentConfig' - The configuration that defines the action to take when the speaker is
-- already enrolled in Voice ID, and the @FraudDetectionConfig@ to use.
--
-- 'failureDetails', 'speakerEnrollmentJob_failureDetails' - Contains details that are populated when an entire batch job fails. In
-- cases of individual registration job failures, the batch job as a whole
-- doesn\'t fail; it is completed with a @JobStatus@ of
-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the
-- individual registration requests that failed.
--
-- 'inputDataConfig', 'speakerEnrollmentJob_inputDataConfig' - The input data config containing an S3 URI for the input manifest file
-- that contains the list of speaker enrollment job requests.
--
-- 'jobId', 'speakerEnrollmentJob_jobId' - The service-generated identifier for the speaker enrollment job.
--
-- 'jobName', 'speakerEnrollmentJob_jobName' - The client-provided name for the speaker enrollment job.
--
-- 'jobProgress', 'speakerEnrollmentJob_jobProgress' - Provides details on job progress. This field shows the completed
-- percentage of registration requests listed in the input file.
--
-- 'jobStatus', 'speakerEnrollmentJob_jobStatus' - The current status of the speaker enrollment job.
--
-- 'outputDataConfig', 'speakerEnrollmentJob_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.
newSpeakerEnrollmentJob ::
  SpeakerEnrollmentJob
newSpeakerEnrollmentJob :: SpeakerEnrollmentJob
newSpeakerEnrollmentJob =
  SpeakerEnrollmentJob'
    { $sel:createdAt:SpeakerEnrollmentJob' :: Maybe POSIX
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:dataAccessRoleArn:SpeakerEnrollmentJob' :: Maybe Text
dataAccessRoleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:domainId:SpeakerEnrollmentJob' :: Maybe Text
domainId = forall a. Maybe a
Prelude.Nothing,
      $sel:endedAt:SpeakerEnrollmentJob' :: Maybe POSIX
endedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:enrollmentConfig:SpeakerEnrollmentJob' :: Maybe EnrollmentConfig
enrollmentConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:failureDetails:SpeakerEnrollmentJob' :: Maybe FailureDetails
failureDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:inputDataConfig:SpeakerEnrollmentJob' :: Maybe InputDataConfig
inputDataConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:jobId:SpeakerEnrollmentJob' :: Maybe Text
jobId = forall a. Maybe a
Prelude.Nothing,
      $sel:jobName:SpeakerEnrollmentJob' :: Maybe (Sensitive Text)
jobName = forall a. Maybe a
Prelude.Nothing,
      $sel:jobProgress:SpeakerEnrollmentJob' :: Maybe JobProgress
jobProgress = forall a. Maybe a
Prelude.Nothing,
      $sel:jobStatus:SpeakerEnrollmentJob' :: Maybe SpeakerEnrollmentJobStatus
jobStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:outputDataConfig:SpeakerEnrollmentJob' :: Maybe OutputDataConfig
outputDataConfig = forall a. Maybe a
Prelude.Nothing
    }

-- | A timestamp showing the creation of the speaker enrollment job.
speakerEnrollmentJob_createdAt :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.UTCTime)
speakerEnrollmentJob_createdAt :: Lens' SpeakerEnrollmentJob (Maybe UTCTime)
speakerEnrollmentJob_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe POSIX
a -> SpeakerEnrollmentJob
s {$sel:createdAt:SpeakerEnrollmentJob' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: SpeakerEnrollmentJob) 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 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.
speakerEnrollmentJob_dataAccessRoleArn :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)
speakerEnrollmentJob_dataAccessRoleArn :: Lens' SpeakerEnrollmentJob (Maybe Text)
speakerEnrollmentJob_dataAccessRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe Text
dataAccessRoleArn :: Maybe Text
$sel:dataAccessRoleArn:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe Text
dataAccessRoleArn} -> Maybe Text
dataAccessRoleArn) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe Text
a -> SpeakerEnrollmentJob
s {$sel:dataAccessRoleArn:SpeakerEnrollmentJob' :: Maybe Text
dataAccessRoleArn = Maybe Text
a} :: SpeakerEnrollmentJob)

-- | The identifier of the domain that contains the speaker enrollment job.
speakerEnrollmentJob_domainId :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)
speakerEnrollmentJob_domainId :: Lens' SpeakerEnrollmentJob (Maybe Text)
speakerEnrollmentJob_domainId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe Text
domainId :: Maybe Text
$sel:domainId:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe Text
domainId} -> Maybe Text
domainId) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe Text
a -> SpeakerEnrollmentJob
s {$sel:domainId:SpeakerEnrollmentJob' :: Maybe Text
domainId = Maybe Text
a} :: SpeakerEnrollmentJob)

-- | A timestamp showing when the speaker enrollment job ended.
speakerEnrollmentJob_endedAt :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.UTCTime)
speakerEnrollmentJob_endedAt :: Lens' SpeakerEnrollmentJob (Maybe UTCTime)
speakerEnrollmentJob_endedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe POSIX
endedAt :: Maybe POSIX
$sel:endedAt:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe POSIX
endedAt} -> Maybe POSIX
endedAt) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe POSIX
a -> SpeakerEnrollmentJob
s {$sel:endedAt:SpeakerEnrollmentJob' :: Maybe POSIX
endedAt = Maybe POSIX
a} :: SpeakerEnrollmentJob) 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 configuration that defines the action to take when the speaker is
-- already enrolled in Voice ID, and the @FraudDetectionConfig@ to use.
speakerEnrollmentJob_enrollmentConfig :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe EnrollmentConfig)
speakerEnrollmentJob_enrollmentConfig :: Lens' SpeakerEnrollmentJob (Maybe EnrollmentConfig)
speakerEnrollmentJob_enrollmentConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe EnrollmentConfig
enrollmentConfig :: Maybe EnrollmentConfig
$sel:enrollmentConfig:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe EnrollmentConfig
enrollmentConfig} -> Maybe EnrollmentConfig
enrollmentConfig) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe EnrollmentConfig
a -> SpeakerEnrollmentJob
s {$sel:enrollmentConfig:SpeakerEnrollmentJob' :: Maybe EnrollmentConfig
enrollmentConfig = Maybe EnrollmentConfig
a} :: SpeakerEnrollmentJob)

-- | Contains details that are populated when an entire batch job fails. In
-- cases of individual registration job failures, the batch job as a whole
-- doesn\'t fail; it is completed with a @JobStatus@ of
-- @COMPLETED_WITH_ERRORS@. You can use the job output file to identify the
-- individual registration requests that failed.
speakerEnrollmentJob_failureDetails :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe FailureDetails)
speakerEnrollmentJob_failureDetails :: Lens' SpeakerEnrollmentJob (Maybe FailureDetails)
speakerEnrollmentJob_failureDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe FailureDetails
failureDetails :: Maybe FailureDetails
$sel:failureDetails:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe FailureDetails
failureDetails} -> Maybe FailureDetails
failureDetails) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe FailureDetails
a -> SpeakerEnrollmentJob
s {$sel:failureDetails:SpeakerEnrollmentJob' :: Maybe FailureDetails
failureDetails = Maybe FailureDetails
a} :: SpeakerEnrollmentJob)

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

-- | The service-generated identifier for the speaker enrollment job.
speakerEnrollmentJob_jobId :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)
speakerEnrollmentJob_jobId :: Lens' SpeakerEnrollmentJob (Maybe Text)
speakerEnrollmentJob_jobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe Text
jobId :: Maybe Text
$sel:jobId:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe Text
jobId} -> Maybe Text
jobId) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe Text
a -> SpeakerEnrollmentJob
s {$sel:jobId:SpeakerEnrollmentJob' :: Maybe Text
jobId = Maybe Text
a} :: SpeakerEnrollmentJob)

-- | The client-provided name for the speaker enrollment job.
speakerEnrollmentJob_jobName :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe Prelude.Text)
speakerEnrollmentJob_jobName :: Lens' SpeakerEnrollmentJob (Maybe Text)
speakerEnrollmentJob_jobName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe (Sensitive Text)
jobName :: Maybe (Sensitive Text)
$sel:jobName:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe (Sensitive Text)
jobName} -> Maybe (Sensitive Text)
jobName) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe (Sensitive Text)
a -> SpeakerEnrollmentJob
s {$sel:jobName:SpeakerEnrollmentJob' :: Maybe (Sensitive Text)
jobName = Maybe (Sensitive Text)
a} :: SpeakerEnrollmentJob) 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

-- | Provides details on job progress. This field shows the completed
-- percentage of registration requests listed in the input file.
speakerEnrollmentJob_jobProgress :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe JobProgress)
speakerEnrollmentJob_jobProgress :: Lens' SpeakerEnrollmentJob (Maybe JobProgress)
speakerEnrollmentJob_jobProgress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe JobProgress
jobProgress :: Maybe JobProgress
$sel:jobProgress:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe JobProgress
jobProgress} -> Maybe JobProgress
jobProgress) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe JobProgress
a -> SpeakerEnrollmentJob
s {$sel:jobProgress:SpeakerEnrollmentJob' :: Maybe JobProgress
jobProgress = Maybe JobProgress
a} :: SpeakerEnrollmentJob)

-- | The current status of the speaker enrollment job.
speakerEnrollmentJob_jobStatus :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe SpeakerEnrollmentJobStatus)
speakerEnrollmentJob_jobStatus :: Lens' SpeakerEnrollmentJob (Maybe SpeakerEnrollmentJobStatus)
speakerEnrollmentJob_jobStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe SpeakerEnrollmentJobStatus
jobStatus :: Maybe SpeakerEnrollmentJobStatus
$sel:jobStatus:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe SpeakerEnrollmentJobStatus
jobStatus} -> Maybe SpeakerEnrollmentJobStatus
jobStatus) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe SpeakerEnrollmentJobStatus
a -> SpeakerEnrollmentJob
s {$sel:jobStatus:SpeakerEnrollmentJob' :: Maybe SpeakerEnrollmentJobStatus
jobStatus = Maybe SpeakerEnrollmentJobStatus
a} :: SpeakerEnrollmentJob)

-- | 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.
speakerEnrollmentJob_outputDataConfig :: Lens.Lens' SpeakerEnrollmentJob (Prelude.Maybe OutputDataConfig)
speakerEnrollmentJob_outputDataConfig :: Lens' SpeakerEnrollmentJob (Maybe OutputDataConfig)
speakerEnrollmentJob_outputDataConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpeakerEnrollmentJob' {Maybe OutputDataConfig
outputDataConfig :: Maybe OutputDataConfig
$sel:outputDataConfig:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe OutputDataConfig
outputDataConfig} -> Maybe OutputDataConfig
outputDataConfig) (\s :: SpeakerEnrollmentJob
s@SpeakerEnrollmentJob' {} Maybe OutputDataConfig
a -> SpeakerEnrollmentJob
s {$sel:outputDataConfig:SpeakerEnrollmentJob' :: Maybe OutputDataConfig
outputDataConfig = Maybe OutputDataConfig
a} :: SpeakerEnrollmentJob)

instance Data.FromJSON SpeakerEnrollmentJob where
  parseJSON :: Value -> Parser SpeakerEnrollmentJob
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"SpeakerEnrollmentJob"
      ( \Object
x ->
          Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe EnrollmentConfig
-> Maybe FailureDetails
-> Maybe InputDataConfig
-> Maybe Text
-> Maybe (Sensitive Text)
-> Maybe JobProgress
-> Maybe SpeakerEnrollmentJobStatus
-> Maybe OutputDataConfig
-> SpeakerEnrollmentJob
SpeakerEnrollmentJob'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CreatedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DataAccessRoleArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DomainId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EndedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EnrollmentConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"FailureDetails")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"InputDataConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"JobId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"JobName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"JobProgress")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"JobStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"OutputDataConfig")
      )

instance Prelude.Hashable SpeakerEnrollmentJob where
  hashWithSalt :: Int -> SpeakerEnrollmentJob -> Int
hashWithSalt Int
_salt SpeakerEnrollmentJob' {Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
Maybe FailureDetails
Maybe EnrollmentConfig
Maybe InputDataConfig
Maybe JobProgress
Maybe OutputDataConfig
Maybe SpeakerEnrollmentJobStatus
outputDataConfig :: Maybe OutputDataConfig
jobStatus :: Maybe SpeakerEnrollmentJobStatus
jobProgress :: Maybe JobProgress
jobName :: Maybe (Sensitive Text)
jobId :: Maybe Text
inputDataConfig :: Maybe InputDataConfig
failureDetails :: Maybe FailureDetails
enrollmentConfig :: Maybe EnrollmentConfig
endedAt :: Maybe POSIX
domainId :: Maybe Text
dataAccessRoleArn :: Maybe Text
createdAt :: Maybe POSIX
$sel:outputDataConfig:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe OutputDataConfig
$sel:jobStatus:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe SpeakerEnrollmentJobStatus
$sel:jobProgress:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe JobProgress
$sel:jobName:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe (Sensitive Text)
$sel:jobId:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe Text
$sel:inputDataConfig:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe InputDataConfig
$sel:failureDetails:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe FailureDetails
$sel:enrollmentConfig:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe EnrollmentConfig
$sel:endedAt:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe POSIX
$sel:domainId:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe Text
$sel:dataAccessRoleArn:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe Text
$sel:createdAt:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe POSIX
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dataAccessRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domainId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
endedAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EnrollmentConfig
enrollmentConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FailureDetails
failureDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InputDataConfig
inputDataConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
jobId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
jobName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JobProgress
jobProgress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SpeakerEnrollmentJobStatus
jobStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OutputDataConfig
outputDataConfig

instance Prelude.NFData SpeakerEnrollmentJob where
  rnf :: SpeakerEnrollmentJob -> ()
rnf SpeakerEnrollmentJob' {Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
Maybe FailureDetails
Maybe EnrollmentConfig
Maybe InputDataConfig
Maybe JobProgress
Maybe OutputDataConfig
Maybe SpeakerEnrollmentJobStatus
outputDataConfig :: Maybe OutputDataConfig
jobStatus :: Maybe SpeakerEnrollmentJobStatus
jobProgress :: Maybe JobProgress
jobName :: Maybe (Sensitive Text)
jobId :: Maybe Text
inputDataConfig :: Maybe InputDataConfig
failureDetails :: Maybe FailureDetails
enrollmentConfig :: Maybe EnrollmentConfig
endedAt :: Maybe POSIX
domainId :: Maybe Text
dataAccessRoleArn :: Maybe Text
createdAt :: Maybe POSIX
$sel:outputDataConfig:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe OutputDataConfig
$sel:jobStatus:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe SpeakerEnrollmentJobStatus
$sel:jobProgress:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe JobProgress
$sel:jobName:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe (Sensitive Text)
$sel:jobId:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe Text
$sel:inputDataConfig:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe InputDataConfig
$sel:failureDetails:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe FailureDetails
$sel:enrollmentConfig:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe EnrollmentConfig
$sel:endedAt:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe POSIX
$sel:domainId:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe Text
$sel:dataAccessRoleArn:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe Text
$sel:createdAt:SpeakerEnrollmentJob' :: SpeakerEnrollmentJob -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dataAccessRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
domainId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
endedAt
      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 FailureDetails
failureDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InputDataConfig
inputDataConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
jobId
      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 Maybe JobProgress
jobProgress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SpeakerEnrollmentJobStatus
jobStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OutputDataConfig
outputDataConfig