{-# 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.Comprehend.Types.DocumentClassifierProperties
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Comprehend.Types.DocumentClassifierProperties where

import Amazonka.Comprehend.Types.ClassifierMetadata
import Amazonka.Comprehend.Types.DocumentClassifierInputDataConfig
import Amazonka.Comprehend.Types.DocumentClassifierMode
import Amazonka.Comprehend.Types.DocumentClassifierOutputDataConfig
import Amazonka.Comprehend.Types.LanguageCode
import Amazonka.Comprehend.Types.ModelStatus
import Amazonka.Comprehend.Types.VpcConfig
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Provides information about a document classifier.
--
-- /See:/ 'newDocumentClassifierProperties' smart constructor.
data DocumentClassifierProperties = DocumentClassifierProperties'
  { -- | The status of the document classifier. If the status is @TRAINED@ the
    -- classifier is ready to use. If the status is @FAILED@ you can see
    -- additional information about why the classifier wasn\'t trained in the
    -- @Message@ field.
    DocumentClassifierProperties -> Maybe ModelStatus
status :: Prelude.Maybe ModelStatus,
    -- | The language code for the language of the documents that the classifier
    -- was trained on.
    DocumentClassifierProperties -> Maybe LanguageCode
languageCode :: Prelude.Maybe LanguageCode,
    -- | Information about the document classifier, including the number of
    -- documents used for training the classifier, the number of documents used
    -- for test the classifier, and an accuracy rating.
    DocumentClassifierProperties
-> Maybe (Sensitive ClassifierMetadata)
classifierMetadata :: Prelude.Maybe (Core.Sensitive ClassifierMetadata),
    -- | The time that training of the document classifier was completed.
    -- Indicates the time when the training completes on documentation
    -- classifiers. You are billed for the time interval between this time and
    -- the value of TrainingStartTime.
    DocumentClassifierProperties -> Maybe POSIX
trainingEndTime :: Prelude.Maybe Core.POSIX,
    -- | The Amazon Resource Name (ARN) that identifies the document classifier.
    DocumentClassifierProperties -> Maybe Text
documentClassifierArn :: Prelude.Maybe Prelude.Text,
    -- | The version name that you assigned to the document classifier.
    DocumentClassifierProperties -> Maybe Text
versionName :: Prelude.Maybe Prelude.Text,
    -- | ID for the AWS Key Management Service (KMS) key that Amazon Comprehend
    -- uses to encrypt trained custom models. The ModelKmsKeyId can be either
    -- of the following formats:
    --
    -- -   KMS Key ID: @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
    --
    -- -   Amazon Resource Name (ARN) of a KMS Key:
    --     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
    DocumentClassifierProperties -> Maybe Text
modelKmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | Indicates the mode in which the specific classifier was trained. This
    -- also indicates the format of input documents and the format of the
    -- confusion matrix. Each classifier can only be trained in one mode and
    -- this cannot be changed once the classifier is trained.
    DocumentClassifierProperties -> Maybe DocumentClassifierMode
mode :: Prelude.Maybe DocumentClassifierMode,
    -- | The input data configuration that you supplied when you created the
    -- document classifier for training.
    DocumentClassifierProperties
-> Maybe DocumentClassifierInputDataConfig
inputDataConfig :: Prelude.Maybe DocumentClassifierInputDataConfig,
    -- | Configuration parameters for a private Virtual Private Cloud (VPC)
    -- containing the resources you are using for your custom classifier. For
    -- more information, see
    -- <https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html Amazon VPC>.
    DocumentClassifierProperties -> Maybe VpcConfig
vpcConfig :: Prelude.Maybe VpcConfig,
    -- | ID for the AWS Key Management Service (KMS) key that Amazon Comprehend
    -- uses to encrypt data on the storage volume attached to the ML compute
    -- instance(s) that process the analysis job. The VolumeKmsKeyId can be
    -- either of the following formats:
    --
    -- -   KMS Key ID: @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
    --
    -- -   Amazon Resource Name (ARN) of a KMS Key:
    --     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
    DocumentClassifierProperties -> Maybe Text
volumeKmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The time that training the document classifier completed.
    DocumentClassifierProperties -> Maybe POSIX
endTime :: Prelude.Maybe Core.POSIX,
    -- | Provides output results configuration parameters for custom classifier
    -- jobs.
    DocumentClassifierProperties
-> Maybe DocumentClassifierOutputDataConfig
outputDataConfig :: Prelude.Maybe DocumentClassifierOutputDataConfig,
    -- | Indicates the time when the training starts on documentation
    -- classifiers. You are billed for the time interval between this time and
    -- the value of TrainingEndTime.
    DocumentClassifierProperties -> Maybe POSIX
trainingStartTime :: Prelude.Maybe Core.POSIX,
    -- | The Amazon Resource Name (ARN) of the AWS Identity and Management (IAM)
    -- role that grants Amazon Comprehend read access to your input data.
    DocumentClassifierProperties -> Maybe Text
dataAccessRoleArn :: Prelude.Maybe Prelude.Text,
    -- | Additional information about the status of the classifier.
    DocumentClassifierProperties -> Maybe Text
message :: Prelude.Maybe Prelude.Text,
    -- | The time that the document classifier was submitted for training.
    DocumentClassifierProperties -> Maybe POSIX
submitTime :: Prelude.Maybe Core.POSIX
  }
  deriving (DocumentClassifierProperties
-> DocumentClassifierProperties -> Bool
(DocumentClassifierProperties
 -> DocumentClassifierProperties -> Bool)
-> (DocumentClassifierProperties
    -> DocumentClassifierProperties -> Bool)
-> Eq DocumentClassifierProperties
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DocumentClassifierProperties
-> DocumentClassifierProperties -> Bool
$c/= :: DocumentClassifierProperties
-> DocumentClassifierProperties -> Bool
== :: DocumentClassifierProperties
-> DocumentClassifierProperties -> Bool
$c== :: DocumentClassifierProperties
-> DocumentClassifierProperties -> Bool
Prelude.Eq, Int -> DocumentClassifierProperties -> ShowS
[DocumentClassifierProperties] -> ShowS
DocumentClassifierProperties -> String
(Int -> DocumentClassifierProperties -> ShowS)
-> (DocumentClassifierProperties -> String)
-> ([DocumentClassifierProperties] -> ShowS)
-> Show DocumentClassifierProperties
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DocumentClassifierProperties] -> ShowS
$cshowList :: [DocumentClassifierProperties] -> ShowS
show :: DocumentClassifierProperties -> String
$cshow :: DocumentClassifierProperties -> String
showsPrec :: Int -> DocumentClassifierProperties -> ShowS
$cshowsPrec :: Int -> DocumentClassifierProperties -> ShowS
Prelude.Show, (forall x.
 DocumentClassifierProperties -> Rep DocumentClassifierProperties x)
-> (forall x.
    Rep DocumentClassifierProperties x -> DocumentClassifierProperties)
-> Generic DocumentClassifierProperties
forall x.
Rep DocumentClassifierProperties x -> DocumentClassifierProperties
forall x.
DocumentClassifierProperties -> Rep DocumentClassifierProperties x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DocumentClassifierProperties x -> DocumentClassifierProperties
$cfrom :: forall x.
DocumentClassifierProperties -> Rep DocumentClassifierProperties x
Prelude.Generic)

