{-# 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.DescribeQuerySuggestionsConfig
-- 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 on the settings of query suggestions for an index.
--
-- This is used to check the current settings applied to query suggestions.
--
-- @DescribeQuerySuggestionsConfig@ is currently not supported in the
-- Amazon Web Services GovCloud (US-West) region.
module Amazonka.Kendra.DescribeQuerySuggestionsConfig
  ( -- * Creating a Request
    DescribeQuerySuggestionsConfig (..),
    newDescribeQuerySuggestionsConfig,

    -- * Request Lenses
    describeQuerySuggestionsConfig_indexId,

    -- * Destructuring the Response
    DescribeQuerySuggestionsConfigResponse (..),
    newDescribeQuerySuggestionsConfigResponse,

    -- * Response Lenses
    describeQuerySuggestionsConfigResponse_includeQueriesWithoutUserInformation,
    describeQuerySuggestionsConfigResponse_lastClearTime,
    describeQuerySuggestionsConfigResponse_lastSuggestionsBuildTime,
    describeQuerySuggestionsConfigResponse_minimumNumberOfQueryingUsers,
    describeQuerySuggestionsConfigResponse_minimumQueryCount,
    describeQuerySuggestionsConfigResponse_mode,
    describeQuerySuggestionsConfigResponse_queryLogLookBackWindowInDays,
    describeQuerySuggestionsConfigResponse_status,
    describeQuerySuggestionsConfigResponse_totalSuggestionsCount,
    describeQuerySuggestionsConfigResponse_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:/ 'newDescribeQuerySuggestionsConfig' smart constructor.
data DescribeQuerySuggestionsConfig = DescribeQuerySuggestionsConfig'
  { -- | The identifier of the index with query suggestions that you want to get
    -- information on.
    DescribeQuerySuggestionsConfig -> Text
indexId :: Prelude.Text
  }
  deriving (DescribeQuerySuggestionsConfig
-> DescribeQuerySuggestionsConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeQuerySuggestionsConfig
-> DescribeQuerySuggestionsConfig -> Bool
$c/= :: DescribeQuerySuggestionsConfig
-> DescribeQuerySuggestionsConfig -> Bool
== :: DescribeQuerySuggestionsConfig
-> DescribeQuerySuggestionsConfig -> Bool
$c== :: DescribeQuerySuggestionsConfig
-> DescribeQuerySuggestionsConfig -> Bool
Prelude.Eq, ReadPrec [DescribeQuerySuggestionsConfig]
ReadPrec DescribeQuerySuggestionsConfig
Int -> ReadS DescribeQuerySuggestionsConfig
ReadS [DescribeQuerySuggestionsConfig]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeQuerySuggestionsConfig]
$creadListPrec :: ReadPrec [DescribeQuerySuggestionsConfig]
readPrec :: ReadPrec DescribeQuerySuggestionsConfig
$creadPrec :: ReadPrec DescribeQuerySuggestionsConfig
readList :: ReadS [DescribeQuerySuggestionsConfig]
$creadList :: ReadS [DescribeQuerySuggestionsConfig]
readsPrec :: Int -> ReadS DescribeQuerySuggestionsConfig
$creadsPrec :: Int -> ReadS DescribeQuerySuggestionsConfig
Prelude.Read, Int -> DescribeQuerySuggestionsConfig -> ShowS
[DescribeQuerySuggestionsConfig] -> ShowS
DescribeQuerySuggestionsConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeQuerySuggestionsConfig] -> ShowS
$cshowList :: [DescribeQuerySuggestionsConfig] -> ShowS
show :: DescribeQuerySuggestionsConfig -> String
$cshow :: DescribeQuerySuggestionsConfig -> String
showsPrec :: Int -> DescribeQuerySuggestionsConfig -> ShowS
$cshowsPrec :: Int -> DescribeQuerySuggestionsConfig -> ShowS
Prelude.Show, forall x.
Rep DescribeQuerySuggestionsConfig x
-> DescribeQuerySuggestionsConfig
forall x.
DescribeQuerySuggestionsConfig
-> Rep DescribeQuerySuggestionsConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeQuerySuggestionsConfig x
-> DescribeQuerySuggestionsConfig
$cfrom :: forall x.
DescribeQuerySuggestionsConfig
-> Rep DescribeQuerySuggestionsConfig x
Prelude.Generic)

