{-# 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.Translate.Types.TerminologyProperties
-- 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.Translate.Types.TerminologyProperties 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.Translate.Types.Directionality
import Amazonka.Translate.Types.EncryptionKey
import Amazonka.Translate.Types.TerminologyDataFormat

-- | The properties of the custom terminology.
--
-- /See:/ 'newTerminologyProperties' smart constructor.
data TerminologyProperties = TerminologyProperties'
  { -- | The Amazon Resource Name (ARN) of the custom terminology.
    TerminologyProperties -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The time at which the custom terminology was created, based on the
    -- timestamp.
    TerminologyProperties -> Maybe POSIX
createdAt :: Prelude.Maybe Data.POSIX,
    -- | The description of the custom terminology properties.
    TerminologyProperties -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The directionality of your terminology resource indicates whether it has
    -- one source language (uni-directional) or multiple (multi-directional).
    --
    -- [UNI]
    --     The terminology resource has one source language (the first column
    --     in a CSV file), and all of its other languages are target languages.
    --
    -- [MULTI]
    --     Any language in the terminology resource can be the source language.
    TerminologyProperties -> Maybe Directionality
directionality :: Prelude.Maybe Directionality,
    -- | The encryption key for the custom terminology.
    TerminologyProperties -> Maybe EncryptionKey
encryptionKey :: Prelude.Maybe EncryptionKey,
    -- | The format of the custom terminology input file.
    TerminologyProperties -> Maybe TerminologyDataFormat
format :: Prelude.Maybe TerminologyDataFormat,
    -- | The time at which the custom terminology was last update, based on the
    -- timestamp.
    TerminologyProperties -> Maybe POSIX
lastUpdatedAt :: Prelude.Maybe Data.POSIX,
    -- | Additional information from Amazon Translate about the terminology
    -- resource.
    TerminologyProperties -> Maybe Text
message :: Prelude.Maybe Prelude.Text,
    -- | The name of the custom terminology.
    TerminologyProperties -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The size of the file used when importing a custom terminology.
    TerminologyProperties -> Maybe Int
sizeBytes :: Prelude.Maybe Prelude.Int,
    -- | The number of terms in the input file that Amazon Translate skipped when
    -- you created or updated the terminology resource.
    TerminologyProperties -> Maybe Int
skippedTermCount :: Prelude.Maybe Prelude.Int,
    -- | The language code for the source text of the translation request for
    -- which the custom terminology is being used.
    TerminologyProperties -> Maybe Text
sourceLanguageCode :: Prelude.Maybe Prelude.Text,
    -- | The language codes for the target languages available with the custom
    -- terminology resource. All possible target languages are returned in
    -- array.
    TerminologyProperties -> Maybe [Text]
targetLanguageCodes :: Prelude.Maybe [Prelude.Text],
    -- | The number of terms included in the custom terminology.
    TerminologyProperties -> Maybe Int
termCount :: Prelude.Maybe Prelude.Int
  }
  deriving (TerminologyProperties -> TerminologyProperties -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TerminologyProperties -> TerminologyProperties -> Bool
$c/= :: TerminologyProperties -> TerminologyProperties -> Bool
== :: TerminologyProperties -> TerminologyProperties -> Bool
$c== :: TerminologyProperties -> TerminologyProperties -> Bool
Prelude.Eq, ReadPrec [TerminologyProperties]
ReadPrec TerminologyProperties
Int -> ReadS TerminologyProperties
ReadS [TerminologyProperties]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TerminologyProperties]
$creadListPrec :: ReadPrec [TerminologyProperties]
readPrec :: ReadPrec TerminologyProperties
$creadPrec :: ReadPrec TerminologyProperties
readList :: ReadS [TerminologyProperties]
$creadList :: ReadS [TerminologyProperties]
readsPrec :: Int -> ReadS TerminologyProperties
$creadsPrec :: Int -> ReadS TerminologyProperties
Prelude.Read, Int -> TerminologyProperties -> ShowS
[TerminologyProperties] -> ShowS
TerminologyProperties -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TerminologyProperties] -> ShowS
$cshowList :: [TerminologyProperties] -> ShowS
show :: TerminologyProperties -> String
$cshow :: TerminologyProperties -> String
showsPrec :: Int -> TerminologyProperties -> ShowS
$cshowsPrec :: Int -> TerminologyProperties -> ShowS
Prelude.Show, forall x. Rep TerminologyProperties x -> TerminologyProperties
forall x. TerminologyProperties -> Rep TerminologyProperties x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TerminologyProperties x -> TerminologyProperties
$cfrom :: forall x. TerminologyProperties -> Rep TerminologyProperties x
Prelude.Generic)

