{-# 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.WorkDocs.CreateComment
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Adds a new comment to the specified document version.
module Amazonka.WorkDocs.CreateComment
  ( -- * Creating a Request
    CreateComment (..),
    newCreateComment,

    -- * Request Lenses
    createComment_authenticationToken,
    createComment_notifyCollaborators,
    createComment_parentId,
    createComment_threadId,
    createComment_visibility,
    createComment_documentId,
    createComment_versionId,
    createComment_text,

    -- * Destructuring the Response
    CreateCommentResponse (..),
    newCreateCommentResponse,

    -- * Response Lenses
    createCommentResponse_comment,
    createCommentResponse_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.WorkDocs.Types

-- | /See:/ 'newCreateComment' smart constructor.
data CreateComment = CreateComment'
  { -- | Amazon WorkDocs authentication token. Not required when using AWS
    -- administrator credentials to access the API.
    CreateComment -> Maybe (Sensitive Text)
authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Set this parameter to TRUE to send an email out to the document
    -- collaborators after the comment is created.
    CreateComment -> Maybe Bool
notifyCollaborators :: Prelude.Maybe Prelude.Bool,
    -- | The ID of the parent comment.
    CreateComment -> Maybe Text
parentId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the root comment in the thread.
    CreateComment -> Maybe Text
threadId :: Prelude.Maybe Prelude.Text,
    -- | The visibility of the comment. Options are either PRIVATE, where the
    -- comment is visible only to the comment author and document owner and
    -- co-owners, or PUBLIC, where the comment is visible to document owners,
    -- co-owners, and contributors.
    CreateComment -> Maybe CommentVisibilityType
visibility :: Prelude.Maybe CommentVisibilityType,
    -- | The ID of the document.
    CreateComment -> Text
documentId :: Prelude.Text,
    -- | The ID of the document version.
    CreateComment -> Text
versionId :: Prelude.Text,
    -- | The text of the comment.
    CreateComment -> Sensitive Text
text :: Data.Sensitive Prelude.Text
  }
  deriving (CreateComment -> CreateComment -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateComment -> CreateComment -> Bool
$c/= :: CreateComment -> CreateComment -> Bool
== :: CreateComment -> CreateComment -> Bool
$c== :: CreateComment -> CreateComment -> Bool
Prelude.Eq, Int -> CreateComment -> ShowS
[CreateComment] -> ShowS
CreateComment -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateComment] -> ShowS
$cshowList :: [CreateComment] -> ShowS
show :: CreateComment -> String
$cshow :: CreateComment -> String
showsPrec :: Int -> CreateComment -> ShowS
$cshowsPrec :: Int -> CreateComment -> ShowS
Prelude.Show, forall x. Rep CreateComment x -> CreateComment
forall x. CreateComment -> Rep CreateComment x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateComment x -> CreateComment
$cfrom :: forall x. CreateComment -> Rep CreateComment x
Prelude.Generic)

-- |
-- Create a value of 'CreateComment' 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:
--
-- 'authenticationToken', 'createComment_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
--
-- 'notifyCollaborators', 'createComment_notifyCollaborators' - Set this parameter to TRUE to send an email out to the document
-- collaborators after the comment is created.
--
-- 'parentId', 'createComment_parentId' - The ID of the parent comment.
--
-- 'threadId', 'createComment_threadId' - The ID of the root comment in the thread.
--
-- 'visibility', 'createComment_visibility' - The visibility of the comment. Options are either PRIVATE, where the
-- comment is visible only to the comment author and document owner and
-- co-owners, or PUBLIC, where the comment is visible to document owners,
-- co-owners, and contributors.
--
-- 'documentId', 'createComment_documentId' - The ID of the document.
--
-- 'versionId', 'createComment_versionId' - The ID of the document version.
--
-- 'text', 'createComment_text' - The text of the comment.
newCreateComment ::
  -- | 'documentId'
  Prelude.Text ->
  -- | 'versionId'
  Prelude.Text ->
  -- | 'text'
  Prelude.Text ->
  CreateComment
newCreateComment :: Text -> Text -> Text -> CreateComment
newCreateComment Text
pDocumentId_ Text
pVersionId_ Text
pText_ =
  CreateComment'
    { $sel:authenticationToken:CreateComment' :: Maybe (Sensitive Text)
authenticationToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:notifyCollaborators:CreateComment' :: Maybe Bool
notifyCollaborators = forall a. Maybe a
Prelude.Nothing,
      $sel:parentId:CreateComment' :: Maybe Text
parentId = forall a. Maybe a
Prelude.Nothing,
      $sel:threadId:CreateComment' :: Maybe Text
threadId = forall a. Maybe a
Prelude.Nothing,
      $sel:visibility:CreateComment' :: Maybe CommentVisibilityType
visibility = forall a. Maybe a
Prelude.Nothing,
      $sel:documentId:CreateComment' :: Text
documentId = Text
pDocumentId_,
      $sel:versionId:CreateComment' :: Text
versionId = Text
pVersionId_,
      $sel:text:CreateComment' :: Sensitive Text
text = forall a. Iso' (Sensitive a) a
Data._Sensitive forall t b. AReview t b -> b -> t
Lens.# Text
pText_
    }

-- | Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
createComment_authenticationToken :: Lens.Lens' CreateComment (Prelude.Maybe Prelude.Text)
createComment_authenticationToken :: Lens' CreateComment (Maybe Text)
createComment_authenticationToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateComment' {Maybe (Sensitive Text)
authenticationToken :: Maybe (Sensitive Text)
$sel:authenticationToken:CreateComment' :: CreateComment -> Maybe (Sensitive Text)
authenticationToken} -> Maybe (Sensitive Text)
authenticationToken) (\s :: CreateComment
s@CreateComment' {} Maybe (Sensitive Text)
a -> CreateComment
s {$sel:authenticationToken:CreateComment' :: Maybe (Sensitive Text)
authenticationToken = Maybe (Sensitive Text)
a} :: CreateComment) 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. Iso' (Sensitive a) a
Data._Sensitive

-- | Set this parameter to TRUE to send an email out to the document
-- collaborators after the comment is created.
createComment_notifyCollaborators :: Lens.Lens' CreateComment (Prelude.Maybe Prelude.Bool)
createComment_notifyCollaborators :: Lens' CreateComment (Maybe Bool)
createComment_notifyCollaborators = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateComment' {Maybe Bool
notifyCollaborators :: Maybe Bool
$sel:notifyCollaborators:CreateComment' :: CreateComment -> Maybe Bool
notifyCollaborators} -> Maybe Bool
notifyCollaborators) (\s :: CreateComment
s@CreateComment' {} Maybe Bool
a -> CreateComment
s {$sel:notifyCollaborators:CreateComment' :: Maybe Bool
notifyCollaborators = Maybe Bool
a} :: CreateComment)

-- | The ID of the parent comment.
createComment_parentId :: Lens.Lens' CreateComment (Prelude.Maybe Prelude.Text)
createComment_parentId :: Lens' CreateComment (Maybe Text)
createComment_parentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateComment' {Maybe Text
parentId :: Maybe Text
$sel:parentId:CreateComment' :: CreateComment -> Maybe Text
parentId} -> Maybe Text
parentId) (\s :: CreateComment
s@CreateComment' {} Maybe Text
a -> CreateComment
s {$sel:parentId:CreateComment' :: Maybe Text
parentId = Maybe Text
a} :: CreateComment)

-- | The ID of the root comment in the thread.
createComment_threadId :: Lens.Lens' CreateComment (Prelude.Maybe Prelude.Text)
createComment_threadId :: Lens' CreateComment (Maybe Text)
createComment_threadId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateComment' {Maybe Text
threadId :: Maybe Text
$sel:threadId:CreateComment' :: CreateComment -> Maybe Text
threadId} -> Maybe Text
threadId) (\s :: CreateComment
s@CreateComment' {} Maybe Text
a -> CreateComment
s {$sel:threadId:CreateComment' :: Maybe Text
threadId = Maybe Text
a} :: CreateComment)

-- | The visibility of the comment. Options are either PRIVATE, where the
-- comment is visible only to the comment author and document owner and
-- co-owners, or PUBLIC, where the comment is visible to document owners,
-- co-owners, and contributors.
createComment_visibility :: Lens.Lens' CreateComment (Prelude.Maybe CommentVisibilityType)
createComment_visibility :: Lens' CreateComment (Maybe CommentVisibilityType)
createComment_visibility = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateComment' {Maybe CommentVisibilityType
visibility :: Maybe CommentVisibilityType
$sel:visibility:CreateComment' :: CreateComment -> Maybe CommentVisibilityType
visibility} -> Maybe CommentVisibilityType
visibility) (\s :: CreateComment
s@CreateComment' {} Maybe CommentVisibilityType
a -> CreateComment
s {$sel:visibility:CreateComment' :: Maybe CommentVisibilityType
visibility = Maybe CommentVisibilityType
a} :: CreateComment)

-- | The ID of the document.
createComment_documentId :: Lens.Lens' CreateComment Prelude.Text
createComment_documentId :: Lens' CreateComment Text
createComment_documentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateComment' {Text
documentId :: Text
$sel:documentId:CreateComment' :: CreateComment -> Text
documentId} -> Text
documentId) (\s :: CreateComment
s@CreateComment' {} Text
a -> CreateComment
s {$sel:documentId:CreateComment' :: Text
documentId = Text
a} :: CreateComment)

-- | The ID of the document version.
createComment_versionId :: Lens.Lens' CreateComment Prelude.Text
createComment_versionId :: Lens' CreateComment Text
createComment_versionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateComment' {Text
versionId :: Text
$sel:versionId:CreateComment' :: CreateComment -> Text
versionId} -> Text
versionId) (\s :: CreateComment
s@CreateComment' {} Text
a -> CreateComment
s {$sel:versionId:CreateComment' :: Text
versionId = Text
a} :: CreateComment)

-- | The text of the comment.
createComment_text :: Lens.Lens' CreateComment Prelude.Text
createComment_text :: Lens' CreateComment Text
createComment_text = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateComment' {Sensitive Text
text :: Sensitive Text
$sel:text:CreateComment' :: CreateComment -> Sensitive Text
text} -> Sensitive Text
text) (\s :: CreateComment
s@CreateComment' {} Sensitive Text
a -> CreateComment
s {$sel:text:CreateComment' :: Sensitive Text
text = Sensitive Text
a} :: CreateComment) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a. Iso' (Sensitive a) a
Data._Sensitive

instance Core.AWSRequest CreateComment where
  type
    AWSResponse CreateComment =
      CreateCommentResponse
  request :: (Service -> Service) -> CreateComment -> Request CreateComment
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 CreateComment
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateComment)))
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 Comment -> Int -> CreateCommentResponse
CreateCommentResponse'
            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
"Comment")
            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 CreateComment where
  hashWithSalt :: Int -> CreateComment -> Int
hashWithSalt Int
_salt CreateComment' {Maybe Bool
Maybe Text
Maybe (Sensitive Text)
Maybe CommentVisibilityType
Text
Sensitive Text
text :: Sensitive Text
versionId :: Text
documentId :: Text
visibility :: Maybe CommentVisibilityType
threadId :: Maybe Text
parentId :: Maybe Text
notifyCollaborators :: Maybe Bool
authenticationToken :: Maybe (Sensitive Text)
$sel:text:CreateComment' :: CreateComment -> Sensitive Text
$sel:versionId:CreateComment' :: CreateComment -> Text
$sel:documentId:CreateComment' :: CreateComment -> Text
$sel:visibility:CreateComment' :: CreateComment -> Maybe CommentVisibilityType
$sel:threadId:CreateComment' :: CreateComment -> Maybe Text
$sel:parentId:CreateComment' :: CreateComment -> Maybe Text
$sel:notifyCollaborators:CreateComment' :: CreateComment -> Maybe Bool
$sel:authenticationToken:CreateComment' :: CreateComment -> Maybe (Sensitive Text)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
authenticationToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
notifyCollaborators
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
parentId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
threadId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CommentVisibilityType
visibility
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
documentId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
versionId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Sensitive Text
text

instance Prelude.NFData CreateComment where
  rnf :: CreateComment -> ()
rnf CreateComment' {Maybe Bool
Maybe Text
Maybe (Sensitive Text)
Maybe CommentVisibilityType
Text
Sensitive Text
text :: Sensitive Text
versionId :: Text
documentId :: Text
visibility :: Maybe CommentVisibilityType
threadId :: Maybe Text
parentId :: Maybe Text
notifyCollaborators :: Maybe Bool
authenticationToken :: Maybe (Sensitive Text)
$sel:text:CreateComment' :: CreateComment -> Sensitive Text
$sel:versionId:CreateComment' :: CreateComment -> Text
$sel:documentId:CreateComment' :: CreateComment -> Text
$sel:visibility:CreateComment' :: CreateComment -> Maybe CommentVisibilityType
$sel:threadId:CreateComment' :: CreateComment -> Maybe Text
$sel:parentId:CreateComment' :: CreateComment -> Maybe Text
$sel:notifyCollaborators:CreateComment' :: CreateComment -> Maybe Bool
$sel:authenticationToken:CreateComment' :: CreateComment -> Maybe (Sensitive Text)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
authenticationToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
notifyCollaborators
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
parentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
threadId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CommentVisibilityType
visibility
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
documentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
versionId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Sensitive Text
text

instance Data.ToHeaders CreateComment where
  toHeaders :: CreateComment -> ResponseHeaders
toHeaders CreateComment' {Maybe Bool
Maybe Text
Maybe (Sensitive Text)
Maybe CommentVisibilityType
Text
Sensitive Text
text :: Sensitive Text
versionId :: Text
documentId :: Text
visibility :: Maybe CommentVisibilityType
threadId :: Maybe Text
parentId :: Maybe Text
notifyCollaborators :: Maybe Bool
authenticationToken :: Maybe (Sensitive Text)
$sel:text:CreateComment' :: CreateComment -> Sensitive Text
$sel:versionId:CreateComment' :: CreateComment -> Text
$sel:documentId:CreateComment' :: CreateComment -> Text
$sel:visibility:CreateComment' :: CreateComment -> Maybe CommentVisibilityType
$sel:threadId:CreateComment' :: CreateComment -> Maybe Text
$sel:parentId:CreateComment' :: CreateComment -> Maybe Text
$sel:notifyCollaborators:CreateComment' :: CreateComment -> Maybe Bool
$sel:authenticationToken:CreateComment' :: CreateComment -> Maybe (Sensitive Text)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ HeaderName
"Authentication" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Maybe (Sensitive Text)
authenticationToken,
        HeaderName
"Content-Type"
          forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# (ByteString
"application/x-amz-json-1.1" :: Prelude.ByteString)
      ]

instance Data.ToJSON CreateComment where
  toJSON :: CreateComment -> Value
toJSON CreateComment' {Maybe Bool
Maybe Text
Maybe (Sensitive Text)
Maybe CommentVisibilityType
Text
Sensitive Text
text :: Sensitive Text
versionId :: Text
documentId :: Text
visibility :: Maybe CommentVisibilityType
threadId :: Maybe Text
parentId :: Maybe Text
notifyCollaborators :: Maybe Bool
authenticationToken :: Maybe (Sensitive Text)
$sel:text:CreateComment' :: CreateComment -> Sensitive Text
$sel:versionId:CreateComment' :: CreateComment -> Text
$sel:documentId:CreateComment' :: CreateComment -> Text
$sel:visibility:CreateComment' :: CreateComment -> Maybe CommentVisibilityType
$sel:threadId:CreateComment' :: CreateComment -> Maybe Text
$sel:parentId:CreateComment' :: CreateComment -> Maybe Text
$sel:notifyCollaborators:CreateComment' :: CreateComment -> Maybe Bool
$sel:authenticationToken:CreateComment' :: CreateComment -> Maybe (Sensitive Text)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"NotifyCollaborators" 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 Bool
notifyCollaborators,
            (Key
"ParentId" 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
parentId,
            (Key
"ThreadId" 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
threadId,
            (Key
"Visibility" 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 CommentVisibilityType
visibility,
            forall a. a -> Maybe a
Prelude.Just (Key
"Text" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Sensitive Text
text)
          ]
      )

instance Data.ToPath CreateComment where
  toPath :: CreateComment -> ByteString
toPath CreateComment' {Maybe Bool
Maybe Text
Maybe (Sensitive Text)
Maybe CommentVisibilityType
Text
Sensitive Text
text :: Sensitive Text
versionId :: Text
documentId :: Text
visibility :: Maybe CommentVisibilityType
threadId :: Maybe Text
parentId :: Maybe Text
notifyCollaborators :: Maybe Bool
authenticationToken :: Maybe (Sensitive Text)
$sel:text:CreateComment' :: CreateComment -> Sensitive Text
$sel:versionId:CreateComment' :: CreateComment -> Text
$sel:documentId:CreateComment' :: CreateComment -> Text
$sel:visibility:CreateComment' :: CreateComment -> Maybe CommentVisibilityType
$sel:threadId:CreateComment' :: CreateComment -> Maybe Text
$sel:parentId:CreateComment' :: CreateComment -> Maybe Text
$sel:notifyCollaborators:CreateComment' :: CreateComment -> Maybe Bool
$sel:authenticationToken:CreateComment' :: CreateComment -> Maybe (Sensitive Text)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/api/v1/documents/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
documentId,
        ByteString
"/versions/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
versionId,
        ByteString
"/comment"
      ]

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

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

-- |
-- Create a value of 'CreateCommentResponse' 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:
--
-- 'comment', 'createCommentResponse_comment' - The comment that has been created.
--
-- 'httpStatus', 'createCommentResponse_httpStatus' - The response's http status code.
newCreateCommentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateCommentResponse
newCreateCommentResponse :: Int -> CreateCommentResponse
newCreateCommentResponse Int
pHttpStatus_ =
  CreateCommentResponse'
    { $sel:comment:CreateCommentResponse' :: Maybe Comment
comment = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateCommentResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The comment that has been created.
createCommentResponse_comment :: Lens.Lens' CreateCommentResponse (Prelude.Maybe Comment)
createCommentResponse_comment :: Lens' CreateCommentResponse (Maybe Comment)
createCommentResponse_comment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateCommentResponse' {Maybe Comment
comment :: Maybe Comment
$sel:comment:CreateCommentResponse' :: CreateCommentResponse -> Maybe Comment
comment} -> Maybe Comment
comment) (\s :: CreateCommentResponse
s@CreateCommentResponse' {} Maybe Comment
a -> CreateCommentResponse
s {$sel:comment:CreateCommentResponse' :: Maybe Comment
comment = Maybe Comment
a} :: CreateCommentResponse)

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

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