-- |
-- Create a value of 'DescribeQuerySuggestionsConfig' 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:
--
-- 'indexId', 'describeQuerySuggestionsConfig_indexId' - The identifier of the index with query suggestions that you want to get
-- information on.
newDescribeQuerySuggestionsConfig ::
  -- | 'indexId'
  Prelude.Text ->
  DescribeQuerySuggestionsConfig
newDescribeQuerySuggestionsConfig :: Text -> DescribeQuerySuggestionsConfig
newDescribeQuerySuggestionsConfig Text
pIndexId_ =
  DescribeQuerySuggestionsConfig'
    { $sel:indexId:DescribeQuerySuggestionsConfig' :: Text
indexId =
        Text
pIndexId_
    }

-- | The identifier of the index with query suggestions that you want to get
-- information on.
describeQuerySuggestionsConfig_indexId :: Lens.Lens' DescribeQuerySuggestionsConfig Prelude.Text
describeQuerySuggestionsConfig_indexId :: Lens' DescribeQuerySuggestionsConfig Text
describeQuerySuggestionsConfig_indexId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfig' {Text
indexId :: Text
$sel:indexId:DescribeQuerySuggestionsConfig' :: DescribeQuerySuggestionsConfig -> Text
indexId} -> Text
indexId) (\s :: DescribeQuerySuggestionsConfig
s@DescribeQuerySuggestionsConfig' {} Text
a -> DescribeQuerySuggestionsConfig
s {$sel:indexId:DescribeQuerySuggestionsConfig' :: Text
indexId = Text
a} :: DescribeQuerySuggestionsConfig)

instance
  Core.AWSRequest
    DescribeQuerySuggestionsConfig
  where
  type
    AWSResponse DescribeQuerySuggestionsConfig =
      DescribeQuerySuggestionsConfigResponse
  request :: (Service -> Service)
-> DescribeQuerySuggestionsConfig
-> Request DescribeQuerySuggestionsConfig
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 DescribeQuerySuggestionsConfig
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeQuerySuggestionsConfig)))
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 Bool
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Natural
-> Maybe Natural
-> Maybe Mode
-> Maybe Int
-> Maybe QuerySuggestionsStatus
-> Maybe Int
-> Int
-> DescribeQuerySuggestionsConfigResponse
DescribeQuerySuggestionsConfigResponse'
            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
"IncludeQueriesWithoutUserInformation")
            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
"LastClearTime")
            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
"LastSuggestionsBuildTime")
            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
"MinimumNumberOfQueryingUsers")
            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
"MinimumQueryCount")
            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
"Mode")
            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
"QueryLogLookBackWindowInDays")
            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
"TotalSuggestionsCount")
            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
    DescribeQuerySuggestionsConfig
  where
  hashWithSalt :: Int -> DescribeQuerySuggestionsConfig -> Int
hashWithSalt
    Int
_salt
    DescribeQuerySuggestionsConfig' {Text
indexId :: Text
$sel:indexId:DescribeQuerySuggestionsConfig' :: DescribeQuerySuggestionsConfig -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
indexId

instance
  Prelude.NFData
    DescribeQuerySuggestionsConfig
  where
  rnf :: DescribeQuerySuggestionsConfig -> ()
rnf DescribeQuerySuggestionsConfig' {Text
indexId :: Text
$sel:indexId:DescribeQuerySuggestionsConfig' :: DescribeQuerySuggestionsConfig -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
indexId

instance
  Data.ToHeaders
    DescribeQuerySuggestionsConfig
  where
  toHeaders :: DescribeQuerySuggestionsConfig -> 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.DescribeQuerySuggestionsConfig" ::
                          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 DescribeQuerySuggestionsConfig where
  toJSON :: DescribeQuerySuggestionsConfig -> Value
toJSON DescribeQuerySuggestionsConfig' {Text
indexId :: Text
$sel:indexId:DescribeQuerySuggestionsConfig' :: DescribeQuerySuggestionsConfig -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [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 DescribeQuerySuggestionsConfig where
  toPath :: DescribeQuerySuggestionsConfig -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newDescribeQuerySuggestionsConfigResponse' smart constructor.
data DescribeQuerySuggestionsConfigResponse = DescribeQuerySuggestionsConfigResponse'
  { -- | @TRUE@ to use all queries, otherwise use only queries that include user
    -- information to generate the query suggestions.
    DescribeQuerySuggestionsConfigResponse -> Maybe Bool
includeQueriesWithoutUserInformation :: Prelude.Maybe Prelude.Bool,
    -- | The date-time query suggestions for an index was last cleared.
    --
    -- After you clear suggestions, Amazon Kendra learns new suggestions based
    -- on new queries added to the query log from the time you cleared
    -- suggestions. Amazon Kendra only considers re-occurences of a query from
    -- the time you cleared suggestions.
    DescribeQuerySuggestionsConfigResponse -> Maybe POSIX
lastClearTime :: Prelude.Maybe Data.POSIX,
    -- | The date-time query suggestions for an index was last updated.
    DescribeQuerySuggestionsConfigResponse -> Maybe POSIX
lastSuggestionsBuildTime :: Prelude.Maybe Data.POSIX,
    -- | The minimum number of unique users who must search a query in order for
    -- the query to be eligible to suggest to your users.
    DescribeQuerySuggestionsConfigResponse -> Maybe Natural
minimumNumberOfQueryingUsers :: Prelude.Maybe Prelude.Natural,
    -- | The minimum number of times a query must be searched in order for the
    -- query to be eligible to suggest to your users.
    DescribeQuerySuggestionsConfigResponse -> Maybe Natural
minimumQueryCount :: Prelude.Maybe Prelude.Natural,
    -- | Whether query suggestions are currently in @ENABLED@ mode or
    -- @LEARN_ONLY@ mode.
    --
    -- By default, Amazon Kendra enables query suggestions.@LEARN_ONLY@ turns
    -- off query suggestions for your users. You can change the mode using the
    -- <https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateQuerySuggestionsConfig.html UpdateQuerySuggestionsConfig>
    -- API.
    DescribeQuerySuggestionsConfigResponse -> Maybe Mode
mode :: Prelude.Maybe Mode,
    -- | How recent your queries are in your query log time window (in days).
    DescribeQuerySuggestionsConfigResponse -> Maybe Int
queryLogLookBackWindowInDays :: Prelude.Maybe Prelude.Int,
    -- | Whether the status of query suggestions settings is currently @ACTIVE@
    -- or @UPDATING@.
    --
    -- Active means the current settings apply and Updating means your changed
    -- settings are in the process of applying.
    DescribeQuerySuggestionsConfigResponse
-> Maybe QuerySuggestionsStatus
status :: Prelude.Maybe QuerySuggestionsStatus,
    -- | The current total count of query suggestions for an index.
    --
    -- This count can change when you update your query suggestions settings,
    -- if you filter out certain queries from suggestions using a block list,
    -- and as the query log accumulates more queries for Amazon Kendra to learn
    -- from.
    DescribeQuerySuggestionsConfigResponse -> Maybe Int
totalSuggestionsCount :: Prelude.Maybe Prelude.Int,
    -- | The response's http status code.
    DescribeQuerySuggestionsConfigResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeQuerySuggestionsConfigResponse
-> DescribeQuerySuggestionsConfigResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeQuerySuggestionsConfigResponse
-> DescribeQuerySuggestionsConfigResponse -> Bool
$c/= :: DescribeQuerySuggestionsConfigResponse
-> DescribeQuerySuggestionsConfigResponse -> Bool
== :: DescribeQuerySuggestionsConfigResponse
-> DescribeQuerySuggestionsConfigResponse -> Bool
$c== :: DescribeQuerySuggestionsConfigResponse
-> DescribeQuerySuggestionsConfigResponse -> Bool
Prelude.Eq, ReadPrec [DescribeQuerySuggestionsConfigResponse]
ReadPrec DescribeQuerySuggestionsConfigResponse
Int -> ReadS DescribeQuerySuggestionsConfigResponse
ReadS [DescribeQuerySuggestionsConfigResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeQuerySuggestionsConfigResponse]
$creadListPrec :: ReadPrec [DescribeQuerySuggestionsConfigResponse]
readPrec :: ReadPrec DescribeQuerySuggestionsConfigResponse
$creadPrec :: ReadPrec DescribeQuerySuggestionsConfigResponse
readList :: ReadS [DescribeQuerySuggestionsConfigResponse]
$creadList :: ReadS [DescribeQuerySuggestionsConfigResponse]
readsPrec :: Int -> ReadS DescribeQuerySuggestionsConfigResponse
$creadsPrec :: Int -> ReadS DescribeQuerySuggestionsConfigResponse
Prelude.Read, Int -> DescribeQuerySuggestionsConfigResponse -> ShowS
[DescribeQuerySuggestionsConfigResponse] -> ShowS
DescribeQuerySuggestionsConfigResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeQuerySuggestionsConfigResponse] -> ShowS
$cshowList :: [DescribeQuerySuggestionsConfigResponse] -> ShowS
show :: DescribeQuerySuggestionsConfigResponse -> String
$cshow :: DescribeQuerySuggestionsConfigResponse -> String
showsPrec :: Int -> DescribeQuerySuggestionsConfigResponse -> ShowS
$cshowsPrec :: Int -> DescribeQuerySuggestionsConfigResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeQuerySuggestionsConfigResponse x
-> DescribeQuerySuggestionsConfigResponse
forall x.
DescribeQuerySuggestionsConfigResponse
-> Rep DescribeQuerySuggestionsConfigResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeQuerySuggestionsConfigResponse x
-> DescribeQuerySuggestionsConfigResponse
$cfrom :: forall x.
DescribeQuerySuggestionsConfigResponse
-> Rep DescribeQuerySuggestionsConfigResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeQuerySuggestionsConfigResponse' 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:
--
-- 'includeQueriesWithoutUserInformation', 'describeQuerySuggestionsConfigResponse_includeQueriesWithoutUserInformation' - @TRUE@ to use all queries, otherwise use only queries that include user
-- information to generate the query suggestions.
--
-- 'lastClearTime', 'describeQuerySuggestionsConfigResponse_lastClearTime' - The date-time query suggestions for an index was last cleared.
--
-- After you clear suggestions, Amazon Kendra learns new suggestions based
-- on new queries added to the query log from the time you cleared
-- suggestions. Amazon Kendra only considers re-occurences of a query from
-- the time you cleared suggestions.
--
-- 'lastSuggestionsBuildTime', 'describeQuerySuggestionsConfigResponse_lastSuggestionsBuildTime' - The date-time query suggestions for an index was last updated.
--
-- 'minimumNumberOfQueryingUsers', 'describeQuerySuggestionsConfigResponse_minimumNumberOfQueryingUsers' - The minimum number of unique users who must search a query in order for
-- the query to be eligible to suggest to your users.
--
-- 'minimumQueryCount', 'describeQuerySuggestionsConfigResponse_minimumQueryCount' - The minimum number of times a query must be searched in order for the
-- query to be eligible to suggest to your users.
--
-- 'mode', 'describeQuerySuggestionsConfigResponse_mode' - Whether query suggestions are currently in @ENABLED@ mode or
-- @LEARN_ONLY@ mode.
--
-- By default, Amazon Kendra enables query suggestions.@LEARN_ONLY@ turns
-- off query suggestions for your users. You can change the mode using the
-- <https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateQuerySuggestionsConfig.html UpdateQuerySuggestionsConfig>
-- API.
--
-- 'queryLogLookBackWindowInDays', 'describeQuerySuggestionsConfigResponse_queryLogLookBackWindowInDays' - How recent your queries are in your query log time window (in days).
--
-- 'status', 'describeQuerySuggestionsConfigResponse_status' - Whether the status of query suggestions settings is currently @ACTIVE@
-- or @UPDATING@.
--
-- Active means the current settings apply and Updating means your changed
-- settings are in the process of applying.
--
-- 'totalSuggestionsCount', 'describeQuerySuggestionsConfigResponse_totalSuggestionsCount' - The current total count of query suggestions for an index.
--
-- This count can change when you update your query suggestions settings,
-- if you filter out certain queries from suggestions using a block list,
-- and as the query log accumulates more queries for Amazon Kendra to learn
-- from.
--
-- 'httpStatus', 'describeQuerySuggestionsConfigResponse_httpStatus' - The response's http status code.
newDescribeQuerySuggestionsConfigResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeQuerySuggestionsConfigResponse
newDescribeQuerySuggestionsConfigResponse :: Int -> DescribeQuerySuggestionsConfigResponse
newDescribeQuerySuggestionsConfigResponse
  Int
pHttpStatus_ =
    DescribeQuerySuggestionsConfigResponse'
      { $sel:includeQueriesWithoutUserInformation:DescribeQuerySuggestionsConfigResponse' :: Maybe Bool
includeQueriesWithoutUserInformation =
          forall a. Maybe a
Prelude.Nothing,
        $sel:lastClearTime:DescribeQuerySuggestionsConfigResponse' :: Maybe POSIX
lastClearTime = forall a. Maybe a
Prelude.Nothing,
        $sel:lastSuggestionsBuildTime:DescribeQuerySuggestionsConfigResponse' :: Maybe POSIX
lastSuggestionsBuildTime =
          forall a. Maybe a
Prelude.Nothing,
        $sel:minimumNumberOfQueryingUsers:DescribeQuerySuggestionsConfigResponse' :: Maybe Natural
minimumNumberOfQueryingUsers =
          forall a. Maybe a
Prelude.Nothing,
        $sel:minimumQueryCount:DescribeQuerySuggestionsConfigResponse' :: Maybe Natural
minimumQueryCount = forall a. Maybe a
Prelude.Nothing,
        $sel:mode:DescribeQuerySuggestionsConfigResponse' :: Maybe Mode
mode = forall a. Maybe a
Prelude.Nothing,
        $sel:queryLogLookBackWindowInDays:DescribeQuerySuggestionsConfigResponse' :: Maybe Int
queryLogLookBackWindowInDays =
          forall a. Maybe a
Prelude.Nothing,
        $sel:status:DescribeQuerySuggestionsConfigResponse' :: Maybe QuerySuggestionsStatus
status = forall a. Maybe a
Prelude.Nothing,
        $sel:totalSuggestionsCount:DescribeQuerySuggestionsConfigResponse' :: Maybe Int
totalSuggestionsCount =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeQuerySuggestionsConfigResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | @TRUE@ to use all queries, otherwise use only queries that include user
-- information to generate the query suggestions.
describeQuerySuggestionsConfigResponse_includeQueriesWithoutUserInformation :: Lens.Lens' DescribeQuerySuggestionsConfigResponse (Prelude.Maybe Prelude.Bool)
describeQuerySuggestionsConfigResponse_includeQueriesWithoutUserInformation :: Lens' DescribeQuerySuggestionsConfigResponse (Maybe Bool)
describeQuerySuggestionsConfigResponse_includeQueriesWithoutUserInformation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfigResponse' {Maybe Bool
includeQueriesWithoutUserInformation :: Maybe Bool
$sel:includeQueriesWithoutUserInformation:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Bool
includeQueriesWithoutUserInformation} -> Maybe Bool
includeQueriesWithoutUserInformation) (\s :: DescribeQuerySuggestionsConfigResponse
s@DescribeQuerySuggestionsConfigResponse' {} Maybe Bool
a -> DescribeQuerySuggestionsConfigResponse
s {$sel:includeQueriesWithoutUserInformation:DescribeQuerySuggestionsConfigResponse' :: Maybe Bool
includeQueriesWithoutUserInformation = Maybe Bool
a} :: DescribeQuerySuggestionsConfigResponse)

-- | The date-time query suggestions for an index was last cleared.
--
-- After you clear suggestions, Amazon Kendra learns new suggestions based
-- on new queries added to the query log from the time you cleared
-- suggestions. Amazon Kendra only considers re-occurences of a query from
-- the time you cleared suggestions.
describeQuerySuggestionsConfigResponse_lastClearTime :: Lens.Lens' DescribeQuerySuggestionsConfigResponse (Prelude.Maybe Prelude.UTCTime)
describeQuerySuggestionsConfigResponse_lastClearTime :: Lens' DescribeQuerySuggestionsConfigResponse (Maybe UTCTime)
describeQuerySuggestionsConfigResponse_lastClearTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfigResponse' {Maybe POSIX
lastClearTime :: Maybe POSIX
$sel:lastClearTime:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe POSIX
lastClearTime} -> Maybe POSIX
lastClearTime) (\s :: DescribeQuerySuggestionsConfigResponse
s@DescribeQuerySuggestionsConfigResponse' {} Maybe POSIX
a -> DescribeQuerySuggestionsConfigResponse
s {$sel:lastClearTime:DescribeQuerySuggestionsConfigResponse' :: Maybe POSIX
lastClearTime = Maybe POSIX
a} :: DescribeQuerySuggestionsConfigResponse) 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 date-time query suggestions for an index was last updated.
describeQuerySuggestionsConfigResponse_lastSuggestionsBuildTime :: Lens.Lens' DescribeQuerySuggestionsConfigResponse (Prelude.Maybe Prelude.UTCTime)
describeQuerySuggestionsConfigResponse_lastSuggestionsBuildTime :: Lens' DescribeQuerySuggestionsConfigResponse (Maybe UTCTime)
describeQuerySuggestionsConfigResponse_lastSuggestionsBuildTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfigResponse' {Maybe POSIX
lastSuggestionsBuildTime :: Maybe POSIX
$sel:lastSuggestionsBuildTime:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe POSIX
lastSuggestionsBuildTime} -> Maybe POSIX
lastSuggestionsBuildTime) (\s :: DescribeQuerySuggestionsConfigResponse
s@DescribeQuerySuggestionsConfigResponse' {} Maybe POSIX
a -> DescribeQuerySuggestionsConfigResponse
s {$sel:lastSuggestionsBuildTime:DescribeQuerySuggestionsConfigResponse' :: Maybe POSIX
lastSuggestionsBuildTime = Maybe POSIX
a} :: DescribeQuerySuggestionsConfigResponse) 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 minimum number of unique users who must search a query in order for
-- the query to be eligible to suggest to your users.
describeQuerySuggestionsConfigResponse_minimumNumberOfQueryingUsers :: Lens.Lens' DescribeQuerySuggestionsConfigResponse (Prelude.Maybe Prelude.Natural)
describeQuerySuggestionsConfigResponse_minimumNumberOfQueryingUsers :: Lens' DescribeQuerySuggestionsConfigResponse (Maybe Natural)
describeQuerySuggestionsConfigResponse_minimumNumberOfQueryingUsers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfigResponse' {Maybe Natural
minimumNumberOfQueryingUsers :: Maybe Natural
$sel:minimumNumberOfQueryingUsers:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Natural
minimumNumberOfQueryingUsers} -> Maybe Natural
minimumNumberOfQueryingUsers) (\s :: DescribeQuerySuggestionsConfigResponse
s@DescribeQuerySuggestionsConfigResponse' {} Maybe Natural
a -> DescribeQuerySuggestionsConfigResponse
s {$sel:minimumNumberOfQueryingUsers:DescribeQuerySuggestionsConfigResponse' :: Maybe Natural
minimumNumberOfQueryingUsers = Maybe Natural
a} :: DescribeQuerySuggestionsConfigResponse)

-- | The minimum number of times a query must be searched in order for the
-- query to be eligible to suggest to your users.
describeQuerySuggestionsConfigResponse_minimumQueryCount :: Lens.Lens' DescribeQuerySuggestionsConfigResponse (Prelude.Maybe Prelude.Natural)
describeQuerySuggestionsConfigResponse_minimumQueryCount :: Lens' DescribeQuerySuggestionsConfigResponse (Maybe Natural)
describeQuerySuggestionsConfigResponse_minimumQueryCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfigResponse' {Maybe Natural
minimumQueryCount :: Maybe Natural
$sel:minimumQueryCount:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Natural
minimumQueryCount} -> Maybe Natural
minimumQueryCount) (\s :: DescribeQuerySuggestionsConfigResponse
s@DescribeQuerySuggestionsConfigResponse' {} Maybe Natural
a -> DescribeQuerySuggestionsConfigResponse
s {$sel:minimumQueryCount:DescribeQuerySuggestionsConfigResponse' :: Maybe Natural
minimumQueryCount = Maybe Natural
a} :: DescribeQuerySuggestionsConfigResponse)

-- | Whether query suggestions are currently in @ENABLED@ mode or
-- @LEARN_ONLY@ mode.
--
-- By default, Amazon Kendra enables query suggestions.@LEARN_ONLY@ turns
-- off query suggestions for your users. You can change the mode using the
-- <https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateQuerySuggestionsConfig.html UpdateQuerySuggestionsConfig>
-- API.
describeQuerySuggestionsConfigResponse_mode :: Lens.Lens' DescribeQuerySuggestionsConfigResponse (Prelude.Maybe Mode)
describeQuerySuggestionsConfigResponse_mode :: Lens' DescribeQuerySuggestionsConfigResponse (Maybe Mode)
describeQuerySuggestionsConfigResponse_mode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfigResponse' {Maybe Mode
mode :: Maybe Mode
$sel:mode:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Mode
mode} -> Maybe Mode
mode) (\s :: DescribeQuerySuggestionsConfigResponse
s@DescribeQuerySuggestionsConfigResponse' {} Maybe Mode
a -> DescribeQuerySuggestionsConfigResponse
s {$sel:mode:DescribeQuerySuggestionsConfigResponse' :: Maybe Mode
mode = Maybe Mode
a} :: DescribeQuerySuggestionsConfigResponse)

