{-# 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.Wisdom.CreateContent
-- 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 Wisdom content. Before to calling this API, use
-- <https://docs.aws.amazon.com/wisdom/latest/APIReference/API_StartContentUpload.html StartContentUpload>
-- to upload an asset.
module Amazonka.Wisdom.CreateContent
  ( -- * Creating a Request
    CreateContent (..),
    newCreateContent,

    -- * Request Lenses
    createContent_clientToken,
    createContent_metadata,
    createContent_overrideLinkOutUri,
    createContent_tags,
    createContent_title,
    createContent_knowledgeBaseId,
    createContent_name,
    createContent_uploadId,

    -- * Destructuring the Response
    CreateContentResponse (..),
    newCreateContentResponse,

    -- * Response Lenses
    createContentResponse_content,
    createContentResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateContent' smart constructor.
data CreateContent = CreateContent'
  { -- | A unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request.
    CreateContent -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | A key\/value map to store attributes without affecting tagging or
    -- recommendations. For example, when synchronizing data between an
    -- external system and Wisdom, you can store an external version identifier
    -- as metadata to utilize for determining drift.
    CreateContent -> Maybe (HashMap Text Text)
metadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The URI you want to use for the article. If the knowledge base has a
    -- templateUri, setting this argument overrides it for this piece of
    -- content.
    CreateContent -> Maybe Text
overrideLinkOutUri :: Prelude.Maybe Prelude.Text,
    -- | The tags used to organize, track, or control access for this resource.
    CreateContent -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The title of the content. If not set, the title is equal to the name.
    CreateContent -> Maybe Text
title :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the knowledge base. Can be either the ID or the ARN.
    -- URLs cannot contain the ARN.
    CreateContent -> Text
knowledgeBaseId :: Prelude.Text,
    -- | The name of the content. Each piece of content in a knowledge base must
    -- have a unique name. You can retrieve a piece of content using only its
    -- knowledge base and its name with the
    -- <https://docs.aws.amazon.com/wisdom/latest/APIReference/API_SearchContent.html SearchContent>
    -- API.
    CreateContent -> Text
name :: Prelude.Text,
    -- | A pointer to the uploaded asset. This value is returned by
    -- <https://docs.aws.amazon.com/wisdom/latest/APIReference/API_StartContentUpload.html StartContentUpload>.
    CreateContent -> Text
uploadId :: Prelude.Text
  }
  deriving (CreateContent -> CreateContent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateContent -> CreateContent -> Bool
$c/= :: CreateContent -> CreateContent -> Bool
== :: CreateContent -> CreateContent -> Bool
$c== :: CreateContent -> CreateContent -> Bool
Prelude.Eq, ReadPrec [CreateContent]
ReadPrec CreateContent
Int -> ReadS CreateContent
ReadS [CreateContent]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateContent]
$creadListPrec :: ReadPrec [CreateContent]
readPrec :: ReadPrec CreateContent
$creadPrec :: ReadPrec CreateContent
readList :: ReadS [CreateContent]
$creadList :: ReadS [CreateContent]
readsPrec :: Int -> ReadS CreateContent
$creadsPrec :: Int -> ReadS CreateContent
Prelude.Read, Int -> CreateContent -> ShowS
[CreateContent] -> ShowS
CreateContent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateContent] -> ShowS
$cshowList :: [CreateContent] -> ShowS
show :: CreateContent -> String
$cshow :: CreateContent -> String
showsPrec :: Int -> CreateContent -> ShowS
$cshowsPrec :: Int -> CreateContent -> ShowS
Prelude.Show, forall x. Rep CreateContent x -> CreateContent
forall x. CreateContent -> Rep CreateContent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateContent x -> CreateContent
$cfrom :: forall x. CreateContent -> Rep CreateContent x
Prelude.Generic)

-- |
-- Create a value of 'CreateContent' 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', 'createContent_clientToken' - A unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request.
--
-- 'metadata', 'createContent_metadata' - A key\/value map to store attributes without affecting tagging or
-- recommendations. For example, when synchronizing data between an
-- external system and Wisdom, you can store an external version identifier
-- as metadata to utilize for determining drift.
--
-- 'overrideLinkOutUri', 'createContent_overrideLinkOutUri' - The URI you want to use for the article. If the knowledge base has a
-- templateUri, setting this argument overrides it for this piece of
-- content.
--
-- 'tags', 'createContent_tags' - The tags used to organize, track, or control access for this resource.
--
-- 'title', 'createContent_title' - The title of the content. If not set, the title is equal to the name.
--
-- 'knowledgeBaseId', 'createContent_knowledgeBaseId' - The identifier of the knowledge base. Can be either the ID or the ARN.
-- URLs cannot contain the ARN.
--
-- 'name', 'createContent_name' - The name of the content. Each piece of content in a knowledge base must
-- have a unique name. You can retrieve a piece of content using only its
-- knowledge base and its name with the
-- <https://docs.aws.amazon.com/wisdom/latest/APIReference/API_SearchContent.html SearchContent>
-- API.
--
-- 'uploadId', 'createContent_uploadId' - A pointer to the uploaded asset. This value is returned by
-- <https://docs.aws.amazon.com/wisdom/latest/APIReference/API_StartContentUpload.html StartContentUpload>.
newCreateContent ::
  -- | 'knowledgeBaseId'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  -- | 'uploadId'
  Prelude.Text ->
  CreateContent
newCreateContent :: Text -> Text -> Text -> CreateContent
newCreateContent Text
pKnowledgeBaseId_ Text
pName_ Text
pUploadId_ =
  CreateContent'
    { $sel:clientToken:CreateContent' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
      $sel:metadata:CreateContent' :: Maybe (HashMap Text Text)
metadata = forall a. Maybe a
Prelude.Nothing,
      $sel:overrideLinkOutUri:CreateContent' :: Maybe Text
overrideLinkOutUri = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateContent' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:title:CreateContent' :: Maybe Text
title = forall a. Maybe a
Prelude.Nothing,
      $sel:knowledgeBaseId:CreateContent' :: Text
knowledgeBaseId = Text
pKnowledgeBaseId_,
      $sel:name:CreateContent' :: Text
name = Text
pName_,
      $sel:uploadId:CreateContent' :: Text
uploadId = Text
pUploadId_
    }

-- | A unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request.
createContent_clientToken :: Lens.Lens' CreateContent (Prelude.Maybe Prelude.Text)
createContent_clientToken :: Lens' CreateContent (Maybe Text)
createContent_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateContent' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateContent' :: CreateContent -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateContent
s@CreateContent' {} Maybe Text
a -> CreateContent
s {$sel:clientToken:CreateContent' :: Maybe Text
clientToken = Maybe Text
a} :: CreateContent)

-- | A key\/value map to store attributes without affecting tagging or
-- recommendations. For example, when synchronizing data between an
-- external system and Wisdom, you can store an external version identifier
-- as metadata to utilize for determining drift.
createContent_metadata :: Lens.Lens' CreateContent (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createContent_metadata :: Lens' CreateContent (Maybe (HashMap Text Text))
createContent_metadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateContent' {Maybe (HashMap Text Text)
metadata :: Maybe (HashMap Text Text)
$sel:metadata:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
metadata} -> Maybe (HashMap Text Text)
metadata) (\s :: CreateContent
s@CreateContent' {} Maybe (HashMap Text Text)
a -> CreateContent
s {$sel:metadata:CreateContent' :: Maybe (HashMap Text Text)
metadata = Maybe (HashMap Text Text)
a} :: CreateContent) 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 URI you want to use for the article. If the knowledge base has a
-- templateUri, setting this argument overrides it for this piece of
-- content.
createContent_overrideLinkOutUri :: Lens.Lens' CreateContent (Prelude.Maybe Prelude.Text)
createContent_overrideLinkOutUri :: Lens' CreateContent (Maybe Text)
createContent_overrideLinkOutUri = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateContent' {Maybe Text
overrideLinkOutUri :: Maybe Text
$sel:overrideLinkOutUri:CreateContent' :: CreateContent -> Maybe Text
overrideLinkOutUri} -> Maybe Text
overrideLinkOutUri) (\s :: CreateContent
s@CreateContent' {} Maybe Text
a -> CreateContent
s {$sel:overrideLinkOutUri:CreateContent' :: Maybe Text
overrideLinkOutUri = Maybe Text
a} :: CreateContent)

-- | The tags used to organize, track, or control access for this resource.
createContent_tags :: Lens.Lens' CreateContent (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createContent_tags :: Lens' CreateContent (Maybe (HashMap Text Text))
createContent_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateContent' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateContent
s@CreateContent' {} Maybe (HashMap Text Text)
a -> CreateContent
s {$sel:tags:CreateContent' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateContent) 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 title of the content. If not set, the title is equal to the name.
createContent_title :: Lens.Lens' CreateContent (Prelude.Maybe Prelude.Text)
createContent_title :: Lens' CreateContent (Maybe Text)
createContent_title = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateContent' {Maybe Text
title :: Maybe Text
$sel:title:CreateContent' :: CreateContent -> Maybe Text
title} -> Maybe Text
title) (\s :: CreateContent
s@CreateContent' {} Maybe Text
a -> CreateContent
s {$sel:title:CreateContent' :: Maybe Text
title = Maybe Text
a} :: CreateContent)

-- | The identifier of the knowledge base. Can be either the ID or the ARN.
-- URLs cannot contain the ARN.
createContent_knowledgeBaseId :: Lens.Lens' CreateContent Prelude.Text
createContent_knowledgeBaseId :: Lens' CreateContent Text
createContent_knowledgeBaseId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateContent' {Text
knowledgeBaseId :: Text
$sel:knowledgeBaseId:CreateContent' :: CreateContent -> Text
knowledgeBaseId} -> Text
knowledgeBaseId) (\s :: CreateContent
s@CreateContent' {} Text
a -> CreateContent
s {$sel:knowledgeBaseId:CreateContent' :: Text
knowledgeBaseId = Text
a} :: CreateContent)

-- | The name of the content. Each piece of content in a knowledge base must
-- have a unique name. You can retrieve a piece of content using only its
-- knowledge base and its name with the
-- <https://docs.aws.amazon.com/wisdom/latest/APIReference/API_SearchContent.html SearchContent>
-- API.
createContent_name :: Lens.Lens' CreateContent Prelude.Text
createContent_name :: Lens' CreateContent Text
createContent_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateContent' {Text
name :: Text
$sel:name:CreateContent' :: CreateContent -> Text
name} -> Text
name) (\s :: CreateContent
s@CreateContent' {} Text
a -> CreateContent
s {$sel:name:CreateContent' :: Text
name = Text
a} :: CreateContent)

-- | A pointer to the uploaded asset. This value is returned by
-- <https://docs.aws.amazon.com/wisdom/latest/APIReference/API_StartContentUpload.html StartContentUpload>.
createContent_uploadId :: Lens.Lens' CreateContent Prelude.Text
createContent_uploadId :: Lens' CreateContent Text
createContent_uploadId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateContent' {Text
uploadId :: Text
$sel:uploadId:CreateContent' :: CreateContent -> Text
uploadId} -> Text
uploadId) (\s :: CreateContent
s@CreateContent' {} Text
a -> CreateContent
s {$sel:uploadId:CreateContent' :: Text
uploadId = Text
a} :: CreateContent)

instance Core.AWSRequest CreateContent where
  type
    AWSResponse CreateContent =
      CreateContentResponse
  request :: (Service -> Service) -> CreateContent -> Request CreateContent
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 CreateContent
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateContent)))
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 ContentData -> Int -> CreateContentResponse
CreateContentResponse'
            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
"content")
            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 CreateContent where
  hashWithSalt :: Int -> CreateContent -> Int
hashWithSalt Int
_salt CreateContent' {Maybe Text
Maybe (HashMap Text Text)
Text
uploadId :: Text
name :: Text
knowledgeBaseId :: Text
title :: Maybe Text
tags :: Maybe (HashMap Text Text)
overrideLinkOutUri :: Maybe Text
metadata :: Maybe (HashMap Text Text)
clientToken :: Maybe Text
$sel:uploadId:CreateContent' :: CreateContent -> Text
$sel:name:CreateContent' :: CreateContent -> Text
$sel:knowledgeBaseId:CreateContent' :: CreateContent -> Text
$sel:title:CreateContent' :: CreateContent -> Maybe Text
$sel:tags:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
$sel:overrideLinkOutUri:CreateContent' :: CreateContent -> Maybe Text
$sel:metadata:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
$sel:clientToken:CreateContent' :: CreateContent -> 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 (HashMap Text Text)
metadata
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
overrideLinkOutUri
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
title
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
knowledgeBaseId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
uploadId

instance Prelude.NFData CreateContent where
  rnf :: CreateContent -> ()
rnf CreateContent' {Maybe Text
Maybe (HashMap Text Text)
Text
uploadId :: Text
name :: Text
knowledgeBaseId :: Text
title :: Maybe Text
tags :: Maybe (HashMap Text Text)
overrideLinkOutUri :: Maybe Text
metadata :: Maybe (HashMap Text Text)
clientToken :: Maybe Text
$sel:uploadId:CreateContent' :: CreateContent -> Text
$sel:name:CreateContent' :: CreateContent -> Text
$sel:knowledgeBaseId:CreateContent' :: CreateContent -> Text
$sel:title:CreateContent' :: CreateContent -> Maybe Text
$sel:tags:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
$sel:overrideLinkOutUri:CreateContent' :: CreateContent -> Maybe Text
$sel:metadata:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
$sel:clientToken:CreateContent' :: CreateContent -> 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 (HashMap Text Text)
metadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
overrideLinkOutUri
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
title
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
knowledgeBaseId
      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
uploadId

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

instance Data.ToJSON CreateContent where
  toJSON :: CreateContent -> Value
toJSON CreateContent' {Maybe Text
Maybe (HashMap Text Text)
Text
uploadId :: Text
name :: Text
knowledgeBaseId :: Text
title :: Maybe Text
tags :: Maybe (HashMap Text Text)
overrideLinkOutUri :: Maybe Text
metadata :: Maybe (HashMap Text Text)
clientToken :: Maybe Text
$sel:uploadId:CreateContent' :: CreateContent -> Text
$sel:name:CreateContent' :: CreateContent -> Text
$sel:knowledgeBaseId:CreateContent' :: CreateContent -> Text
$sel:title:CreateContent' :: CreateContent -> Maybe Text
$sel:tags:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
$sel:overrideLinkOutUri:CreateContent' :: CreateContent -> Maybe Text
$sel:metadata:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
$sel:clientToken:CreateContent' :: CreateContent -> 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
"metadata" 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 (HashMap Text Text)
metadata,
            (Key
"overrideLinkOutUri" 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
overrideLinkOutUri,
            (Key
"tags" 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 (HashMap Text Text)
tags,
            (Key
"title" 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
title,
            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
"uploadId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
uploadId)
          ]
      )

instance Data.ToPath CreateContent where
  toPath :: CreateContent -> ByteString
toPath CreateContent' {Maybe Text
Maybe (HashMap Text Text)
Text
uploadId :: Text
name :: Text
knowledgeBaseId :: Text
title :: Maybe Text
tags :: Maybe (HashMap Text Text)
overrideLinkOutUri :: Maybe Text
metadata :: Maybe (HashMap Text Text)
clientToken :: Maybe Text
$sel:uploadId:CreateContent' :: CreateContent -> Text
$sel:name:CreateContent' :: CreateContent -> Text
$sel:knowledgeBaseId:CreateContent' :: CreateContent -> Text
$sel:title:CreateContent' :: CreateContent -> Maybe Text
$sel:tags:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
$sel:overrideLinkOutUri:CreateContent' :: CreateContent -> Maybe Text
$sel:metadata:CreateContent' :: CreateContent -> Maybe (HashMap Text Text)
$sel:clientToken:CreateContent' :: CreateContent -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/knowledgeBases/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
knowledgeBaseId,
        ByteString
"/contents"
      ]

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

-- | /See:/ 'newCreateContentResponse' smart constructor.
data CreateContentResponse = CreateContentResponse'
  { -- | The content.
    CreateContentResponse -> Maybe ContentData
content :: Prelude.Maybe ContentData,
    -- | The response's http status code.
    CreateContentResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateContentResponse -> CreateContentResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateContentResponse -> CreateContentResponse -> Bool
$c/= :: CreateContentResponse -> CreateContentResponse -> Bool
== :: CreateContentResponse -> CreateContentResponse -> Bool
$c== :: CreateContentResponse -> CreateContentResponse -> Bool
Prelude.Eq, Int -> CreateContentResponse -> ShowS
[CreateContentResponse] -> ShowS
CreateContentResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateContentResponse] -> ShowS
$cshowList :: [CreateContentResponse] -> ShowS
show :: CreateContentResponse -> String
$cshow :: CreateContentResponse -> String
showsPrec :: Int -> CreateContentResponse -> ShowS
$cshowsPrec :: Int -> CreateContentResponse -> ShowS
Prelude.Show, forall x. Rep CreateContentResponse x -> CreateContentResponse
forall x. CreateContentResponse -> Rep CreateContentResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateContentResponse x -> CreateContentResponse
$cfrom :: forall x. CreateContentResponse -> Rep CreateContentResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateContentResponse' 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:
--
-- 'content', 'createContentResponse_content' - The content.
--
-- 'httpStatus', 'createContentResponse_httpStatus' - The response's http status code.
newCreateContentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateContentResponse
newCreateContentResponse :: Int -> CreateContentResponse
newCreateContentResponse Int
pHttpStatus_ =
  CreateContentResponse'
    { $sel:content:CreateContentResponse' :: Maybe ContentData
content = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateContentResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The content.
createContentResponse_content :: Lens.Lens' CreateContentResponse (Prelude.Maybe ContentData)
createContentResponse_content :: Lens' CreateContentResponse (Maybe ContentData)
createContentResponse_content = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateContentResponse' {Maybe ContentData
content :: Maybe ContentData
$sel:content:CreateContentResponse' :: CreateContentResponse -> Maybe ContentData
content} -> Maybe ContentData
content) (\s :: CreateContentResponse
s@CreateContentResponse' {} Maybe ContentData
a -> CreateContentResponse
s {$sel:content:CreateContentResponse' :: Maybe ContentData
content = Maybe ContentData
a} :: CreateContentResponse)

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

instance Prelude.NFData CreateContentResponse where
  rnf :: CreateContentResponse -> ()
rnf CreateContentResponse' {Int
Maybe ContentData
httpStatus :: Int
content :: Maybe ContentData
$sel:httpStatus:CreateContentResponse' :: CreateContentResponse -> Int
$sel:content:CreateContentResponse' :: CreateContentResponse -> Maybe ContentData
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ContentData
content
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus