{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Kendra.DescribeThesaurus
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets information about an existing Amazon Kendra thesaurus.
module Amazonka.Kendra.DescribeThesaurus
  ( -- * Creating a Request
    DescribeThesaurus (..),
    newDescribeThesaurus,

    -- * Request Lenses
    describeThesaurus_id,
    describeThesaurus_indexId,

    -- * Destructuring the Response
    DescribeThesaurusResponse (..),
    newDescribeThesaurusResponse,

    -- * Response Lenses
    describeThesaurusResponse_createdAt,
    describeThesaurusResponse_description,
    describeThesaurusResponse_errorMessage,
    describeThesaurusResponse_fileSizeBytes,
    describeThesaurusResponse_id,
    describeThesaurusResponse_indexId,
    describeThesaurusResponse_name,
    describeThesaurusResponse_roleArn,
    describeThesaurusResponse_sourceS3Path,
    describeThesaurusResponse_status,
    describeThesaurusResponse_synonymRuleCount,
    describeThesaurusResponse_termCount,
    describeThesaurusResponse_updatedAt,
    describeThesaurusResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Kendra.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeThesaurus' smart constructor.
data DescribeThesaurus = DescribeThesaurus'
  { -- | The identifier of the thesaurus you want to get information on.
    DescribeThesaurus -> Text
id :: Prelude.Text,
    -- | The identifier of the index for the thesaurus.
    DescribeThesaurus -> Text
indexId :: Prelude.Text
  }
  deriving (DescribeThesaurus -> DescribeThesaurus -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeThesaurus -> DescribeThesaurus -> Bool
$c/= :: DescribeThesaurus -> DescribeThesaurus -> Bool
== :: DescribeThesaurus -> DescribeThesaurus -> Bool
$c== :: DescribeThesaurus -> DescribeThesaurus -> Bool
Prelude.Eq, ReadPrec [DescribeThesaurus]
ReadPrec DescribeThesaurus
Int -> ReadS DescribeThesaurus
ReadS [DescribeThesaurus]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeThesaurus]
$creadListPrec :: ReadPrec [DescribeThesaurus]
readPrec :: ReadPrec DescribeThesaurus
$creadPrec :: ReadPrec DescribeThesaurus
readList :: ReadS [DescribeThesaurus]
$creadList :: ReadS [DescribeThesaurus]
readsPrec :: Int -> ReadS DescribeThesaurus
$creadsPrec :: Int -> ReadS DescribeThesaurus
Prelude.Read, Int -> DescribeThesaurus -> ShowS
[DescribeThesaurus] -> ShowS
DescribeThesaurus -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeThesaurus] -> ShowS
$cshowList :: [DescribeThesaurus] -> ShowS
show :: DescribeThesaurus -> String
$cshow :: DescribeThesaurus -> String
showsPrec :: Int -> DescribeThesaurus -> ShowS
$cshowsPrec :: Int -> DescribeThesaurus -> ShowS
Prelude.Show, forall x. Rep DescribeThesaurus x -> DescribeThesaurus
forall x. DescribeThesaurus -> Rep DescribeThesaurus x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeThesaurus x -> DescribeThesaurus
$cfrom :: forall x. DescribeThesaurus -> Rep DescribeThesaurus x
Prelude.Generic)

-- |
-- Create a value of 'DescribeThesaurus' 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:
--
-- 'id', 'describeThesaurus_id' - The identifier of the thesaurus you want to get information on.
--
-- 'indexId', 'describeThesaurus_indexId' - The identifier of the index for the thesaurus.
newDescribeThesaurus ::
  -- | 'id'
  Prelude.Text ->
  -- | 'indexId'
  Prelude.Text ->
  DescribeThesaurus
newDescribeThesaurus :: Text -> Text -> DescribeThesaurus
newDescribeThesaurus Text
pId_ Text
pIndexId_ =
  DescribeThesaurus' {$sel:id:DescribeThesaurus' :: Text
id = Text
pId_, $sel:indexId:DescribeThesaurus' :: Text
indexId = Text
pIndexId_}

-- | The identifier of the thesaurus you want to get information on.
describeThesaurus_id :: Lens.Lens' DescribeThesaurus Prelude.Text
describeThesaurus_id :: Lens' DescribeThesaurus Text
describeThesaurus_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurus' {Text
id :: Text
$sel:id:DescribeThesaurus' :: DescribeThesaurus -> Text
id} -> Text
id) (\s :: DescribeThesaurus
s@DescribeThesaurus' {} Text
a -> DescribeThesaurus
s {$sel:id:DescribeThesaurus' :: Text
id = Text
a} :: DescribeThesaurus)

-- | The identifier of the index for the thesaurus.
describeThesaurus_indexId :: Lens.Lens' DescribeThesaurus Prelude.Text
describeThesaurus_indexId :: Lens' DescribeThesaurus Text
describeThesaurus_indexId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurus' {Text
indexId :: Text
$sel:indexId:DescribeThesaurus' :: DescribeThesaurus -> Text
indexId} -> Text
indexId) (\s :: DescribeThesaurus
s@DescribeThesaurus' {} Text
a -> DescribeThesaurus
s {$sel:indexId:DescribeThesaurus' :: Text
indexId = Text
a} :: DescribeThesaurus)

instance Core.AWSRequest DescribeThesaurus where
  type
    AWSResponse DescribeThesaurus =
      DescribeThesaurusResponse
  request :: (Service -> Service)
-> DescribeThesaurus -> Request DescribeThesaurus
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeThesaurus
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeThesaurus)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Integer
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe S3Path
-> Maybe ThesaurusStatus
-> Maybe Integer
-> Maybe Integer
-> Maybe POSIX
-> Int
-> DescribeThesaurusResponse
DescribeThesaurusResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"CreatedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (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 -> Either String (Maybe a)
Data..?> Key
"ErrorMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"FileSizeBytes")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Id")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"IndexId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (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 -> Either String (Maybe a)
Data..?> Key
"RoleArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"SourceS3Path")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Status")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"SynonymRuleCount")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"TermCount")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"UpdatedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeThesaurus where
  hashWithSalt :: Int -> DescribeThesaurus -> Int
hashWithSalt Int
_salt DescribeThesaurus' {Text
indexId :: Text
id :: Text
$sel:indexId:DescribeThesaurus' :: DescribeThesaurus -> Text
$sel:id:DescribeThesaurus' :: DescribeThesaurus -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
indexId

instance Prelude.NFData DescribeThesaurus where
  rnf :: DescribeThesaurus -> ()
rnf DescribeThesaurus' {Text
indexId :: Text
id :: Text
$sel:indexId:DescribeThesaurus' :: DescribeThesaurus -> Text
$sel:id:DescribeThesaurus' :: DescribeThesaurus -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
id seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
indexId

instance Data.ToHeaders DescribeThesaurus where
  toHeaders :: DescribeThesaurus -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AWSKendraFrontendService.DescribeThesaurus" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeThesaurus where
  toJSON :: DescribeThesaurus -> Value
toJSON DescribeThesaurus' {Text
indexId :: Text
id :: Text
$sel:indexId:DescribeThesaurus' :: DescribeThesaurus -> Text
$sel:id:DescribeThesaurus' :: DescribeThesaurus -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just (Key
"Id" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
id),
            forall a. a -> Maybe a
Prelude.Just (Key
"IndexId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
indexId)
          ]
      )

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

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

-- | /See:/ 'newDescribeThesaurusResponse' smart constructor.
data DescribeThesaurusResponse = DescribeThesaurusResponse'
  { -- | The Unix datetime that the thesaurus was created.
    DescribeThesaurusResponse -> Maybe POSIX
createdAt :: Prelude.Maybe Data.POSIX,
    -- | The thesaurus description.
    DescribeThesaurusResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | When the @Status@ field value is @FAILED@, the @ErrorMessage@ field
    -- provides more information.
    DescribeThesaurusResponse -> Maybe Text
errorMessage :: Prelude.Maybe Prelude.Text,
    -- | The size of the thesaurus file in bytes.
    DescribeThesaurusResponse -> Maybe Integer
fileSizeBytes :: Prelude.Maybe Prelude.Integer,
    -- | The identifier of the thesaurus.
    DescribeThesaurusResponse -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the index for the thesaurus.
    DescribeThesaurusResponse -> Maybe Text
indexId :: Prelude.Maybe Prelude.Text,
    -- | The thesaurus name.
    DescribeThesaurusResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | An IAM role that gives Amazon Kendra permissions to access thesaurus
    -- file specified in @SourceS3Path@.
    DescribeThesaurusResponse -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    DescribeThesaurusResponse -> Maybe S3Path
sourceS3Path :: Prelude.Maybe S3Path,
    -- | The current status of the thesaurus. When the value is @ACTIVE@, queries
    -- are able to use the thesaurus. If the @Status@ field value is @FAILED@,
    -- the @ErrorMessage@ field provides more information.
    --
    -- If the status is @ACTIVE_BUT_UPDATE_FAILED@, it means that Amazon Kendra
    -- could not ingest the new thesaurus file. The old thesaurus file is still
    -- active.
    DescribeThesaurusResponse -> Maybe ThesaurusStatus
status :: Prelude.Maybe ThesaurusStatus,
    -- | The number of synonym rules in the thesaurus file.
    DescribeThesaurusResponse -> Maybe Integer
synonymRuleCount :: Prelude.Maybe Prelude.Integer,
    -- | The number of unique terms in the thesaurus file. For example, the
    -- synonyms @a,b,c@ and @a=>d@, the term count would be 4.
    DescribeThesaurusResponse -> Maybe Integer
termCount :: Prelude.Maybe Prelude.Integer,
    -- | The Unix datetime that the thesaurus was last updated.
    DescribeThesaurusResponse -> Maybe POSIX
updatedAt :: Prelude.Maybe Data.POSIX,
    -- | The response's http status code.
    DescribeThesaurusResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeThesaurusResponse -> DescribeThesaurusResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeThesaurusResponse -> DescribeThesaurusResponse -> Bool
$c/= :: DescribeThesaurusResponse -> DescribeThesaurusResponse -> Bool
== :: DescribeThesaurusResponse -> DescribeThesaurusResponse -> Bool
$c== :: DescribeThesaurusResponse -> DescribeThesaurusResponse -> Bool
Prelude.Eq, ReadPrec [DescribeThesaurusResponse]
ReadPrec DescribeThesaurusResponse
Int -> ReadS DescribeThesaurusResponse
ReadS [DescribeThesaurusResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeThesaurusResponse]
$creadListPrec :: ReadPrec [DescribeThesaurusResponse]
readPrec :: ReadPrec DescribeThesaurusResponse
$creadPrec :: ReadPrec DescribeThesaurusResponse
readList :: ReadS [DescribeThesaurusResponse]
$creadList :: ReadS [DescribeThesaurusResponse]
readsPrec :: Int -> ReadS DescribeThesaurusResponse
$creadsPrec :: Int -> ReadS DescribeThesaurusResponse
Prelude.Read, Int -> DescribeThesaurusResponse -> ShowS
[DescribeThesaurusResponse] -> ShowS
DescribeThesaurusResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeThesaurusResponse] -> ShowS
$cshowList :: [DescribeThesaurusResponse] -> ShowS
show :: DescribeThesaurusResponse -> String
$cshow :: DescribeThesaurusResponse -> String
showsPrec :: Int -> DescribeThesaurusResponse -> ShowS
$cshowsPrec :: Int -> DescribeThesaurusResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeThesaurusResponse x -> DescribeThesaurusResponse
forall x.
DescribeThesaurusResponse -> Rep DescribeThesaurusResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeThesaurusResponse x -> DescribeThesaurusResponse
$cfrom :: forall x.
DescribeThesaurusResponse -> Rep DescribeThesaurusResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeThesaurusResponse' 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', 'describeThesaurusResponse_createdAt' - The Unix datetime that the thesaurus was created.
--
-- 'description', 'describeThesaurusResponse_description' - The thesaurus description.
--
-- 'errorMessage', 'describeThesaurusResponse_errorMessage' - When the @Status@ field value is @FAILED@, the @ErrorMessage@ field
-- provides more information.
--
-- 'fileSizeBytes', 'describeThesaurusResponse_fileSizeBytes' - The size of the thesaurus file in bytes.
--
-- 'id', 'describeThesaurusResponse_id' - The identifier of the thesaurus.
--
-- 'indexId', 'describeThesaurusResponse_indexId' - The identifier of the index for the thesaurus.
--
-- 'name', 'describeThesaurusResponse_name' - The thesaurus name.
--
-- 'roleArn', 'describeThesaurusResponse_roleArn' - An IAM role that gives Amazon Kendra permissions to access thesaurus
-- file specified in @SourceS3Path@.
--
-- 'sourceS3Path', 'describeThesaurusResponse_sourceS3Path' - Undocumented member.
--
-- 'status', 'describeThesaurusResponse_status' - The current status of the thesaurus. When the value is @ACTIVE@, queries
-- are able to use the thesaurus. If the @Status@ field value is @FAILED@,
-- the @ErrorMessage@ field provides more information.
--
-- If the status is @ACTIVE_BUT_UPDATE_FAILED@, it means that Amazon Kendra
-- could not ingest the new thesaurus file. The old thesaurus file is still
-- active.
--
-- 'synonymRuleCount', 'describeThesaurusResponse_synonymRuleCount' - The number of synonym rules in the thesaurus file.
--
-- 'termCount', 'describeThesaurusResponse_termCount' - The number of unique terms in the thesaurus file. For example, the
-- synonyms @a,b,c@ and @a=>d@, the term count would be 4.
--
-- 'updatedAt', 'describeThesaurusResponse_updatedAt' - The Unix datetime that the thesaurus was last updated.
--
-- 'httpStatus', 'describeThesaurusResponse_httpStatus' - The response's http status code.
newDescribeThesaurusResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeThesaurusResponse
newDescribeThesaurusResponse :: Int -> DescribeThesaurusResponse
newDescribeThesaurusResponse Int
pHttpStatus_ =
  DescribeThesaurusResponse'
    { $sel:createdAt:DescribeThesaurusResponse' :: Maybe POSIX
createdAt =
        forall a. Maybe a
Prelude.Nothing,
      $sel:description:DescribeThesaurusResponse' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:errorMessage:DescribeThesaurusResponse' :: Maybe Text
errorMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:fileSizeBytes:DescribeThesaurusResponse' :: Maybe Integer
fileSizeBytes = forall a. Maybe a
Prelude.Nothing,
      $sel:id:DescribeThesaurusResponse' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:indexId:DescribeThesaurusResponse' :: Maybe Text
indexId = forall a. Maybe a
Prelude.Nothing,
      $sel:name:DescribeThesaurusResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:DescribeThesaurusResponse' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceS3Path:DescribeThesaurusResponse' :: Maybe S3Path
sourceS3Path = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeThesaurusResponse' :: Maybe ThesaurusStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:synonymRuleCount:DescribeThesaurusResponse' :: Maybe Integer
synonymRuleCount = forall a. Maybe a
Prelude.Nothing,
      $sel:termCount:DescribeThesaurusResponse' :: Maybe Integer
termCount = forall a. Maybe a
Prelude.Nothing,
      $sel:updatedAt:DescribeThesaurusResponse' :: Maybe POSIX
updatedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeThesaurusResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The Unix datetime that the thesaurus was created.
describeThesaurusResponse_createdAt :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.UTCTime)
describeThesaurusResponse_createdAt :: Lens' DescribeThesaurusResponse (Maybe UTCTime)
describeThesaurusResponse_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe POSIX
a -> DescribeThesaurusResponse
s {$sel:createdAt:DescribeThesaurusResponse' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: DescribeThesaurusResponse) 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 thesaurus description.
describeThesaurusResponse_description :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.Text)
describeThesaurusResponse_description :: Lens' DescribeThesaurusResponse (Maybe Text)
describeThesaurusResponse_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe Text
description :: Maybe Text
$sel:description:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe Text
a -> DescribeThesaurusResponse
s {$sel:description:DescribeThesaurusResponse' :: Maybe Text
description = Maybe Text
a} :: DescribeThesaurusResponse)

-- | When the @Status@ field value is @FAILED@, the @ErrorMessage@ field
-- provides more information.
describeThesaurusResponse_errorMessage :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.Text)
describeThesaurusResponse_errorMessage :: Lens' DescribeThesaurusResponse (Maybe Text)
describeThesaurusResponse_errorMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe Text
errorMessage :: Maybe Text
$sel:errorMessage:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
errorMessage} -> Maybe Text
errorMessage) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe Text
a -> DescribeThesaurusResponse
s {$sel:errorMessage:DescribeThesaurusResponse' :: Maybe Text
errorMessage = Maybe Text
a} :: DescribeThesaurusResponse)

-- | The size of the thesaurus file in bytes.
describeThesaurusResponse_fileSizeBytes :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.Integer)
describeThesaurusResponse_fileSizeBytes :: Lens' DescribeThesaurusResponse (Maybe Integer)
describeThesaurusResponse_fileSizeBytes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe Integer
fileSizeBytes :: Maybe Integer
$sel:fileSizeBytes:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Integer
fileSizeBytes} -> Maybe Integer
fileSizeBytes) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe Integer
a -> DescribeThesaurusResponse
s {$sel:fileSizeBytes:DescribeThesaurusResponse' :: Maybe Integer
fileSizeBytes = Maybe Integer
a} :: DescribeThesaurusResponse)