-- |
-- Create a value of 'TerminologyProperties' 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:
--
-- 'arn', 'terminologyProperties_arn' - The Amazon Resource Name (ARN) of the custom terminology.
--
-- 'createdAt', 'terminologyProperties_createdAt' - The time at which the custom terminology was created, based on the
-- timestamp.
--
-- 'description', 'terminologyProperties_description' - The description of the custom terminology properties.
--
-- 'directionality', 'terminologyProperties_directionality' - The directionality of your terminology resource indicates whether it has
-- one source language (uni-directional) or multiple (multi-directional).
--
-- [UNI]
--     The terminology resource has one source language (the first column
--     in a CSV file), and all of its other languages are target languages.
--
-- [MULTI]
--     Any language in the terminology resource can be the source language.
--
-- 'encryptionKey', 'terminologyProperties_encryptionKey' - The encryption key for the custom terminology.
--
-- 'format', 'terminologyProperties_format' - The format of the custom terminology input file.
--
-- 'lastUpdatedAt', 'terminologyProperties_lastUpdatedAt' - The time at which the custom terminology was last update, based on the
-- timestamp.
--
-- 'message', 'terminologyProperties_message' - Additional information from Amazon Translate about the terminology
-- resource.
--
-- 'name', 'terminologyProperties_name' - The name of the custom terminology.
--
-- 'sizeBytes', 'terminologyProperties_sizeBytes' - The size of the file used when importing a custom terminology.
--
-- 'skippedTermCount', 'terminologyProperties_skippedTermCount' - The number of terms in the input file that Amazon Translate skipped when
-- you created or updated the terminology resource.
--
-- 'sourceLanguageCode', 'terminologyProperties_sourceLanguageCode' - The language code for the source text of the translation request for
-- which the custom terminology is being used.
--
-- 'targetLanguageCodes', 'terminologyProperties_targetLanguageCodes' - The language codes for the target languages available with the custom
-- terminology resource. All possible target languages are returned in
-- array.
--
-- 'termCount', 'terminologyProperties_termCount' - The number of terms included in the custom terminology.
newTerminologyProperties ::
  TerminologyProperties
newTerminologyProperties :: TerminologyProperties
newTerminologyProperties =
  TerminologyProperties'
    { $sel:arn:TerminologyProperties' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:TerminologyProperties' :: Maybe POSIX
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:description:TerminologyProperties' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:directionality:TerminologyProperties' :: Maybe Directionality
directionality = forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionKey:TerminologyProperties' :: Maybe EncryptionKey
encryptionKey = forall a. Maybe a
Prelude.Nothing,
      $sel:format:TerminologyProperties' :: Maybe TerminologyDataFormat
format = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedAt:TerminologyProperties' :: Maybe POSIX
lastUpdatedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:message:TerminologyProperties' :: Maybe Text
message = forall a. Maybe a
Prelude.Nothing,
      $sel:name:TerminologyProperties' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:sizeBytes:TerminologyProperties' :: Maybe Int
sizeBytes = forall a. Maybe a
Prelude.Nothing,
      $sel:skippedTermCount:TerminologyProperties' :: Maybe Int
skippedTermCount = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceLanguageCode:TerminologyProperties' :: Maybe Text
sourceLanguageCode = forall a. Maybe a
Prelude.Nothing,
      $sel:targetLanguageCodes:TerminologyProperties' :: Maybe [Text]
targetLanguageCodes = forall a. Maybe a
Prelude.Nothing,
      $sel:termCount:TerminologyProperties' :: Maybe Int
termCount = forall a. Maybe a
Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the custom terminology.
terminologyProperties_arn :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.Text)
terminologyProperties_arn :: Lens' TerminologyProperties (Maybe Text)
terminologyProperties_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe Text
arn :: Maybe Text
$sel:arn:TerminologyProperties' :: TerminologyProperties -> Maybe Text
arn} -> Maybe Text
arn) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe Text
a -> TerminologyProperties
s {$sel:arn:TerminologyProperties' :: Maybe Text
arn = Maybe Text
a} :: TerminologyProperties)

-- | The time at which the custom terminology was created, based on the
-- timestamp.
terminologyProperties_createdAt :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.UTCTime)
terminologyProperties_createdAt :: Lens' TerminologyProperties (Maybe UTCTime)
terminologyProperties_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:TerminologyProperties' :: TerminologyProperties -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe POSIX
a -> TerminologyProperties
s {$sel:createdAt:TerminologyProperties' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: TerminologyProperties) 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 description of the custom terminology properties.
terminologyProperties_description :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.Text)
terminologyProperties_description :: Lens' TerminologyProperties (Maybe Text)
terminologyProperties_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe Text
description :: Maybe Text
$sel:description:TerminologyProperties' :: TerminologyProperties -> Maybe Text
description} -> Maybe Text
description) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe Text
a -> TerminologyProperties
s {$sel:description:TerminologyProperties' :: Maybe Text
description = Maybe Text
a} :: TerminologyProperties)

-- | The directionality of your terminology resource indicates whether it has
-- one source language (uni-directional) or multiple (multi-directional).
--
-- [UNI]
--     The terminology resource has one source language (the first column
--     in a CSV file), and all of its other languages are target languages.
--
-- [MULTI]
--     Any language in the terminology resource can be the source language.
terminologyProperties_directionality :: Lens.Lens' TerminologyProperties (Prelude.Maybe Directionality)
terminologyProperties_directionality :: Lens' TerminologyProperties (Maybe Directionality)
terminologyProperties_directionality = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe Directionality
directionality :: Maybe Directionality
$sel:directionality:TerminologyProperties' :: TerminologyProperties -> Maybe Directionality
directionality} -> Maybe Directionality
directionality) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe Directionality
a -> TerminologyProperties
s {$sel:directionality:TerminologyProperties' :: Maybe Directionality
directionality = Maybe Directionality
a} :: TerminologyProperties)

-- | The encryption key for the custom terminology.
terminologyProperties_encryptionKey :: Lens.Lens' TerminologyProperties (Prelude.Maybe EncryptionKey)
terminologyProperties_encryptionKey :: Lens' TerminologyProperties (Maybe EncryptionKey)
terminologyProperties_encryptionKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe EncryptionKey
encryptionKey :: Maybe EncryptionKey
$sel:encryptionKey:TerminologyProperties' :: TerminologyProperties -> Maybe EncryptionKey
encryptionKey} -> Maybe EncryptionKey
encryptionKey) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe EncryptionKey
a -> TerminologyProperties
s {$sel:encryptionKey:TerminologyProperties' :: Maybe EncryptionKey
encryptionKey = Maybe EncryptionKey
a} :: TerminologyProperties)

-- | The format of the custom terminology input file.
terminologyProperties_format :: Lens.Lens' TerminologyProperties (Prelude.Maybe TerminologyDataFormat)
terminologyProperties_format :: Lens' TerminologyProperties (Maybe TerminologyDataFormat)
terminologyProperties_format = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe TerminologyDataFormat
format :: Maybe TerminologyDataFormat
$sel:format:TerminologyProperties' :: TerminologyProperties -> Maybe TerminologyDataFormat
format} -> Maybe TerminologyDataFormat
format) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe TerminologyDataFormat
a -> TerminologyProperties
s {$sel:format:TerminologyProperties' :: Maybe TerminologyDataFormat
format = Maybe TerminologyDataFormat
a} :: TerminologyProperties)

-- | The time at which the custom terminology was last update, based on the
-- timestamp.
terminologyProperties_lastUpdatedAt :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.UTCTime)
terminologyProperties_lastUpdatedAt :: Lens' TerminologyProperties (Maybe UTCTime)
terminologyProperties_lastUpdatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe POSIX
lastUpdatedAt :: Maybe POSIX
$sel:lastUpdatedAt:TerminologyProperties' :: TerminologyProperties -> Maybe POSIX
lastUpdatedAt} -> Maybe POSIX
lastUpdatedAt) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe POSIX
a -> TerminologyProperties
s {$sel:lastUpdatedAt:TerminologyProperties' :: Maybe POSIX
lastUpdatedAt = Maybe POSIX
a} :: TerminologyProperties) 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

-- | Additional information from Amazon Translate about the terminology
-- resource.
terminologyProperties_message :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.Text)
terminologyProperties_message :: Lens' TerminologyProperties (Maybe Text)
terminologyProperties_message = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe Text
message :: Maybe Text
$sel:message:TerminologyProperties' :: TerminologyProperties -> Maybe Text
message} -> Maybe Text
message) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe Text
a -> TerminologyProperties
s {$sel:message:TerminologyProperties' :: Maybe Text
message = Maybe Text
a} :: TerminologyProperties)

-- | The name of the custom terminology.
terminologyProperties_name :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.Text)
terminologyProperties_name :: Lens' TerminologyProperties (Maybe Text)
terminologyProperties_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe Text
name :: Maybe Text
$sel:name:TerminologyProperties' :: TerminologyProperties -> Maybe Text
name} -> Maybe Text
name) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe Text
a -> TerminologyProperties
s {$sel:name:TerminologyProperties' :: Maybe Text
name = Maybe Text
a} :: TerminologyProperties)

-- | The size of the file used when importing a custom terminology.
terminologyProperties_sizeBytes :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.Int)
terminologyProperties_sizeBytes :: Lens' TerminologyProperties (Maybe Int)
terminologyProperties_sizeBytes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe Int
sizeBytes :: Maybe Int
$sel:sizeBytes:TerminologyProperties' :: TerminologyProperties -> Maybe Int
sizeBytes} -> Maybe Int
sizeBytes) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe Int
a -> TerminologyProperties
s {$sel:sizeBytes:TerminologyProperties' :: Maybe Int
sizeBytes = Maybe Int
a} :: TerminologyProperties)

-- | The number of terms in the input file that Amazon Translate skipped when
-- you created or updated the terminology resource.
terminologyProperties_skippedTermCount :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.Int)
terminologyProperties_skippedTermCount :: Lens' TerminologyProperties (Maybe Int)
terminologyProperties_skippedTermCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe Int
skippedTermCount :: Maybe Int
$sel:skippedTermCount:TerminologyProperties' :: TerminologyProperties -> Maybe Int
skippedTermCount} -> Maybe Int
skippedTermCount) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe Int
a -> TerminologyProperties
s {$sel:skippedTermCount:TerminologyProperties' :: Maybe Int
skippedTermCount = Maybe Int
a} :: TerminologyProperties)

-- | The language code for the source text of the translation request for
-- which the custom terminology is being used.
terminologyProperties_sourceLanguageCode :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.Text)
terminologyProperties_sourceLanguageCode :: Lens' TerminologyProperties (Maybe Text)
terminologyProperties_sourceLanguageCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe Text
sourceLanguageCode :: Maybe Text
$sel:sourceLanguageCode:TerminologyProperties' :: TerminologyProperties -> Maybe Text
sourceLanguageCode} -> Maybe Text
sourceLanguageCode) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe Text
a -> TerminologyProperties
s {$sel:sourceLanguageCode:TerminologyProperties' :: Maybe Text
sourceLanguageCode = Maybe Text
a} :: TerminologyProperties)

-- | The language codes for the target languages available with the custom
-- terminology resource. All possible target languages are returned in
-- array.
terminologyProperties_targetLanguageCodes :: Lens.Lens' TerminologyProperties (Prelude.Maybe [Prelude.Text])
terminologyProperties_targetLanguageCodes :: Lens' TerminologyProperties (Maybe [Text])
terminologyProperties_targetLanguageCodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe [Text]
targetLanguageCodes :: Maybe [Text]
$sel:targetLanguageCodes:TerminologyProperties' :: TerminologyProperties -> Maybe [Text]
targetLanguageCodes} -> Maybe [Text]
targetLanguageCodes) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe [Text]
a -> TerminologyProperties
s {$sel:targetLanguageCodes:TerminologyProperties' :: Maybe [Text]
targetLanguageCodes = Maybe [Text]
a} :: TerminologyProperties) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The number of terms included in the custom terminology.
terminologyProperties_termCount :: Lens.Lens' TerminologyProperties (Prelude.Maybe Prelude.Int)
terminologyProperties_termCount :: Lens' TerminologyProperties (Maybe Int)
terminologyProperties_termCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TerminologyProperties' {Maybe Int
termCount :: Maybe Int
$sel:termCount:TerminologyProperties' :: TerminologyProperties -> Maybe Int
termCount} -> Maybe Int
termCount) (\s :: TerminologyProperties
s@TerminologyProperties' {} Maybe Int
a -> TerminologyProperties
s {$sel:termCount:TerminologyProperties' :: Maybe Int
termCount = Maybe Int
a} :: TerminologyProperties)

instance Data.FromJSON TerminologyProperties where
  parseJSON :: Value -> Parser TerminologyProperties
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"TerminologyProperties"
      ( \Object
x ->
          Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Directionality
-> Maybe EncryptionKey
-> Maybe TerminologyDataFormat
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe [Text]
-> Maybe Int
-> TerminologyProperties
TerminologyProperties'
            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
"Arn")
            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
"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
"Description")
            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
"Directionality")
            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
"EncryptionKey")
            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
"Format")
            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
"LastUpdatedAt")
            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
"Message")
            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
"Name")
            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
"SizeBytes")
            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
"SkippedTermCount")
            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
"SourceLanguageCode")
            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
"TargetLanguageCodes"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            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
"TermCount")
      )

instance Prelude.Hashable TerminologyProperties where
  hashWithSalt :: Int -> TerminologyProperties -> Int
hashWithSalt Int
_salt TerminologyProperties' {Maybe Int
Maybe [Text]
Maybe Text
Maybe POSIX
Maybe Directionality
Maybe EncryptionKey
Maybe TerminologyDataFormat
termCount :: Maybe Int
targetLanguageCodes :: Maybe [Text]
sourceLanguageCode :: Maybe Text
skippedTermCount :: Maybe Int
sizeBytes :: Maybe Int
name :: Maybe Text
message :: Maybe Text
lastUpdatedAt :: Maybe POSIX
format :: Maybe TerminologyDataFormat
encryptionKey :: Maybe EncryptionKey
directionality :: Maybe Directionality
description :: Maybe Text
createdAt :: Maybe POSIX
arn :: Maybe Text
$sel:termCount:TerminologyProperties' :: TerminologyProperties -> Maybe Int
$sel:targetLanguageCodes:TerminologyProperties' :: TerminologyProperties -> Maybe [Text]
$sel:sourceLanguageCode:TerminologyProperties' :: TerminologyProperties -> Maybe Text
$sel:skippedTermCount:TerminologyProperties' :: TerminologyProperties -> Maybe Int
$sel:sizeBytes:TerminologyProperties' :: TerminologyProperties -> Maybe Int
$sel:name:TerminologyProperties' :: TerminologyProperties -> Maybe Text
$sel:message:TerminologyProperties' :: TerminologyProperties -> Maybe Text
$sel:lastUpdatedAt:TerminologyProperties' :: TerminologyProperties -> Maybe POSIX
$sel:format:TerminologyProperties' :: TerminologyProperties -> Maybe TerminologyDataFormat
$sel:encryptionKey:TerminologyProperties' :: TerminologyProperties -> Maybe EncryptionKey
$sel:directionality:TerminologyProperties' :: TerminologyProperties -> Maybe Directionality
$sel:description:TerminologyProperties' :: TerminologyProperties -> Maybe Text
$sel:createdAt:TerminologyProperties' :: TerminologyProperties -> Maybe POSIX
$sel:arn:TerminologyProperties' :: TerminologyProperties -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Directionality
directionality
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EncryptionKey
encryptionKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TerminologyDataFormat
format
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastUpdatedAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
message
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
sizeBytes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
skippedTermCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceLanguageCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
targetLanguageCodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
termCount

instance Prelude.NFData TerminologyProperties where
  rnf :: TerminologyProperties -> ()
rnf TerminologyProperties' {Maybe Int
Maybe [Text]
Maybe Text
Maybe POSIX
Maybe Directionality
Maybe EncryptionKey
Maybe TerminologyDataFormat
termCount :: Maybe Int
targetLanguageCodes :: Maybe [Text]
sourceLanguageCode :: Maybe Text
skippedTermCount :: Maybe Int
sizeBytes :: Maybe Int
name :: Maybe Text
message :: Maybe Text
lastUpdatedAt :: Maybe POSIX
format :: Maybe TerminologyDataFormat
encryptionKey :: Maybe EncryptionKey
directionality :: Maybe Directionality
description :: Maybe Text
createdAt :: Maybe POSIX
arn :: Maybe Text
$sel:termCount:TerminologyProperties' :: TerminologyProperties -> Maybe Int
$sel:targetLanguageCodes:TerminologyProperties' :: TerminologyProperties -> Maybe [Text]
$sel:sourceLanguageCode:TerminologyProperties' :: TerminologyProperties -> Maybe Text
$sel:skippedTermCount:TerminologyProperties' :: TerminologyProperties -> Maybe Int
$sel:sizeBytes:TerminologyProperties' :: TerminologyProperties -> Maybe Int
$sel:name:TerminologyProperties' :: TerminologyProperties -> Maybe Text
$sel:message:TerminologyProperties' :: TerminologyProperties -> Maybe Text
$sel:lastUpdatedAt:TerminologyProperties' :: TerminologyProperties -> Maybe POSIX
$sel:format:TerminologyProperties' :: TerminologyProperties -> Maybe TerminologyDataFormat
$sel:encryptionKey:TerminologyProperties' :: TerminologyProperties -> Maybe EncryptionKey
$sel:directionality:TerminologyProperties' :: TerminologyProperties -> Maybe Directionality
$sel:description:TerminologyProperties' :: TerminologyProperties -> Maybe Text
$sel:createdAt:TerminologyProperties' :: TerminologyProperties -> Maybe POSIX
$sel:arn:TerminologyProperties' :: TerminologyProperties -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Directionality
directionality
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EncryptionKey
encryptionKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TerminologyDataFormat
format
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdatedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
message
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
sizeBytes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
skippedTermCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceLanguageCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
targetLanguageCodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
termCount