{-# 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.DescribeExperience
-- 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 your Amazon Kendra experience such as a search
-- application. For more information on creating a search application
-- experience, see
-- <https://docs.aws.amazon.com/kendra/latest/dg/deploying-search-experience-no-code.html Building a search experience with no code>.
module Amazonka.Kendra.DescribeExperience
  ( -- * Creating a Request
    DescribeExperience (..),
    newDescribeExperience,

    -- * Request Lenses
    describeExperience_id,
    describeExperience_indexId,

    -- * Destructuring the Response
    DescribeExperienceResponse (..),
    newDescribeExperienceResponse,

    -- * Response Lenses
    describeExperienceResponse_configuration,
    describeExperienceResponse_createdAt,
    describeExperienceResponse_description,
    describeExperienceResponse_endpoints,
    describeExperienceResponse_errorMessage,
    describeExperienceResponse_id,
    describeExperienceResponse_indexId,
    describeExperienceResponse_name,
    describeExperienceResponse_roleArn,
    describeExperienceResponse_status,
    describeExperienceResponse_updatedAt,
    describeExperienceResponse_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:/ 'newDescribeExperience' smart constructor.
data DescribeExperience = DescribeExperience'
  { -- | The identifier of your Amazon Kendra experience you want to get
    -- information on.
    DescribeExperience -> Text
id :: Prelude.Text,
    -- | The identifier of the index for your Amazon Kendra experience.
    DescribeExperience -> Text
indexId :: Prelude.Text
  }
  deriving (DescribeExperience -> DescribeExperience -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeExperience -> DescribeExperience -> Bool
$c/= :: DescribeExperience -> DescribeExperience -> Bool
== :: DescribeExperience -> DescribeExperience -> Bool
$c== :: DescribeExperience -> DescribeExperience -> Bool
Prelude.Eq, ReadPrec [DescribeExperience]
ReadPrec DescribeExperience
Int -> ReadS DescribeExperience
ReadS [DescribeExperience]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeExperience]
$creadListPrec :: ReadPrec [DescribeExperience]
readPrec :: ReadPrec DescribeExperience
$creadPrec :: ReadPrec DescribeExperience
readList :: ReadS [DescribeExperience]
$creadList :: ReadS [DescribeExperience]
readsPrec :: Int -> ReadS DescribeExperience
$creadsPrec :: Int -> ReadS DescribeExperience
Prelude.Read, Int -> DescribeExperience -> ShowS
[DescribeExperience] -> ShowS
DescribeExperience -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeExperience] -> ShowS
$cshowList :: [DescribeExperience] -> ShowS
show :: DescribeExperience -> String
$cshow :: DescribeExperience -> String
showsPrec :: Int -> DescribeExperience -> ShowS
$cshowsPrec :: Int -> DescribeExperience -> ShowS
Prelude.Show, forall x. Rep DescribeExperience x -> DescribeExperience
forall x. DescribeExperience -> Rep DescribeExperience x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeExperience x -> DescribeExperience
$cfrom :: forall x. DescribeExperience -> Rep DescribeExperience x
Prelude.Generic)

-- |
-- Create a value of 'DescribeExperience' 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', 'describeExperience_id' - The identifier of your Amazon Kendra experience you want to get
-- information on.
--
-- 'indexId', 'describeExperience_indexId' - The identifier of the index for your Amazon Kendra experience.
newDescribeExperience ::
  -- | 'id'
  Prelude.Text ->
  -- | 'indexId'
  Prelude.Text ->
  DescribeExperience
newDescribeExperience :: Text -> Text -> DescribeExperience
newDescribeExperience Text
pId_ Text
pIndexId_ =
  DescribeExperience' {$sel:id:DescribeExperience' :: Text
id = Text
pId_, $sel:indexId:DescribeExperience' :: Text
indexId = Text
pIndexId_}