-- | The identifier of the thesaurus.
describeThesaurusResponse_id :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.Text)
describeThesaurusResponse_id :: Lens' DescribeThesaurusResponse (Maybe Text)
describeThesaurusResponse_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe Text
id :: Maybe Text
$sel:id:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
id} -> Maybe Text
id) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe Text
a -> DescribeThesaurusResponse
s {$sel:id:DescribeThesaurusResponse' :: Maybe Text
id = Maybe Text
a} :: DescribeThesaurusResponse)

-- | The identifier of the index for the thesaurus.
describeThesaurusResponse_indexId :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.Text)
describeThesaurusResponse_indexId :: Lens' DescribeThesaurusResponse (Maybe Text)
describeThesaurusResponse_indexId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe Text
indexId :: Maybe Text
$sel:indexId:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
indexId} -> Maybe Text
indexId) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe Text
a -> DescribeThesaurusResponse
s {$sel:indexId:DescribeThesaurusResponse' :: Maybe Text
indexId = Maybe Text
a} :: DescribeThesaurusResponse)

-- | The thesaurus name.
describeThesaurusResponse_name :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.Text)
describeThesaurusResponse_name :: Lens' DescribeThesaurusResponse (Maybe Text)
describeThesaurusResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe Text
name :: Maybe Text
$sel:name:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
name} -> Maybe Text
name) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe Text
a -> DescribeThesaurusResponse
s {$sel:name:DescribeThesaurusResponse' :: Maybe Text
name = Maybe Text
a} :: DescribeThesaurusResponse)

-- | An IAM role that gives Amazon Kendra permissions to access thesaurus
-- file specified in @SourceS3Path@.
describeThesaurusResponse_roleArn :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.Text)
describeThesaurusResponse_roleArn :: Lens' DescribeThesaurusResponse (Maybe Text)
describeThesaurusResponse_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe Text
a -> DescribeThesaurusResponse
s {$sel:roleArn:DescribeThesaurusResponse' :: Maybe Text
roleArn = Maybe Text
a} :: DescribeThesaurusResponse)

-- | Undocumented member.
describeThesaurusResponse_sourceS3Path :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe S3Path)
describeThesaurusResponse_sourceS3Path :: Lens' DescribeThesaurusResponse (Maybe S3Path)
describeThesaurusResponse_sourceS3Path = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe S3Path
sourceS3Path :: Maybe S3Path
$sel:sourceS3Path:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe S3Path
sourceS3Path} -> Maybe S3Path
sourceS3Path) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe S3Path
a -> DescribeThesaurusResponse
s {$sel:sourceS3Path:DescribeThesaurusResponse' :: Maybe S3Path
sourceS3Path = Maybe S3Path
a} :: DescribeThesaurusResponse)

-- | The current status of the thesaurus. When the value is @ACTIVE@, queries
-- are able to use the thesaurus. If the @Status@ field value is @FAILED@,
-- the @ErrorMessage@ field provides more information.
--
-- If the status is @ACTIVE_BUT_UPDATE_FAILED@, it means that Amazon Kendra
-- could not ingest the new thesaurus file. The old thesaurus file is still
-- active.
describeThesaurusResponse_status :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe ThesaurusStatus)
describeThesaurusResponse_status :: Lens' DescribeThesaurusResponse (Maybe ThesaurusStatus)
describeThesaurusResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe ThesaurusStatus
status :: Maybe ThesaurusStatus
$sel:status:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe ThesaurusStatus
status} -> Maybe ThesaurusStatus
status) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe ThesaurusStatus
a -> DescribeThesaurusResponse
s {$sel:status:DescribeThesaurusResponse' :: Maybe ThesaurusStatus
status = Maybe ThesaurusStatus
a} :: DescribeThesaurusResponse)

-- | The number of synonym rules in the thesaurus file.
describeThesaurusResponse_synonymRuleCount :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.Integer)
describeThesaurusResponse_synonymRuleCount :: Lens' DescribeThesaurusResponse (Maybe Integer)
describeThesaurusResponse_synonymRuleCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe Integer
synonymRuleCount :: Maybe Integer
$sel:synonymRuleCount:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Integer
synonymRuleCount} -> Maybe Integer
synonymRuleCount) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe Integer
a -> DescribeThesaurusResponse
s {$sel:synonymRuleCount:DescribeThesaurusResponse' :: Maybe Integer
synonymRuleCount = Maybe Integer
a} :: DescribeThesaurusResponse)

-- | The number of unique terms in the thesaurus file. For example, the
-- synonyms @a,b,c@ and @a=>d@, the term count would be 4.
describeThesaurusResponse_termCount :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.Integer)
describeThesaurusResponse_termCount :: Lens' DescribeThesaurusResponse (Maybe Integer)
describeThesaurusResponse_termCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe Integer
termCount :: Maybe Integer
$sel:termCount:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Integer
termCount} -> Maybe Integer
termCount) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe Integer
a -> DescribeThesaurusResponse
s {$sel:termCount:DescribeThesaurusResponse' :: Maybe Integer
termCount = Maybe Integer
a} :: DescribeThesaurusResponse)

-- | The Unix datetime that the thesaurus was last updated.
describeThesaurusResponse_updatedAt :: Lens.Lens' DescribeThesaurusResponse (Prelude.Maybe Prelude.UTCTime)
describeThesaurusResponse_updatedAt :: Lens' DescribeThesaurusResponse (Maybe UTCTime)
describeThesaurusResponse_updatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Maybe POSIX
updatedAt :: Maybe POSIX
$sel:updatedAt:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe POSIX
updatedAt} -> Maybe POSIX
updatedAt) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Maybe POSIX
a -> DescribeThesaurusResponse
s {$sel:updatedAt:DescribeThesaurusResponse' :: Maybe POSIX
updatedAt = Maybe POSIX
a} :: DescribeThesaurusResponse) 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 response's http status code.
describeThesaurusResponse_httpStatus :: Lens.Lens' DescribeThesaurusResponse Prelude.Int
describeThesaurusResponse_httpStatus :: Lens' DescribeThesaurusResponse Int
describeThesaurusResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeThesaurusResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeThesaurusResponse
s@DescribeThesaurusResponse' {} Int
a -> DescribeThesaurusResponse
s {$sel:httpStatus:DescribeThesaurusResponse' :: Int
httpStatus = Int
a} :: DescribeThesaurusResponse)

instance Prelude.NFData DescribeThesaurusResponse where
  rnf :: DescribeThesaurusResponse -> ()
rnf DescribeThesaurusResponse' {Int
Maybe Integer
Maybe Text
Maybe POSIX
Maybe S3Path
Maybe ThesaurusStatus
httpStatus :: Int
updatedAt :: Maybe POSIX
termCount :: Maybe Integer
synonymRuleCount :: Maybe Integer
status :: Maybe ThesaurusStatus
sourceS3Path :: Maybe S3Path
roleArn :: Maybe Text
name :: Maybe Text
indexId :: Maybe Text
id :: Maybe Text
fileSizeBytes :: Maybe Integer
errorMessage :: Maybe Text
description :: Maybe Text
createdAt :: Maybe POSIX
$sel:httpStatus:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Int
$sel:updatedAt:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe POSIX
$sel:termCount:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Integer
$sel:synonymRuleCount:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Integer
$sel:status:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe ThesaurusStatus
$sel:sourceS3Path:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe S3Path
$sel:roleArn:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
$sel:name:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
$sel:indexId:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
$sel:id:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
$sel:fileSizeBytes:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Integer
$sel:errorMessage:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
$sel:description:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> Maybe Text
$sel:createdAt:DescribeThesaurusResponse' :: DescribeThesaurusResponse -> 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
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
errorMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
fileSizeBytes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
indexId
      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 Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe S3Path
sourceS3Path
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ThesaurusStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
synonymRuleCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
termCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
updatedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus