{-# 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.CreateExperience
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates an Amazon Kendra experience such as a search application. For
-- more information on creating a search application experience, including
-- using the Python and Java SDKs, 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.CreateExperience
  ( -- * Creating a Request
    CreateExperience (..),
    newCreateExperience,

    -- * Request Lenses
    createExperience_clientToken,
    createExperience_configuration,
    createExperience_description,
    createExperience_roleArn,
    createExperience_name,
    createExperience_indexId,

    -- * Destructuring the Response
    CreateExperienceResponse (..),
    newCreateExperienceResponse,

    -- * Response Lenses
    createExperienceResponse_httpStatus,
    createExperienceResponse_id,
  )
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:/ 'newCreateExperience' smart constructor.
data CreateExperience = CreateExperience'
  { -- | A token that you provide to identify the request to create your Amazon
    -- Kendra experience. Multiple calls to the @CreateExperience@ API with the
    -- same client token creates only one Amazon Kendra experience.
    CreateExperience -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | 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.
    CreateExperience -> Maybe ExperienceConfiguration
configuration :: Prelude.Maybe ExperienceConfiguration,
    -- | A description for your Amazon Kendra experience.
    CreateExperience -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | 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. For more
    -- information, see
    -- <https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html IAM roles for Amazon Kendra>.
    CreateExperience -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | A name for your Amazon Kendra experience.
    CreateExperience -> Text
name :: Prelude.Text,
    -- | The identifier of the index for your Amazon Kendra experience.
    CreateExperience -> Text
indexId :: Prelude.Text
  }
  deriving (CreateExperience -> CreateExperience -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateExperience -> CreateExperience -> Bool
$c/= :: CreateExperience -> CreateExperience -> Bool
== :: CreateExperience -> CreateExperience -> Bool
$c== :: CreateExperience -> CreateExperience -> Bool
Prelude.Eq, ReadPrec [CreateExperience]
ReadPrec CreateExperience
Int -> ReadS CreateExperience
ReadS [CreateExperience]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateExperience]
$creadListPrec :: ReadPrec [CreateExperience]
readPrec :: ReadPrec CreateExperience
$creadPrec :: ReadPrec CreateExperience
readList :: ReadS [CreateExperience]
$creadList :: ReadS [CreateExperience]
readsPrec :: Int -> ReadS CreateExperience
$creadsPrec :: Int -> ReadS CreateExperience
Prelude.Read, Int -> CreateExperience -> ShowS
[CreateExperience] -> ShowS
CreateExperience -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateExperience] -> ShowS
$cshowList :: [CreateExperience] -> ShowS
show :: CreateExperience -> String
$cshow :: CreateExperience -> String
showsPrec :: Int -> CreateExperience -> ShowS
$cshowsPrec :: Int -> CreateExperience -> ShowS
Prelude.Show, forall x. Rep CreateExperience x -> CreateExperience
forall x. CreateExperience -> Rep CreateExperience x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateExperience x -> CreateExperience
$cfrom :: forall x. CreateExperience -> Rep CreateExperience x
Prelude.Generic)

-- |
-- Create a value of 'CreateExperience' 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:
--
-- 'clientToken', 'createExperience_clientToken' - A token that you provide to identify the request to create your Amazon
-- Kendra experience. Multiple calls to the @CreateExperience@ API with the
-- same client token creates only one Amazon Kendra experience.
--
-- 'configuration', 'createExperience_configuration' - 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.
--
-- 'description', 'createExperience_description' - A description for your Amazon Kendra experience.
--
-- 'roleArn', 'createExperience_roleArn' - 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. For more
-- information, see
-- <https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html IAM roles for Amazon Kendra>.
--
-- 'name', 'createExperience_name' - A name for your Amazon Kendra experience.
--
-- 'indexId', 'createExperience_indexId' - The identifier of the index for your Amazon Kendra experience.
newCreateExperience ::
  -- | 'name'
  Prelude.Text ->
  -- | 'indexId'
  Prelude.Text ->
  CreateExperience
newCreateExperience :: Text -> Text -> CreateExperience
newCreateExperience Text
pName_ Text
pIndexId_ =
  CreateExperience'
    { $sel:clientToken:CreateExperience' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
      $sel:configuration:CreateExperience' :: Maybe ExperienceConfiguration
configuration = forall a. Maybe a
Prelude.Nothing,
      $sel:description:CreateExperience' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:CreateExperience' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:name:CreateExperience' :: Text
name = Text
pName_,
      $sel:indexId:CreateExperience' :: Text
indexId = Text
pIndexId_
    }

-- | A token that you provide to identify the request to create your Amazon
-- Kendra experience. Multiple calls to the @CreateExperience@ API with the
-- same client token creates only one Amazon Kendra experience.
createExperience_clientToken :: Lens.Lens' CreateExperience (Prelude.Maybe Prelude.Text)
createExperience_clientToken :: Lens' CreateExperience (Maybe Text)
createExperience_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateExperience' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateExperience' :: CreateExperience -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateExperience
s@CreateExperience' {} Maybe Text
a -> CreateExperience
s {$sel:clientToken:CreateExperience' :: Maybe Text
clientToken = Maybe Text
a} :: CreateExperience)

-- | 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.
createExperience_configuration :: Lens.Lens' CreateExperience (Prelude.Maybe ExperienceConfiguration)
createExperience_configuration :: Lens' CreateExperience (Maybe ExperienceConfiguration)
createExperience_configuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateExperience' {Maybe ExperienceConfiguration
configuration :: Maybe ExperienceConfiguration
$sel:configuration:CreateExperience' :: CreateExperience -> Maybe ExperienceConfiguration
configuration} -> Maybe ExperienceConfiguration
configuration) (\s :: CreateExperience
s@CreateExperience' {} Maybe ExperienceConfiguration
a -> CreateExperience
s {$sel:configuration:CreateExperience' :: Maybe ExperienceConfiguration
configuration = Maybe ExperienceConfiguration
a} :: CreateExperience)

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

-- | 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. For more
-- information, see
-- <https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html IAM roles for Amazon Kendra>.
createExperience_roleArn :: Lens.Lens' CreateExperience (Prelude.Maybe Prelude.Text)
createExperience_roleArn :: Lens' CreateExperience (Maybe Text)
createExperience_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateExperience' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:CreateExperience' :: CreateExperience -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: CreateExperience
s@CreateExperience' {} Maybe Text
a -> CreateExperience
s {$sel:roleArn:CreateExperience' :: Maybe Text
roleArn = Maybe Text
a} :: CreateExperience)

-- | A name for your Amazon Kendra experience.
createExperience_name :: Lens.Lens' CreateExperience Prelude.Text
createExperience_name :: Lens' CreateExperience Text
createExperience_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateExperience' {Text
name :: Text
$sel:name:CreateExperience' :: CreateExperience -> Text
name} -> Text
name) (\s :: CreateExperience
s@CreateExperience' {} Text
a -> CreateExperience
s {$sel:name:CreateExperience' :: Text
name = Text
a} :: CreateExperience)

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

instance Core.AWSRequest CreateExperience where
  type
    AWSResponse CreateExperience =
      CreateExperienceResponse
  request :: (Service -> Service)
-> CreateExperience -> Request CreateExperience
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 CreateExperience
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateExperience)))
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 ->
          Int -> Text -> CreateExperienceResponse
CreateExperienceResponse'
            forall (f :: * -> *) a b. Functor 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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"Id")
      )

instance Prelude.Hashable CreateExperience where
  hashWithSalt :: Int -> CreateExperience -> Int
hashWithSalt Int
_salt CreateExperience' {Maybe Text
Maybe ExperienceConfiguration
Text
indexId :: Text
name :: Text
roleArn :: Maybe Text
description :: Maybe Text
configuration :: Maybe ExperienceConfiguration
clientToken :: Maybe Text
$sel:indexId:CreateExperience' :: CreateExperience -> Text
$sel:name:CreateExperience' :: CreateExperience -> Text
$sel:roleArn:CreateExperience' :: CreateExperience -> Maybe Text
$sel:description:CreateExperience' :: CreateExperience -> Maybe Text
$sel:configuration:CreateExperience' :: CreateExperience -> Maybe ExperienceConfiguration
$sel:clientToken:CreateExperience' :: CreateExperience -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExperienceConfiguration
configuration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
roleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
indexId

instance Prelude.NFData CreateExperience where
  rnf :: CreateExperience -> ()
rnf CreateExperience' {Maybe Text
Maybe ExperienceConfiguration
Text
indexId :: Text
name :: Text
roleArn :: Maybe Text
description :: Maybe Text
configuration :: Maybe ExperienceConfiguration
clientToken :: Maybe Text
$sel:indexId:CreateExperience' :: CreateExperience -> Text
$sel:name:CreateExperience' :: CreateExperience -> Text
$sel:roleArn:CreateExperience' :: CreateExperience -> Maybe Text
$sel:description:CreateExperience' :: CreateExperience -> Maybe Text
$sel:configuration:CreateExperience' :: CreateExperience -> Maybe ExperienceConfiguration
$sel:clientToken:CreateExperience' :: CreateExperience -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Text
description
      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 Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
indexId

instance Data.ToHeaders CreateExperience where
  toHeaders :: CreateExperience -> 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.CreateExperience" ::
                          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 CreateExperience where
  toJSON :: CreateExperience -> Value
toJSON CreateExperience' {Maybe Text
Maybe ExperienceConfiguration
Text
indexId :: Text
name :: Text
roleArn :: Maybe Text
description :: Maybe Text
configuration :: Maybe ExperienceConfiguration
clientToken :: Maybe Text
$sel:indexId:CreateExperience' :: CreateExperience -> Text
$sel:name:CreateExperience' :: CreateExperience -> Text
$sel:roleArn:CreateExperience' :: CreateExperience -> Maybe Text
$sel:description:CreateExperience' :: CreateExperience -> Maybe Text
$sel:configuration:CreateExperience' :: CreateExperience -> Maybe ExperienceConfiguration
$sel:clientToken:CreateExperience' :: CreateExperience -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ClientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clientToken,
            (Key
"Configuration" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ExperienceConfiguration
configuration,
            (Key
"Description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"RoleArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
roleArn,
            forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name),
            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 CreateExperience where
  toPath :: CreateExperience -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newCreateExperienceResponse' smart constructor.
data CreateExperienceResponse = CreateExperienceResponse'
  { -- | The response's http status code.
    CreateExperienceResponse -> Int
httpStatus :: Prelude.Int,
    -- | The identifier for your created Amazon Kendra experience.
    CreateExperienceResponse -> Text
id :: Prelude.Text
  }
  deriving (CreateExperienceResponse -> CreateExperienceResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateExperienceResponse -> CreateExperienceResponse -> Bool
$c/= :: CreateExperienceResponse -> CreateExperienceResponse -> Bool
== :: CreateExperienceResponse -> CreateExperienceResponse -> Bool
$c== :: CreateExperienceResponse -> CreateExperienceResponse -> Bool
Prelude.Eq, ReadPrec [CreateExperienceResponse]
ReadPrec CreateExperienceResponse
Int -> ReadS CreateExperienceResponse
ReadS [CreateExperienceResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateExperienceResponse]
$creadListPrec :: ReadPrec [CreateExperienceResponse]
readPrec :: ReadPrec CreateExperienceResponse
$creadPrec :: ReadPrec CreateExperienceResponse
readList :: ReadS [CreateExperienceResponse]
$creadList :: ReadS [CreateExperienceResponse]
readsPrec :: Int -> ReadS CreateExperienceResponse
$creadsPrec :: Int -> ReadS CreateExperienceResponse
Prelude.Read, Int -> CreateExperienceResponse -> ShowS
[CreateExperienceResponse] -> ShowS
CreateExperienceResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateExperienceResponse] -> ShowS
$cshowList :: [CreateExperienceResponse] -> ShowS
show :: CreateExperienceResponse -> String
$cshow :: CreateExperienceResponse -> String
showsPrec :: Int -> CreateExperienceResponse -> ShowS
$cshowsPrec :: Int -> CreateExperienceResponse -> ShowS
Prelude.Show, forall x.
Rep CreateExperienceResponse x -> CreateExperienceResponse
forall x.
CreateExperienceResponse -> Rep CreateExperienceResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateExperienceResponse x -> CreateExperienceResponse
$cfrom :: forall x.
CreateExperienceResponse -> Rep CreateExperienceResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateExperienceResponse' 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:
--
-- 'httpStatus', 'createExperienceResponse_httpStatus' - The response's http status code.
--
-- 'id', 'createExperienceResponse_id' - The identifier for your created Amazon Kendra experience.
newCreateExperienceResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'id'
  Prelude.Text ->
  CreateExperienceResponse
newCreateExperienceResponse :: Int -> Text -> CreateExperienceResponse
newCreateExperienceResponse Int
pHttpStatus_ Text
pId_ =
  CreateExperienceResponse'
    { $sel:httpStatus:CreateExperienceResponse' :: Int
httpStatus =
        Int
pHttpStatus_,
      $sel:id:CreateExperienceResponse' :: Text
id = Text
pId_
    }

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

-- | The identifier for your created Amazon Kendra experience.
createExperienceResponse_id :: Lens.Lens' CreateExperienceResponse Prelude.Text
createExperienceResponse_id :: Lens' CreateExperienceResponse Text
createExperienceResponse_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateExperienceResponse' {Text
id :: Text
$sel:id:CreateExperienceResponse' :: CreateExperienceResponse -> Text
id} -> Text
id) (\s :: CreateExperienceResponse
s@CreateExperienceResponse' {} Text
a -> CreateExperienceResponse
s {$sel:id:CreateExperienceResponse' :: Text
id = Text
a} :: CreateExperienceResponse)

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