-- |
-- Create a value of 'DocumentClassifierProperties' 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:
--
-- 'status', 'documentClassifierProperties_status' - The status of the document classifier. If the status is @TRAINED@ the
-- classifier is ready to use. If the status is @FAILED@ you can see
-- additional information about why the classifier wasn\'t trained in the
-- @Message@ field.
--
-- 'languageCode', 'documentClassifierProperties_languageCode' - The language code for the language of the documents that the classifier
-- was trained on.
--
-- 'classifierMetadata', 'documentClassifierProperties_classifierMetadata' - Information about the document classifier, including the number of
-- documents used for training the classifier, the number of documents used
-- for test the classifier, and an accuracy rating.
--
-- 'trainingEndTime', 'documentClassifierProperties_trainingEndTime' - The time that training of the document classifier was completed.
-- Indicates the time when the training completes on documentation
-- classifiers. You are billed for the time interval between this time and
-- the value of TrainingStartTime.
--
-- 'documentClassifierArn', 'documentClassifierProperties_documentClassifierArn' - The Amazon Resource Name (ARN) that identifies the document classifier.
--
-- 'versionName', 'documentClassifierProperties_versionName' - The version name that you assigned to the document classifier.
--
-- 'modelKmsKeyId', 'documentClassifierProperties_modelKmsKeyId' - ID for the AWS Key Management Service (KMS) key that Amazon Comprehend
-- uses to encrypt trained custom models. The ModelKmsKeyId can be either
-- of the following formats:
--
-- -   KMS Key ID: @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
--
-- -   Amazon Resource Name (ARN) of a KMS Key:
--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
--
-- 'mode', 'documentClassifierProperties_mode' - Indicates the mode in which the specific classifier was trained. This
-- also indicates the format of input documents and the format of the
-- confusion matrix. Each classifier can only be trained in one mode and
-- this cannot be changed once the classifier is trained.
--
-- 'inputDataConfig', 'documentClassifierProperties_inputDataConfig' - The input data configuration that you supplied when you created the
-- document classifier for training.
--
-- 'vpcConfig', 'documentClassifierProperties_vpcConfig' - Configuration parameters for a private Virtual Private Cloud (VPC)
-- containing the resources you are using for your custom classifier. For
-- more information, see
-- <https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html Amazon VPC>.
--
-- 'volumeKmsKeyId', 'documentClassifierProperties_volumeKmsKeyId' - ID for the AWS Key Management Service (KMS) key that Amazon Comprehend
-- uses to encrypt data on the storage volume attached to the ML compute
-- instance(s) that process the analysis job. The VolumeKmsKeyId can be
-- either of the following formats:
--
-- -   KMS Key ID: @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
--
-- -   Amazon Resource Name (ARN) of a KMS Key:
--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
--
-- 'endTime', 'documentClassifierProperties_endTime' - The time that training the document classifier completed.
--
-- 'outputDataConfig', 'documentClassifierProperties_outputDataConfig' - Provides output results configuration parameters for custom classifier
-- jobs.
--
-- 'trainingStartTime', 'documentClassifierProperties_trainingStartTime' - Indicates the time when the training starts on documentation
-- classifiers. You are billed for the time interval between this time and
-- the value of TrainingEndTime.
--
-- 'dataAccessRoleArn', 'documentClassifierProperties_dataAccessRoleArn' - The Amazon Resource Name (ARN) of the AWS Identity and Management (IAM)
-- role that grants Amazon Comprehend read access to your input data.
--
-- 'message', 'documentClassifierProperties_message' - Additional information about the status of the classifier.
--
-- 'submitTime', 'documentClassifierProperties_submitTime' - The time that the document classifier was submitted for training.
newDocumentClassifierProperties ::
  DocumentClassifierProperties
newDocumentClassifierProperties :: DocumentClassifierProperties
newDocumentClassifierProperties =
  DocumentClassifierProperties' :: Maybe ModelStatus
-> Maybe LanguageCode
-> Maybe (Sensitive ClassifierMetadata)
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe DocumentClassifierMode
-> Maybe DocumentClassifierInputDataConfig
-> Maybe VpcConfig
-> Maybe Text
-> Maybe POSIX
-> Maybe DocumentClassifierOutputDataConfig
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> DocumentClassifierProperties
DocumentClassifierProperties'
    { $sel:status:DocumentClassifierProperties' :: Maybe ModelStatus
status =
        Maybe ModelStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:languageCode:DocumentClassifierProperties' :: Maybe LanguageCode
languageCode = Maybe LanguageCode
forall a. Maybe a
Prelude.Nothing,
      $sel:classifierMetadata:DocumentClassifierProperties' :: Maybe (Sensitive ClassifierMetadata)
classifierMetadata = Maybe (Sensitive ClassifierMetadata)
forall a. Maybe a
Prelude.Nothing,
      $sel:trainingEndTime:DocumentClassifierProperties' :: Maybe POSIX
trainingEndTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:documentClassifierArn:DocumentClassifierProperties' :: Maybe Text
documentClassifierArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:versionName:DocumentClassifierProperties' :: Maybe Text
versionName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:modelKmsKeyId:DocumentClassifierProperties' :: Maybe Text
modelKmsKeyId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:mode:DocumentClassifierProperties' :: Maybe DocumentClassifierMode
mode = Maybe DocumentClassifierMode
forall a. Maybe a
Prelude.Nothing,
      $sel:inputDataConfig:DocumentClassifierProperties' :: Maybe DocumentClassifierInputDataConfig
inputDataConfig = Maybe DocumentClassifierInputDataConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfig:DocumentClassifierProperties' :: Maybe VpcConfig
vpcConfig = Maybe VpcConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:volumeKmsKeyId:DocumentClassifierProperties' :: Maybe Text
volumeKmsKeyId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:DocumentClassifierProperties' :: Maybe POSIX
endTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:outputDataConfig:DocumentClassifierProperties' :: Maybe DocumentClassifierOutputDataConfig
outputDataConfig = Maybe DocumentClassifierOutputDataConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:trainingStartTime:DocumentClassifierProperties' :: Maybe POSIX
trainingStartTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:dataAccessRoleArn:DocumentClassifierProperties' :: Maybe Text
dataAccessRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:message:DocumentClassifierProperties' :: Maybe Text
message = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:submitTime:DocumentClassifierProperties' :: Maybe POSIX
submitTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing
    }

-- | The status of the document classifier. If the status is @TRAINED@ the
-- classifier is ready to use. If the status is @FAILED@ you can see
-- additional information about why the classifier wasn\'t trained in the
-- @Message@ field.
documentClassifierProperties_status :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe ModelStatus)
documentClassifierProperties_status :: (Maybe ModelStatus -> f (Maybe ModelStatus))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_status = (DocumentClassifierProperties -> Maybe ModelStatus)
-> (DocumentClassifierProperties
    -> Maybe ModelStatus -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe ModelStatus)
     (Maybe ModelStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe ModelStatus
status :: Maybe ModelStatus
$sel:status:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe ModelStatus
status} -> Maybe ModelStatus
status) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe ModelStatus
a -> DocumentClassifierProperties
s {$sel:status:DocumentClassifierProperties' :: Maybe ModelStatus
status = Maybe ModelStatus
a} :: DocumentClassifierProperties)

-- | The language code for the language of the documents that the classifier
-- was trained on.
documentClassifierProperties_languageCode :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe LanguageCode)
documentClassifierProperties_languageCode :: (Maybe LanguageCode -> f (Maybe LanguageCode))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_languageCode = (DocumentClassifierProperties -> Maybe LanguageCode)
-> (DocumentClassifierProperties
    -> Maybe LanguageCode -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe LanguageCode)
     (Maybe LanguageCode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe LanguageCode
languageCode :: Maybe LanguageCode
$sel:languageCode:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe LanguageCode
languageCode} -> Maybe LanguageCode
languageCode) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe LanguageCode
a -> DocumentClassifierProperties
s {$sel:languageCode:DocumentClassifierProperties' :: Maybe LanguageCode
languageCode = Maybe LanguageCode
a} :: DocumentClassifierProperties)

-- | Information about the document classifier, including the number of
-- documents used for training the classifier, the number of documents used
-- for test the classifier, and an accuracy rating.
documentClassifierProperties_classifierMetadata :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe ClassifierMetadata)
documentClassifierProperties_classifierMetadata :: (Maybe ClassifierMetadata -> f (Maybe ClassifierMetadata))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_classifierMetadata = (DocumentClassifierProperties
 -> Maybe (Sensitive ClassifierMetadata))
-> (DocumentClassifierProperties
    -> Maybe (Sensitive ClassifierMetadata)
    -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe (Sensitive ClassifierMetadata))
     (Maybe (Sensitive ClassifierMetadata))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe (Sensitive ClassifierMetadata)
classifierMetadata :: Maybe (Sensitive ClassifierMetadata)
$sel:classifierMetadata:DocumentClassifierProperties' :: DocumentClassifierProperties
-> Maybe (Sensitive ClassifierMetadata)
classifierMetadata} -> Maybe (Sensitive ClassifierMetadata)
classifierMetadata) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe (Sensitive ClassifierMetadata)
a -> DocumentClassifierProperties
s {$sel:classifierMetadata:DocumentClassifierProperties' :: Maybe (Sensitive ClassifierMetadata)
classifierMetadata = Maybe (Sensitive ClassifierMetadata)
a} :: DocumentClassifierProperties) ((Maybe (Sensitive ClassifierMetadata)
  -> f (Maybe (Sensitive ClassifierMetadata)))
 -> DocumentClassifierProperties -> f DocumentClassifierProperties)
-> ((Maybe ClassifierMetadata -> f (Maybe ClassifierMetadata))
    -> Maybe (Sensitive ClassifierMetadata)
    -> f (Maybe (Sensitive ClassifierMetadata)))
-> (Maybe ClassifierMetadata -> f (Maybe ClassifierMetadata))
-> DocumentClassifierProperties
-> f DocumentClassifierProperties
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (Sensitive ClassifierMetadata)
  (Sensitive ClassifierMetadata)
  ClassifierMetadata
  ClassifierMetadata
-> Iso
     (Maybe (Sensitive ClassifierMetadata))
     (Maybe (Sensitive ClassifierMetadata))
     (Maybe ClassifierMetadata)
     (Maybe ClassifierMetadata)
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 AnIso
  (Sensitive ClassifierMetadata)
  (Sensitive ClassifierMetadata)
  ClassifierMetadata
  ClassifierMetadata
forall a. Iso' (Sensitive a) a
Core._Sensitive

-- | The time that training of the document classifier was completed.
-- Indicates the time when the training completes on documentation
-- classifiers. You are billed for the time interval between this time and
-- the value of TrainingStartTime.
documentClassifierProperties_trainingEndTime :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.UTCTime)
documentClassifierProperties_trainingEndTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_trainingEndTime = (DocumentClassifierProperties -> Maybe POSIX)
-> (DocumentClassifierProperties
    -> Maybe POSIX -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe POSIX
trainingEndTime :: Maybe POSIX
$sel:trainingEndTime:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe POSIX
trainingEndTime} -> Maybe POSIX
trainingEndTime) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe POSIX
a -> DocumentClassifierProperties
s {$sel:trainingEndTime:DocumentClassifierProperties' :: Maybe POSIX
trainingEndTime = Maybe POSIX
a} :: DocumentClassifierProperties) ((Maybe POSIX -> f (Maybe POSIX))
 -> DocumentClassifierProperties -> f DocumentClassifierProperties)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentClassifierProperties
-> f DocumentClassifierProperties
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The Amazon Resource Name (ARN) that identifies the document classifier.
documentClassifierProperties_documentClassifierArn :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.Text)
documentClassifierProperties_documentClassifierArn :: (Maybe Text -> f (Maybe Text))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_documentClassifierArn = (DocumentClassifierProperties -> Maybe Text)
-> (DocumentClassifierProperties
    -> Maybe Text -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe Text
documentClassifierArn :: Maybe Text
$sel:documentClassifierArn:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe Text
documentClassifierArn} -> Maybe Text
documentClassifierArn) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe Text
a -> DocumentClassifierProperties
s {$sel:documentClassifierArn:DocumentClassifierProperties' :: Maybe Text
documentClassifierArn = Maybe Text
a} :: DocumentClassifierProperties)

-- | The version name that you assigned to the document classifier.
documentClassifierProperties_versionName :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.Text)
documentClassifierProperties_versionName :: (Maybe Text -> f (Maybe Text))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_versionName = (DocumentClassifierProperties -> Maybe Text)
-> (DocumentClassifierProperties
    -> Maybe Text -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe Text
versionName :: Maybe Text
$sel:versionName:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe Text
versionName} -> Maybe Text
versionName) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe Text
a -> DocumentClassifierProperties
s {$sel:versionName:DocumentClassifierProperties' :: Maybe Text
versionName = Maybe Text
a} :: DocumentClassifierProperties)

-- | ID for the AWS Key Management Service (KMS) key that Amazon Comprehend
-- uses to encrypt trained custom models. The ModelKmsKeyId can be either
-- of the following formats:
--
-- -   KMS Key ID: @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
--
-- -   Amazon Resource Name (ARN) of a KMS Key:
--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
documentClassifierProperties_modelKmsKeyId :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.Text)
documentClassifierProperties_modelKmsKeyId :: (Maybe Text -> f (Maybe Text))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_modelKmsKeyId = (DocumentClassifierProperties -> Maybe Text)
-> (DocumentClassifierProperties
    -> Maybe Text -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe Text
modelKmsKeyId :: Maybe Text
$sel:modelKmsKeyId:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe Text
modelKmsKeyId} -> Maybe Text
modelKmsKeyId) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe Text
a -> DocumentClassifierProperties
s {$sel:modelKmsKeyId:DocumentClassifierProperties' :: Maybe Text
modelKmsKeyId = Maybe Text
a} :: DocumentClassifierProperties)

-- | Indicates the mode in which the specific classifier was trained. This
-- also indicates the format of input documents and the format of the
-- confusion matrix. Each classifier can only be trained in one mode and
-- this cannot be changed once the classifier is trained.
documentClassifierProperties_mode :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe DocumentClassifierMode)
documentClassifierProperties_mode :: (Maybe DocumentClassifierMode -> f (Maybe DocumentClassifierMode))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_mode = (DocumentClassifierProperties -> Maybe DocumentClassifierMode)
-> (DocumentClassifierProperties
    -> Maybe DocumentClassifierMode -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe DocumentClassifierMode)
     (Maybe DocumentClassifierMode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe DocumentClassifierMode
mode :: Maybe DocumentClassifierMode
$sel:mode:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe DocumentClassifierMode
mode} -> Maybe DocumentClassifierMode
mode) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe DocumentClassifierMode
a -> DocumentClassifierProperties
s {$sel:mode:DocumentClassifierProperties' :: Maybe DocumentClassifierMode
mode = Maybe DocumentClassifierMode
a} :: DocumentClassifierProperties)

-- | The input data configuration that you supplied when you created the
-- document classifier for training.
documentClassifierProperties_inputDataConfig :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe DocumentClassifierInputDataConfig)
documentClassifierProperties_inputDataConfig :: (Maybe DocumentClassifierInputDataConfig
 -> f (Maybe DocumentClassifierInputDataConfig))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_inputDataConfig = (DocumentClassifierProperties
 -> Maybe DocumentClassifierInputDataConfig)
-> (DocumentClassifierProperties
    -> Maybe DocumentClassifierInputDataConfig
    -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe DocumentClassifierInputDataConfig)
     (Maybe DocumentClassifierInputDataConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe DocumentClassifierInputDataConfig
inputDataConfig :: Maybe DocumentClassifierInputDataConfig
$sel:inputDataConfig:DocumentClassifierProperties' :: DocumentClassifierProperties
-> Maybe DocumentClassifierInputDataConfig
inputDataConfig} -> Maybe DocumentClassifierInputDataConfig
inputDataConfig) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe DocumentClassifierInputDataConfig
a -> DocumentClassifierProperties
s {$sel:inputDataConfig:DocumentClassifierProperties' :: Maybe DocumentClassifierInputDataConfig
inputDataConfig = Maybe DocumentClassifierInputDataConfig
a} :: DocumentClassifierProperties)

-- | Configuration parameters for a private Virtual Private Cloud (VPC)
-- containing the resources you are using for your custom classifier. For
-- more information, see
-- <https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html Amazon VPC>.
documentClassifierProperties_vpcConfig :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe VpcConfig)
documentClassifierProperties_vpcConfig :: (Maybe VpcConfig -> f (Maybe VpcConfig))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_vpcConfig = (DocumentClassifierProperties -> Maybe VpcConfig)
-> (DocumentClassifierProperties
    -> Maybe VpcConfig -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe VpcConfig)
     (Maybe VpcConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe VpcConfig
vpcConfig :: Maybe VpcConfig
$sel:vpcConfig:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe VpcConfig
vpcConfig} -> Maybe VpcConfig
vpcConfig) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe VpcConfig
a -> DocumentClassifierProperties
s {$sel:vpcConfig:DocumentClassifierProperties' :: Maybe VpcConfig
vpcConfig = Maybe VpcConfig
a} :: DocumentClassifierProperties)

-- | ID for the AWS Key Management Service (KMS) key that Amazon Comprehend
-- uses to encrypt data on the storage volume attached to the ML compute
-- instance(s) that process the analysis job. The VolumeKmsKeyId can be
-- either of the following formats:
--
-- -   KMS Key ID: @\"1234abcd-12ab-34cd-56ef-1234567890ab\"@
--
-- -   Amazon Resource Name (ARN) of a KMS Key:
--     @\"arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab\"@
documentClassifierProperties_volumeKmsKeyId :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.Text)
documentClassifierProperties_volumeKmsKeyId :: (Maybe Text -> f (Maybe Text))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_volumeKmsKeyId = (DocumentClassifierProperties -> Maybe Text)
-> (DocumentClassifierProperties
    -> Maybe Text -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe Text
volumeKmsKeyId :: Maybe Text
$sel:volumeKmsKeyId:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe Text
volumeKmsKeyId} -> Maybe Text
volumeKmsKeyId) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe Text
a -> DocumentClassifierProperties
s {$sel:volumeKmsKeyId:DocumentClassifierProperties' :: Maybe Text
volumeKmsKeyId = Maybe Text
a} :: DocumentClassifierProperties)

-- | The time that training the document classifier completed.
documentClassifierProperties_endTime :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.UTCTime)
documentClassifierProperties_endTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_endTime = (DocumentClassifierProperties -> Maybe POSIX)
-> (DocumentClassifierProperties
    -> Maybe POSIX -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe POSIX
endTime :: Maybe POSIX
$sel:endTime:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe POSIX
endTime} -> Maybe POSIX
endTime) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe POSIX
a -> DocumentClassifierProperties
s {$sel:endTime:DocumentClassifierProperties' :: Maybe POSIX
endTime = Maybe POSIX
a} :: DocumentClassifierProperties) ((Maybe POSIX -> f (Maybe POSIX))
 -> DocumentClassifierProperties -> f DocumentClassifierProperties)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentClassifierProperties
-> f DocumentClassifierProperties
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Provides output results configuration parameters for custom classifier
-- jobs.
documentClassifierProperties_outputDataConfig :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe DocumentClassifierOutputDataConfig)
documentClassifierProperties_outputDataConfig :: (Maybe DocumentClassifierOutputDataConfig
 -> f (Maybe DocumentClassifierOutputDataConfig))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_outputDataConfig = (DocumentClassifierProperties
 -> Maybe DocumentClassifierOutputDataConfig)
-> (DocumentClassifierProperties
    -> Maybe DocumentClassifierOutputDataConfig
    -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe DocumentClassifierOutputDataConfig)
     (Maybe DocumentClassifierOutputDataConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe DocumentClassifierOutputDataConfig
outputDataConfig :: Maybe DocumentClassifierOutputDataConfig
$sel:outputDataConfig:DocumentClassifierProperties' :: DocumentClassifierProperties
-> Maybe DocumentClassifierOutputDataConfig
outputDataConfig} -> Maybe DocumentClassifierOutputDataConfig
outputDataConfig) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe DocumentClassifierOutputDataConfig
a -> DocumentClassifierProperties
s {$sel:outputDataConfig:DocumentClassifierProperties' :: Maybe DocumentClassifierOutputDataConfig
outputDataConfig = Maybe DocumentClassifierOutputDataConfig
a} :: DocumentClassifierProperties)

-- | Indicates the time when the training starts on documentation
-- classifiers. You are billed for the time interval between this time and
-- the value of TrainingEndTime.
documentClassifierProperties_trainingStartTime :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.UTCTime)
documentClassifierProperties_trainingStartTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_trainingStartTime = (DocumentClassifierProperties -> Maybe POSIX)
-> (DocumentClassifierProperties
    -> Maybe POSIX -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe POSIX
trainingStartTime :: Maybe POSIX
$sel:trainingStartTime:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe POSIX
trainingStartTime} -> Maybe POSIX
trainingStartTime) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe POSIX
a -> DocumentClassifierProperties
s {$sel:trainingStartTime:DocumentClassifierProperties' :: Maybe POSIX
trainingStartTime = Maybe POSIX
a} :: DocumentClassifierProperties) ((Maybe POSIX -> f (Maybe POSIX))
 -> DocumentClassifierProperties -> f DocumentClassifierProperties)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentClassifierProperties
-> f DocumentClassifierProperties
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The Amazon Resource Name (ARN) of the AWS Identity and Management (IAM)
-- role that grants Amazon Comprehend read access to your input data.
documentClassifierProperties_dataAccessRoleArn :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.Text)
documentClassifierProperties_dataAccessRoleArn :: (Maybe Text -> f (Maybe Text))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_dataAccessRoleArn = (DocumentClassifierProperties -> Maybe Text)
-> (DocumentClassifierProperties
    -> Maybe Text -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe Text
dataAccessRoleArn :: Maybe Text
$sel:dataAccessRoleArn:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe Text
dataAccessRoleArn} -> Maybe Text
dataAccessRoleArn) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe Text
a -> DocumentClassifierProperties
s {$sel:dataAccessRoleArn:DocumentClassifierProperties' :: Maybe Text
dataAccessRoleArn = Maybe Text
a} :: DocumentClassifierProperties)

-- | Additional information about the status of the classifier.
documentClassifierProperties_message :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.Text)
documentClassifierProperties_message :: (Maybe Text -> f (Maybe Text))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_message = (DocumentClassifierProperties -> Maybe Text)
-> (DocumentClassifierProperties
    -> Maybe Text -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe Text
message :: Maybe Text
$sel:message:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe Text
message} -> Maybe Text
message) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe Text
a -> DocumentClassifierProperties
s {$sel:message:DocumentClassifierProperties' :: Maybe Text
message = Maybe Text
a} :: DocumentClassifierProperties)

-- | The time that the document classifier was submitted for training.
documentClassifierProperties_submitTime :: Lens.Lens' DocumentClassifierProperties (Prelude.Maybe Prelude.UTCTime)
documentClassifierProperties_submitTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentClassifierProperties -> f DocumentClassifierProperties
documentClassifierProperties_submitTime = (DocumentClassifierProperties -> Maybe POSIX)
-> (DocumentClassifierProperties
    -> Maybe POSIX -> DocumentClassifierProperties)
-> Lens
     DocumentClassifierProperties
     DocumentClassifierProperties
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentClassifierProperties' {Maybe POSIX
submitTime :: Maybe POSIX
$sel:submitTime:DocumentClassifierProperties' :: DocumentClassifierProperties -> Maybe POSIX
submitTime} -> Maybe POSIX
submitTime) (\s :: DocumentClassifierProperties
s@DocumentClassifierProperties' {} Maybe POSIX
a -> DocumentClassifierProperties
s {$sel:submitTime:DocumentClassifierProperties' :: Maybe POSIX
submitTime = Maybe POSIX
a} :: DocumentClassifierProperties) ((Maybe POSIX -> f (Maybe POSIX))
 -> DocumentClassifierProperties -> f DocumentClassifierProperties)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentClassifierProperties
-> f DocumentClassifierProperties
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

instance Core.FromJSON DocumentClassifierProperties where
  parseJSON :: Value -> Parser DocumentClassifierProperties
parseJSON =
    String
-> (Object -> Parser DocumentClassifierProperties)
-> Value
-> Parser DocumentClassifierProperties
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"DocumentClassifierProperties"
      ( \Object
x ->
          Maybe ModelStatus
-> Maybe LanguageCode
-> Maybe (Sensitive ClassifierMetadata)
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe DocumentClassifierMode
-> Maybe DocumentClassifierInputDataConfig
-> Maybe VpcConfig
-> Maybe Text
-> Maybe POSIX
-> Maybe DocumentClassifierOutputDataConfig
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> DocumentClassifierProperties
DocumentClassifierProperties'
            (Maybe ModelStatus
 -> Maybe LanguageCode
 -> Maybe (Sensitive ClassifierMetadata)
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe DocumentClassifierMode
 -> Maybe DocumentClassifierInputDataConfig
 -> Maybe VpcConfig
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe DocumentClassifierOutputDataConfig
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Text
 -> Maybe POSIX
 -> DocumentClassifierProperties)
-> Parser (Maybe ModelStatus)
-> Parser
     (Maybe LanguageCode
      -> Maybe (Sensitive ClassifierMetadata)
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentClassifierMode
      -> Maybe DocumentClassifierInputDataConfig
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe ModelStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Status")
            Parser
  (Maybe LanguageCode
   -> Maybe (Sensitive ClassifierMetadata)
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentClassifierMode
   -> Maybe DocumentClassifierInputDataConfig
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe LanguageCode)
-> Parser
     (Maybe (Sensitive ClassifierMetadata)
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentClassifierMode
      -> Maybe DocumentClassifierInputDataConfig
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LanguageCode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LanguageCode")
            Parser
  (Maybe (Sensitive ClassifierMetadata)
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentClassifierMode
   -> Maybe DocumentClassifierInputDataConfig
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe (Sensitive ClassifierMetadata))
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentClassifierMode
      -> Maybe DocumentClassifierInputDataConfig
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Sensitive ClassifierMetadata))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClassifierMetadata")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentClassifierMode
   -> Maybe DocumentClassifierInputDataConfig
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentClassifierMode
      -> Maybe DocumentClassifierInputDataConfig
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrainingEndTime")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentClassifierMode
   -> Maybe DocumentClassifierInputDataConfig
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe DocumentClassifierMode
      -> Maybe DocumentClassifierInputDataConfig
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DocumentClassifierArn")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe DocumentClassifierMode
   -> Maybe DocumentClassifierInputDataConfig
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe DocumentClassifierMode
      -> Maybe DocumentClassifierInputDataConfig
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VersionName")
            Parser
  (Maybe Text
   -> Maybe DocumentClassifierMode
   -> Maybe DocumentClassifierInputDataConfig
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe Text)
-> Parser
     (Maybe DocumentClassifierMode
      -> Maybe DocumentClassifierInputDataConfig
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ModelKmsKeyId")
            Parser
  (Maybe DocumentClassifierMode
   -> Maybe DocumentClassifierInputDataConfig
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe DocumentClassifierMode)
-> Parser
     (Maybe DocumentClassifierInputDataConfig
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DocumentClassifierMode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Mode")
            Parser
  (Maybe DocumentClassifierInputDataConfig
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe DocumentClassifierInputDataConfig)
-> Parser
     (Maybe VpcConfig
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DocumentClassifierInputDataConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"InputDataConfig")
            Parser
  (Maybe VpcConfig
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe VpcConfig)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe VpcConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VpcConfig")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VolumeKmsKeyId")
            Parser
  (Maybe POSIX
   -> Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe DocumentClassifierOutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EndTime")
            Parser
  (Maybe DocumentClassifierOutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe DocumentClassifierOutputDataConfig)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DocumentClassifierOutputDataConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"OutputDataConfig")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> DocumentClassifierProperties)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe Text -> Maybe POSIX -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrainingStartTime")
            Parser
  (Maybe Text
   -> Maybe Text -> Maybe POSIX -> DocumentClassifierProperties)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> Maybe POSIX -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DataAccessRoleArn")
            Parser (Maybe Text -> Maybe POSIX -> DocumentClassifierProperties)
-> Parser (Maybe Text)
-> Parser (Maybe POSIX -> DocumentClassifierProperties)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Message")
            Parser (Maybe POSIX -> DocumentClassifierProperties)
-> Parser (Maybe POSIX) -> Parser DocumentClassifierProperties
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SubmitTime")
      )

instance
  Prelude.Hashable
    DocumentClassifierProperties

instance Prelude.NFData DocumentClassifierProperties