-- | The identifier of your Amazon Kendra experience you want to get
-- information on.
describeExperience_id :: Lens.Lens' DescribeExperience Prelude.Text
describeExperience_id :: Lens' DescribeExperience Text
describeExperience_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperience' {Text
id :: Text
$sel:id:DescribeExperience' :: DescribeExperience -> Text
id} -> Text
id) (\s :: DescribeExperience
s@DescribeExperience' {} Text
a -> DescribeExperience
s {$sel:id:DescribeExperience' :: Text
id = Text
a} :: DescribeExperience)

-- | The identifier of the index for your Amazon Kendra experience.
describeExperience_indexId :: Lens.Lens' DescribeExperience Prelude.Text
describeExperience_indexId :: Lens' DescribeExperience Text
describeExperience_indexId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperience' {Text
indexId :: Text
$sel:indexId:DescribeExperience' :: DescribeExperience -> Text
indexId} -> Text
indexId) (\s :: DescribeExperience
s@DescribeExperience' {} Text
a -> DescribeExperience
s {$sel:indexId:DescribeExperience' :: Text
indexId = Text
a} :: DescribeExperience)

instance Core.AWSRequest DescribeExperience where
  type
    AWSResponse DescribeExperience =
      DescribeExperienceResponse
  request :: (Service -> Service)
-> DescribeExperience -> Request DescribeExperience
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 DescribeExperience
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeExperience)))
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 ExperienceConfiguration
-> Maybe POSIX
-> Maybe Text
-> Maybe (NonEmpty ExperienceEndpoint)
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ExperienceStatus
-> Maybe POSIX
-> Int
-> DescribeExperienceResponse
DescribeExperienceResponse'
            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
"Configuration")
            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
"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
"Endpoints")
            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
"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
"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
"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 DescribeExperience where
  hashWithSalt :: Int -> DescribeExperience -> Int
hashWithSalt Int
_salt DescribeExperience' {Text
indexId :: Text
id :: Text
$sel:indexId:DescribeExperience' :: DescribeExperience -> Text
$sel:id:DescribeExperience' :: DescribeExperience -> 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 DescribeExperience where
  rnf :: DescribeExperience -> ()
rnf DescribeExperience' {Text
indexId :: Text
id :: Text
$sel:indexId:DescribeExperience' :: DescribeExperience -> Text
$sel:id:DescribeExperience' :: DescribeExperience -> 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 DescribeExperience where
  toHeaders :: DescribeExperience -> 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.DescribeExperience" ::
                          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 DescribeExperience where
  toJSON :: DescribeExperience -> Value
toJSON DescribeExperience' {Text
indexId :: Text
id :: Text
$sel:indexId:DescribeExperience' :: DescribeExperience -> Text
$sel:id:DescribeExperience' :: DescribeExperience -> 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 DescribeExperience where
  toPath :: DescribeExperience -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newDescribeExperienceResponse' smart constructor.
data DescribeExperienceResponse = DescribeExperienceResponse'
  { -- | Shows the configuration information for your Amazon Kendra experience.
    -- This includes @ContentSourceConfiguration@, which specifies the data
    -- source IDs and\/or FAQ IDs, and @UserIdentityConfiguration@, which
    -- specifies the user or group information to grant access to your Amazon
    -- Kendra experience.
    DescribeExperienceResponse -> Maybe ExperienceConfiguration
configuration :: Prelude.Maybe ExperienceConfiguration,
    -- | Shows the date-time your Amazon Kendra experience was created.
    DescribeExperienceResponse -> Maybe POSIX
createdAt :: Prelude.Maybe Data.POSIX,
    -- | Shows the description for your Amazon Kendra experience.
    DescribeExperienceResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Shows the endpoint URLs for your Amazon Kendra experiences. The URLs are
    -- unique and fully hosted by Amazon Web Services.
    DescribeExperienceResponse -> Maybe (NonEmpty ExperienceEndpoint)
endpoints :: Prelude.Maybe (Prelude.NonEmpty ExperienceEndpoint),
    -- | The reason your Amazon Kendra experience could not properly process.
    DescribeExperienceResponse -> Maybe Text
errorMessage :: Prelude.Maybe Prelude.Text,
    -- | Shows the identifier of your Amazon Kendra experience.
    DescribeExperienceResponse -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | Shows the identifier of the index for your Amazon Kendra experience.
    DescribeExperienceResponse -> Maybe Text
indexId :: Prelude.Maybe Prelude.Text,
    -- | Shows the name of your Amazon Kendra experience.
    DescribeExperienceResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | Shows the Amazon Resource Name (ARN) of a role with permission to access
    -- @Query@ API, @QuerySuggestions@ API, @SubmitFeedback@ API, and IAM
    -- Identity Center that stores your user and group information.
    DescribeExperienceResponse -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | The current processing status of your Amazon Kendra experience. When the
    -- status is @ACTIVE@, your Amazon Kendra experience is ready to use. When
    -- the status is @FAILED@, the @ErrorMessage@ field contains the reason
    -- that this failed.
    DescribeExperienceResponse -> Maybe ExperienceStatus
status :: Prelude.Maybe ExperienceStatus,
    -- | Shows the date-time your Amazon Kendra experience was last updated.
    DescribeExperienceResponse -> Maybe POSIX
updatedAt :: Prelude.Maybe Data.POSIX,
    -- | The response's http status code.
    DescribeExperienceResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeExperienceResponse -> DescribeExperienceResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeExperienceResponse -> DescribeExperienceResponse -> Bool
$c/= :: DescribeExperienceResponse -> DescribeExperienceResponse -> Bool
== :: DescribeExperienceResponse -> DescribeExperienceResponse -> Bool
$c== :: DescribeExperienceResponse -> DescribeExperienceResponse -> Bool
Prelude.Eq, ReadPrec [DescribeExperienceResponse]
ReadPrec DescribeExperienceResponse
Int -> ReadS DescribeExperienceResponse
ReadS [DescribeExperienceResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeExperienceResponse]
$creadListPrec :: ReadPrec [DescribeExperienceResponse]
readPrec :: ReadPrec DescribeExperienceResponse
$creadPrec :: ReadPrec DescribeExperienceResponse
readList :: ReadS [DescribeExperienceResponse]
$creadList :: ReadS [DescribeExperienceResponse]
readsPrec :: Int -> ReadS DescribeExperienceResponse
$creadsPrec :: Int -> ReadS DescribeExperienceResponse
Prelude.Read, Int -> DescribeExperienceResponse -> ShowS
[DescribeExperienceResponse] -> ShowS
DescribeExperienceResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeExperienceResponse] -> ShowS
$cshowList :: [DescribeExperienceResponse] -> ShowS
show :: DescribeExperienceResponse -> String
$cshow :: DescribeExperienceResponse -> String
showsPrec :: Int -> DescribeExperienceResponse -> ShowS
$cshowsPrec :: Int -> DescribeExperienceResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeExperienceResponse x -> DescribeExperienceResponse
forall x.
DescribeExperienceResponse -> Rep DescribeExperienceResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeExperienceResponse x -> DescribeExperienceResponse
$cfrom :: forall x.
DescribeExperienceResponse -> Rep DescribeExperienceResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeExperienceResponse' 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:
--
-- 'configuration', 'describeExperienceResponse_configuration' - Shows the configuration information for your Amazon Kendra experience.
-- This includes @ContentSourceConfiguration@, which specifies the data
-- source IDs and\/or FAQ IDs, and @UserIdentityConfiguration@, which
-- specifies the user or group information to grant access to your Amazon
-- Kendra experience.
--
-- 'createdAt', 'describeExperienceResponse_createdAt' - Shows the date-time your Amazon Kendra experience was created.
--
-- 'description', 'describeExperienceResponse_description' - Shows the description for your Amazon Kendra experience.
--
-- 'endpoints', 'describeExperienceResponse_endpoints' - Shows the endpoint URLs for your Amazon Kendra experiences. The URLs are
-- unique and fully hosted by Amazon Web Services.
--
-- 'errorMessage', 'describeExperienceResponse_errorMessage' - The reason your Amazon Kendra experience could not properly process.
--
-- 'id', 'describeExperienceResponse_id' - Shows the identifier of your Amazon Kendra experience.
--
-- 'indexId', 'describeExperienceResponse_indexId' - Shows the identifier of the index for your Amazon Kendra experience.
--
-- 'name', 'describeExperienceResponse_name' - Shows the name of your Amazon Kendra experience.
--
-- 'roleArn', 'describeExperienceResponse_roleArn' - Shows the Amazon Resource Name (ARN) of a role with permission to access
-- @Query@ API, @QuerySuggestions@ API, @SubmitFeedback@ API, and IAM
-- Identity Center that stores your user and group information.
--
-- 'status', 'describeExperienceResponse_status' - The current processing status of your Amazon Kendra experience. When the
-- status is @ACTIVE@, your Amazon Kendra experience is ready to use. When
-- the status is @FAILED@, the @ErrorMessage@ field contains the reason
-- that this failed.
--
-- 'updatedAt', 'describeExperienceResponse_updatedAt' - Shows the date-time your Amazon Kendra experience was last updated.
--
-- 'httpStatus', 'describeExperienceResponse_httpStatus' - The response's http status code.
newDescribeExperienceResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeExperienceResponse
newDescribeExperienceResponse :: Int -> DescribeExperienceResponse
newDescribeExperienceResponse Int
pHttpStatus_ =
  DescribeExperienceResponse'
    { $sel:configuration:DescribeExperienceResponse' :: Maybe ExperienceConfiguration
configuration =
        forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:DescribeExperienceResponse' :: Maybe POSIX
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:description:DescribeExperienceResponse' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:endpoints:DescribeExperienceResponse' :: Maybe (NonEmpty ExperienceEndpoint)
endpoints = forall a. Maybe a
Prelude.Nothing,
      $sel:errorMessage:DescribeExperienceResponse' :: Maybe Text
errorMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:id:DescribeExperienceResponse' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:indexId:DescribeExperienceResponse' :: Maybe Text
indexId = forall a. Maybe a
Prelude.Nothing,
      $sel:name:DescribeExperienceResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:DescribeExperienceResponse' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeExperienceResponse' :: Maybe ExperienceStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:updatedAt:DescribeExperienceResponse' :: Maybe POSIX
updatedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeExperienceResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Shows the configuration information for your Amazon Kendra experience.
-- This includes @ContentSourceConfiguration@, which specifies the data
-- source IDs and\/or FAQ IDs, and @UserIdentityConfiguration@, which
-- specifies the user or group information to grant access to your Amazon
-- Kendra experience.
describeExperienceResponse_configuration :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe ExperienceConfiguration)
describeExperienceResponse_configuration :: Lens' DescribeExperienceResponse (Maybe ExperienceConfiguration)
describeExperienceResponse_configuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe ExperienceConfiguration
configuration :: Maybe ExperienceConfiguration
$sel:configuration:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe ExperienceConfiguration
configuration} -> Maybe ExperienceConfiguration
configuration) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe ExperienceConfiguration
a -> DescribeExperienceResponse
s {$sel:configuration:DescribeExperienceResponse' :: Maybe ExperienceConfiguration
configuration = Maybe ExperienceConfiguration
a} :: DescribeExperienceResponse)

-- | Shows the date-time your Amazon Kendra experience was created.
describeExperienceResponse_createdAt :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe Prelude.UTCTime)
describeExperienceResponse_createdAt :: Lens' DescribeExperienceResponse (Maybe UTCTime)
describeExperienceResponse_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe POSIX
a -> DescribeExperienceResponse
s {$sel:createdAt:DescribeExperienceResponse' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: DescribeExperienceResponse) 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

-- | Shows the description for your Amazon Kendra experience.
describeExperienceResponse_description :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe Prelude.Text)
describeExperienceResponse_description :: Lens' DescribeExperienceResponse (Maybe Text)
describeExperienceResponse_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe Text
description :: Maybe Text
$sel:description:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe Text
a -> DescribeExperienceResponse
s {$sel:description:DescribeExperienceResponse' :: Maybe Text
description = Maybe Text
a} :: DescribeExperienceResponse)

-- | Shows the endpoint URLs for your Amazon Kendra experiences. The URLs are
-- unique and fully hosted by Amazon Web Services.
describeExperienceResponse_endpoints :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe (Prelude.NonEmpty ExperienceEndpoint))
describeExperienceResponse_endpoints :: Lens'
  DescribeExperienceResponse (Maybe (NonEmpty ExperienceEndpoint))
describeExperienceResponse_endpoints = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe (NonEmpty ExperienceEndpoint)
endpoints :: Maybe (NonEmpty ExperienceEndpoint)
$sel:endpoints:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe (NonEmpty ExperienceEndpoint)
endpoints} -> Maybe (NonEmpty ExperienceEndpoint)
endpoints) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe (NonEmpty ExperienceEndpoint)
a -> DescribeExperienceResponse
s {$sel:endpoints:DescribeExperienceResponse' :: Maybe (NonEmpty ExperienceEndpoint)
endpoints = Maybe (NonEmpty ExperienceEndpoint)
a} :: DescribeExperienceResponse) 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 reason your Amazon Kendra experience could not properly process.
describeExperienceResponse_errorMessage :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe Prelude.Text)
describeExperienceResponse_errorMessage :: Lens' DescribeExperienceResponse (Maybe Text)
describeExperienceResponse_errorMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe Text
errorMessage :: Maybe Text
$sel:errorMessage:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
errorMessage} -> Maybe Text
errorMessage) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe Text
a -> DescribeExperienceResponse
s {$sel:errorMessage:DescribeExperienceResponse' :: Maybe Text
errorMessage = Maybe Text
a} :: DescribeExperienceResponse)

-- | Shows the identifier of your Amazon Kendra experience.
describeExperienceResponse_id :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe Prelude.Text)
describeExperienceResponse_id :: Lens' DescribeExperienceResponse (Maybe Text)
describeExperienceResponse_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe Text
id :: Maybe Text
$sel:id:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
id} -> Maybe Text
id) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe Text
a -> DescribeExperienceResponse
s {$sel:id:DescribeExperienceResponse' :: Maybe Text
id = Maybe Text
a} :: DescribeExperienceResponse)

-- | Shows the identifier of the index for your Amazon Kendra experience.
describeExperienceResponse_indexId :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe Prelude.Text)
describeExperienceResponse_indexId :: Lens' DescribeExperienceResponse (Maybe Text)
describeExperienceResponse_indexId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe Text
indexId :: Maybe Text
$sel:indexId:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
indexId} -> Maybe Text
indexId) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe Text
a -> DescribeExperienceResponse
s {$sel:indexId:DescribeExperienceResponse' :: Maybe Text
indexId = Maybe Text
a} :: DescribeExperienceResponse)

-- | Shows the name of your Amazon Kendra experience.
describeExperienceResponse_name :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe Prelude.Text)
describeExperienceResponse_name :: Lens' DescribeExperienceResponse (Maybe Text)
describeExperienceResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe Text
name :: Maybe Text
$sel:name:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
name} -> Maybe Text
name) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe Text
a -> DescribeExperienceResponse
s {$sel:name:DescribeExperienceResponse' :: Maybe Text
name = Maybe Text
a} :: DescribeExperienceResponse)

-- | Shows the Amazon Resource Name (ARN) of a role with permission to access
-- @Query@ API, @QuerySuggestions@ API, @SubmitFeedback@ API, and IAM
-- Identity Center that stores your user and group information.
describeExperienceResponse_roleArn :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe Prelude.Text)
describeExperienceResponse_roleArn :: Lens' DescribeExperienceResponse (Maybe Text)
describeExperienceResponse_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe Text
a -> DescribeExperienceResponse
s {$sel:roleArn:DescribeExperienceResponse' :: Maybe Text
roleArn = Maybe Text
a} :: DescribeExperienceResponse)

-- | The current processing status of your Amazon Kendra experience. When the
-- status is @ACTIVE@, your Amazon Kendra experience is ready to use. When
-- the status is @FAILED@, the @ErrorMessage@ field contains the reason
-- that this failed.
describeExperienceResponse_status :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe ExperienceStatus)
describeExperienceResponse_status :: Lens' DescribeExperienceResponse (Maybe ExperienceStatus)
describeExperienceResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe ExperienceStatus
status :: Maybe ExperienceStatus
$sel:status:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe ExperienceStatus
status} -> Maybe ExperienceStatus
status) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe ExperienceStatus
a -> DescribeExperienceResponse
s {$sel:status:DescribeExperienceResponse' :: Maybe ExperienceStatus
status = Maybe ExperienceStatus
a} :: DescribeExperienceResponse)

-- | Shows the date-time your Amazon Kendra experience was last updated.
describeExperienceResponse_updatedAt :: Lens.Lens' DescribeExperienceResponse (Prelude.Maybe Prelude.UTCTime)
describeExperienceResponse_updatedAt :: Lens' DescribeExperienceResponse (Maybe UTCTime)
describeExperienceResponse_updatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Maybe POSIX
updatedAt :: Maybe POSIX
$sel:updatedAt:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe POSIX
updatedAt} -> Maybe POSIX
updatedAt) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Maybe POSIX
a -> DescribeExperienceResponse
s {$sel:updatedAt:DescribeExperienceResponse' :: Maybe POSIX
updatedAt = Maybe POSIX
a} :: DescribeExperienceResponse) 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.
describeExperienceResponse_httpStatus :: Lens.Lens' DescribeExperienceResponse Prelude.Int
describeExperienceResponse_httpStatus :: Lens' DescribeExperienceResponse Int
describeExperienceResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeExperienceResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeExperienceResponse' :: DescribeExperienceResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeExperienceResponse
s@DescribeExperienceResponse' {} Int
a -> DescribeExperienceResponse
s {$sel:httpStatus:DescribeExperienceResponse' :: Int
httpStatus = Int
a} :: DescribeExperienceResponse)

instance Prelude.NFData DescribeExperienceResponse where
  rnf :: DescribeExperienceResponse -> ()
rnf DescribeExperienceResponse' {Int
Maybe (NonEmpty ExperienceEndpoint)
Maybe Text
Maybe POSIX
Maybe ExperienceStatus
Maybe ExperienceConfiguration
httpStatus :: Int
updatedAt :: Maybe POSIX
status :: Maybe ExperienceStatus
roleArn :: Maybe Text
name :: Maybe Text
indexId :: Maybe Text
id :: Maybe Text
errorMessage :: Maybe Text
endpoints :: Maybe (NonEmpty ExperienceEndpoint)
description :: Maybe Text
createdAt :: Maybe POSIX
configuration :: Maybe ExperienceConfiguration
$sel:httpStatus:DescribeExperienceResponse' :: DescribeExperienceResponse -> Int
$sel:updatedAt:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe POSIX
$sel:status:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe ExperienceStatus
$sel:roleArn:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
$sel:name:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
$sel:indexId:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
$sel:id:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
$sel:errorMessage:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
$sel:endpoints:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe (NonEmpty ExperienceEndpoint)
$sel:description:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe Text
$sel:createdAt:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe POSIX
$sel:configuration:DescribeExperienceResponse' :: DescribeExperienceResponse -> Maybe ExperienceConfiguration
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ExperienceConfiguration
configuration
      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 (NonEmpty ExperienceEndpoint)
endpoints
      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 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 ExperienceStatus
status
      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