-- | How recent your queries are in your query log time window (in days).
describeQuerySuggestionsConfigResponse_queryLogLookBackWindowInDays :: Lens.Lens' DescribeQuerySuggestionsConfigResponse (Prelude.Maybe Prelude.Int)
describeQuerySuggestionsConfigResponse_queryLogLookBackWindowInDays :: Lens' DescribeQuerySuggestionsConfigResponse (Maybe Int)
describeQuerySuggestionsConfigResponse_queryLogLookBackWindowInDays = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfigResponse' {Maybe Int
queryLogLookBackWindowInDays :: Maybe Int
$sel:queryLogLookBackWindowInDays:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Int
queryLogLookBackWindowInDays} -> Maybe Int
queryLogLookBackWindowInDays) (\s :: DescribeQuerySuggestionsConfigResponse
s@DescribeQuerySuggestionsConfigResponse' {} Maybe Int
a -> DescribeQuerySuggestionsConfigResponse
s {$sel:queryLogLookBackWindowInDays:DescribeQuerySuggestionsConfigResponse' :: Maybe Int
queryLogLookBackWindowInDays = Maybe Int
a} :: DescribeQuerySuggestionsConfigResponse)

-- | Whether the status of query suggestions settings is currently @ACTIVE@
-- or @UPDATING@.
--
-- Active means the current settings apply and Updating means your changed
-- settings are in the process of applying.
describeQuerySuggestionsConfigResponse_status :: Lens.Lens' DescribeQuerySuggestionsConfigResponse (Prelude.Maybe QuerySuggestionsStatus)
describeQuerySuggestionsConfigResponse_status :: Lens'
  DescribeQuerySuggestionsConfigResponse
  (Maybe QuerySuggestionsStatus)
describeQuerySuggestionsConfigResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfigResponse' {Maybe QuerySuggestionsStatus
status :: Maybe QuerySuggestionsStatus
$sel:status:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse
-> Maybe QuerySuggestionsStatus
status} -> Maybe QuerySuggestionsStatus
status) (\s :: DescribeQuerySuggestionsConfigResponse
s@DescribeQuerySuggestionsConfigResponse' {} Maybe QuerySuggestionsStatus
a -> DescribeQuerySuggestionsConfigResponse
s {$sel:status:DescribeQuerySuggestionsConfigResponse' :: Maybe QuerySuggestionsStatus
status = Maybe QuerySuggestionsStatus
a} :: DescribeQuerySuggestionsConfigResponse)

-- | The current total count of query suggestions for an index.
--
-- This count can change when you update your query suggestions settings,
-- if you filter out certain queries from suggestions using a block list,
-- and as the query log accumulates more queries for Amazon Kendra to learn
-- from.
describeQuerySuggestionsConfigResponse_totalSuggestionsCount :: Lens.Lens' DescribeQuerySuggestionsConfigResponse (Prelude.Maybe Prelude.Int)
describeQuerySuggestionsConfigResponse_totalSuggestionsCount :: Lens' DescribeQuerySuggestionsConfigResponse (Maybe Int)
describeQuerySuggestionsConfigResponse_totalSuggestionsCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeQuerySuggestionsConfigResponse' {Maybe Int
totalSuggestionsCount :: Maybe Int
$sel:totalSuggestionsCount:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Int
totalSuggestionsCount} -> Maybe Int
totalSuggestionsCount) (\s :: DescribeQuerySuggestionsConfigResponse
s@DescribeQuerySuggestionsConfigResponse' {} Maybe Int
a -> DescribeQuerySuggestionsConfigResponse
s {$sel:totalSuggestionsCount:DescribeQuerySuggestionsConfigResponse' :: Maybe Int
totalSuggestionsCount = Maybe Int
a} :: DescribeQuerySuggestionsConfigResponse)

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

instance
  Prelude.NFData
    DescribeQuerySuggestionsConfigResponse
  where
  rnf :: DescribeQuerySuggestionsConfigResponse -> ()
rnf DescribeQuerySuggestionsConfigResponse' {Int
Maybe Bool
Maybe Int
Maybe Natural
Maybe POSIX
Maybe Mode
Maybe QuerySuggestionsStatus
httpStatus :: Int
totalSuggestionsCount :: Maybe Int
status :: Maybe QuerySuggestionsStatus
queryLogLookBackWindowInDays :: Maybe Int
mode :: Maybe Mode
minimumQueryCount :: Maybe Natural
minimumNumberOfQueryingUsers :: Maybe Natural
lastSuggestionsBuildTime :: Maybe POSIX
lastClearTime :: Maybe POSIX
includeQueriesWithoutUserInformation :: Maybe Bool
$sel:httpStatus:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Int
$sel:totalSuggestionsCount:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Int
$sel:status:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse
-> Maybe QuerySuggestionsStatus
$sel:queryLogLookBackWindowInDays:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Int
$sel:mode:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Mode
$sel:minimumQueryCount:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Natural
$sel:minimumNumberOfQueryingUsers:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Natural
$sel:lastSuggestionsBuildTime:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe POSIX
$sel:lastClearTime:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe POSIX
$sel:includeQueriesWithoutUserInformation:DescribeQuerySuggestionsConfigResponse' :: DescribeQuerySuggestionsConfigResponse -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
includeQueriesWithoutUserInformation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastClearTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastSuggestionsBuildTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
minimumNumberOfQueryingUsers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
minimumQueryCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Mode
mode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
queryLogLookBackWindowInDays
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe QuerySuggestionsStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
totalSuggestionsCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus