{-# 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.DescribeDocumentVersions
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves the document versions for the specified document.
--
-- By default, only active versions are returned.
--
-- This operation returns paginated results.
module Amazonka.WorkDocs.DescribeDocumentVersions
  ( -- * Creating a Request
    DescribeDocumentVersions (..),
    newDescribeDocumentVersions,

    -- * Request Lenses
    describeDocumentVersions_authenticationToken,
    describeDocumentVersions_fields,
    describeDocumentVersions_include,
    describeDocumentVersions_limit,
    describeDocumentVersions_marker,
    describeDocumentVersions_documentId,

    -- * Destructuring the Response
    DescribeDocumentVersionsResponse (..),
    newDescribeDocumentVersionsResponse,

    -- * Response Lenses
    describeDocumentVersionsResponse_documentVersions,
    describeDocumentVersionsResponse_marker,
    describeDocumentVersionsResponse_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:/ 'newDescribeDocumentVersions' smart constructor.
data DescribeDocumentVersions = DescribeDocumentVersions'
  { -- | Amazon WorkDocs authentication token. Not required when using AWS
    -- administrator credentials to access the API.
    DescribeDocumentVersions -> Maybe (Sensitive Text)
authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Specify \"SOURCE\" to include initialized versions and a URL for the
    -- source document.
    DescribeDocumentVersions -> Maybe Text
fields :: Prelude.Maybe Prelude.Text,
    -- | A comma-separated list of values. Specify \"INITIALIZED\" to include
    -- incomplete versions.
    DescribeDocumentVersions -> Maybe Text
include :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of versions to return with this call.
    DescribeDocumentVersions -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | The marker for the next set of results. (You received this marker from a
    -- previous call.)
    DescribeDocumentVersions -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The ID of the document.
    DescribeDocumentVersions -> Text
documentId :: Prelude.Text
  }
  deriving (DescribeDocumentVersions -> DescribeDocumentVersions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDocumentVersions -> DescribeDocumentVersions -> Bool
$c/= :: DescribeDocumentVersions -> DescribeDocumentVersions -> Bool
== :: DescribeDocumentVersions -> DescribeDocumentVersions -> Bool
$c== :: DescribeDocumentVersions -> DescribeDocumentVersions -> Bool
Prelude.Eq, Int -> DescribeDocumentVersions -> ShowS
[DescribeDocumentVersions] -> ShowS
DescribeDocumentVersions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDocumentVersions] -> ShowS
$cshowList :: [DescribeDocumentVersions] -> ShowS
show :: DescribeDocumentVersions -> String
$cshow :: DescribeDocumentVersions -> String
showsPrec :: Int -> DescribeDocumentVersions -> ShowS
$cshowsPrec :: Int -> DescribeDocumentVersions -> ShowS
Prelude.Show, forall x.
Rep DescribeDocumentVersions x -> DescribeDocumentVersions
forall x.
DescribeDocumentVersions -> Rep DescribeDocumentVersions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDocumentVersions x -> DescribeDocumentVersions
$cfrom :: forall x.
DescribeDocumentVersions -> Rep DescribeDocumentVersions x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDocumentVersions' 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', 'describeDocumentVersions_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
--
-- 'fields', 'describeDocumentVersions_fields' - Specify \"SOURCE\" to include initialized versions and a URL for the
-- source document.
--
-- 'include', 'describeDocumentVersions_include' - A comma-separated list of values. Specify \"INITIALIZED\" to include
-- incomplete versions.
--
-- 'limit', 'describeDocumentVersions_limit' - The maximum number of versions to return with this call.
--
-- 'marker', 'describeDocumentVersions_marker' - The marker for the next set of results. (You received this marker from a
-- previous call.)
--
-- 'documentId', 'describeDocumentVersions_documentId' - The ID of the document.
newDescribeDocumentVersions ::
  -- | 'documentId'
  Prelude.Text ->
  DescribeDocumentVersions
newDescribeDocumentVersions :: Text -> DescribeDocumentVersions
newDescribeDocumentVersions Text
pDocumentId_ =
  DescribeDocumentVersions'
    { $sel:authenticationToken:DescribeDocumentVersions' :: Maybe (Sensitive Text)
authenticationToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:fields:DescribeDocumentVersions' :: Maybe Text
fields = forall a. Maybe a
Prelude.Nothing,
      $sel:include:DescribeDocumentVersions' :: Maybe Text
include = forall a. Maybe a
Prelude.Nothing,
      $sel:limit:DescribeDocumentVersions' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeDocumentVersions' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:documentId:DescribeDocumentVersions' :: Text
documentId = Text
pDocumentId_
    }

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

-- | Specify \"SOURCE\" to include initialized versions and a URL for the
-- source document.
describeDocumentVersions_fields :: Lens.Lens' DescribeDocumentVersions (Prelude.Maybe Prelude.Text)
describeDocumentVersions_fields :: Lens' DescribeDocumentVersions (Maybe Text)
describeDocumentVersions_fields = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDocumentVersions' {Maybe Text
fields :: Maybe Text
$sel:fields:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
fields} -> Maybe Text
fields) (\s :: DescribeDocumentVersions
s@DescribeDocumentVersions' {} Maybe Text
a -> DescribeDocumentVersions
s {$sel:fields:DescribeDocumentVersions' :: Maybe Text
fields = Maybe Text
a} :: DescribeDocumentVersions)

-- | A comma-separated list of values. Specify \"INITIALIZED\" to include
-- incomplete versions.
describeDocumentVersions_include :: Lens.Lens' DescribeDocumentVersions (Prelude.Maybe Prelude.Text)
describeDocumentVersions_include :: Lens' DescribeDocumentVersions (Maybe Text)
describeDocumentVersions_include = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDocumentVersions' {Maybe Text
include :: Maybe Text
$sel:include:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
include} -> Maybe Text
include) (\s :: DescribeDocumentVersions
s@DescribeDocumentVersions' {} Maybe Text
a -> DescribeDocumentVersions
s {$sel:include:DescribeDocumentVersions' :: Maybe Text
include = Maybe Text
a} :: DescribeDocumentVersions)

-- | The maximum number of versions to return with this call.
describeDocumentVersions_limit :: Lens.Lens' DescribeDocumentVersions (Prelude.Maybe Prelude.Natural)
describeDocumentVersions_limit :: Lens' DescribeDocumentVersions (Maybe Natural)
describeDocumentVersions_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDocumentVersions' {Maybe Natural
limit :: Maybe Natural
$sel:limit:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: DescribeDocumentVersions
s@DescribeDocumentVersions' {} Maybe Natural
a -> DescribeDocumentVersions
s {$sel:limit:DescribeDocumentVersions' :: Maybe Natural
limit = Maybe Natural
a} :: DescribeDocumentVersions)

-- | The marker for the next set of results. (You received this marker from a
-- previous call.)
describeDocumentVersions_marker :: Lens.Lens' DescribeDocumentVersions (Prelude.Maybe Prelude.Text)
describeDocumentVersions_marker :: Lens' DescribeDocumentVersions (Maybe Text)
describeDocumentVersions_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDocumentVersions' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeDocumentVersions
s@DescribeDocumentVersions' {} Maybe Text
a -> DescribeDocumentVersions
s {$sel:marker:DescribeDocumentVersions' :: Maybe Text
marker = Maybe Text
a} :: DescribeDocumentVersions)

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

instance Core.AWSPager DescribeDocumentVersions where
  page :: DescribeDocumentVersions
-> AWSResponse DescribeDocumentVersions
-> Maybe DescribeDocumentVersions
page DescribeDocumentVersions
rq AWSResponse DescribeDocumentVersions
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeDocumentVersions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDocumentVersionsResponse (Maybe Text)
describeDocumentVersionsResponse_marker
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeDocumentVersions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeDocumentVersionsResponse (Maybe [DocumentVersionMetadata])
describeDocumentVersionsResponse_documentVersions
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeDocumentVersions
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeDocumentVersions (Maybe Text)
describeDocumentVersions_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeDocumentVersions
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDocumentVersionsResponse (Maybe Text)
describeDocumentVersionsResponse_marker
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeDocumentVersions where
  type
    AWSResponse DescribeDocumentVersions =
      DescribeDocumentVersionsResponse
  request :: (Service -> Service)
-> DescribeDocumentVersions -> Request DescribeDocumentVersions
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeDocumentVersions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeDocumentVersions)))
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 [DocumentVersionMetadata]
-> Maybe Text -> Int -> DescribeDocumentVersionsResponse
DescribeDocumentVersionsResponse'
            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
"DocumentVersions"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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
"Marker")
            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 DescribeDocumentVersions where
  hashWithSalt :: Int -> DescribeDocumentVersions -> Int
hashWithSalt Int
_salt DescribeDocumentVersions' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Text
documentId :: Text
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
fields :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:documentId:DescribeDocumentVersions' :: DescribeDocumentVersions -> Text
$sel:marker:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:limit:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Natural
$sel:include:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:fields:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:authenticationToken:DescribeDocumentVersions' :: DescribeDocumentVersions -> 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 Text
fields
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
include
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
limit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
documentId

instance Prelude.NFData DescribeDocumentVersions where
  rnf :: DescribeDocumentVersions -> ()
rnf DescribeDocumentVersions' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Text
documentId :: Text
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
fields :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:documentId:DescribeDocumentVersions' :: DescribeDocumentVersions -> Text
$sel:marker:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:limit:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Natural
$sel:include:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:fields:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:authenticationToken:DescribeDocumentVersions' :: DescribeDocumentVersions -> 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 Text
fields
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
include
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
limit
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
documentId

instance Data.ToHeaders DescribeDocumentVersions where
  toHeaders :: DescribeDocumentVersions -> ResponseHeaders
toHeaders DescribeDocumentVersions' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Text
documentId :: Text
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
fields :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:documentId:DescribeDocumentVersions' :: DescribeDocumentVersions -> Text
$sel:marker:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:limit:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Natural
$sel:include:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:fields:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:authenticationToken:DescribeDocumentVersions' :: DescribeDocumentVersions -> 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.ToPath DescribeDocumentVersions where
  toPath :: DescribeDocumentVersions -> ByteString
toPath DescribeDocumentVersions' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Text
documentId :: Text
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
fields :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:documentId:DescribeDocumentVersions' :: DescribeDocumentVersions -> Text
$sel:marker:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:limit:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Natural
$sel:include:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:fields:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:authenticationToken:DescribeDocumentVersions' :: DescribeDocumentVersions -> 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"
      ]

instance Data.ToQuery DescribeDocumentVersions where
  toQuery :: DescribeDocumentVersions -> QueryString
toQuery DescribeDocumentVersions' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Text
documentId :: Text
marker :: Maybe Text
limit :: Maybe Natural
include :: Maybe Text
fields :: Maybe Text
authenticationToken :: Maybe (Sensitive Text)
$sel:documentId:DescribeDocumentVersions' :: DescribeDocumentVersions -> Text
$sel:marker:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:limit:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Natural
$sel:include:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:fields:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe Text
$sel:authenticationToken:DescribeDocumentVersions' :: DescribeDocumentVersions -> Maybe (Sensitive Text)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"fields" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
fields,
        ByteString
"include" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
include,
        ByteString
"limit" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
limit,
        ByteString
"marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker
      ]

-- | /See:/ 'newDescribeDocumentVersionsResponse' smart constructor.
data DescribeDocumentVersionsResponse = DescribeDocumentVersionsResponse'
  { -- | The document versions.
    DescribeDocumentVersionsResponse -> Maybe [DocumentVersionMetadata]
documentVersions :: Prelude.Maybe [DocumentVersionMetadata],
    -- | The marker to use when requesting the next set of results. If there are
    -- no additional results, the string is empty.
    DescribeDocumentVersionsResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeDocumentVersionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeDocumentVersionsResponse
-> DescribeDocumentVersionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDocumentVersionsResponse
-> DescribeDocumentVersionsResponse -> Bool
$c/= :: DescribeDocumentVersionsResponse
-> DescribeDocumentVersionsResponse -> Bool
== :: DescribeDocumentVersionsResponse
-> DescribeDocumentVersionsResponse -> Bool
$c== :: DescribeDocumentVersionsResponse
-> DescribeDocumentVersionsResponse -> Bool
Prelude.Eq, Int -> DescribeDocumentVersionsResponse -> ShowS
[DescribeDocumentVersionsResponse] -> ShowS
DescribeDocumentVersionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDocumentVersionsResponse] -> ShowS
$cshowList :: [DescribeDocumentVersionsResponse] -> ShowS
show :: DescribeDocumentVersionsResponse -> String
$cshow :: DescribeDocumentVersionsResponse -> String
showsPrec :: Int -> DescribeDocumentVersionsResponse -> ShowS
$cshowsPrec :: Int -> DescribeDocumentVersionsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeDocumentVersionsResponse x
-> DescribeDocumentVersionsResponse
forall x.
DescribeDocumentVersionsResponse
-> Rep DescribeDocumentVersionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDocumentVersionsResponse x
-> DescribeDocumentVersionsResponse
$cfrom :: forall x.
DescribeDocumentVersionsResponse
-> Rep DescribeDocumentVersionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDocumentVersionsResponse' 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:
--
-- 'documentVersions', 'describeDocumentVersionsResponse_documentVersions' - The document versions.
--
-- 'marker', 'describeDocumentVersionsResponse_marker' - The marker to use when requesting the next set of results. If there are
-- no additional results, the string is empty.
--
-- 'httpStatus', 'describeDocumentVersionsResponse_httpStatus' - The response's http status code.
newDescribeDocumentVersionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeDocumentVersionsResponse
newDescribeDocumentVersionsResponse :: Int -> DescribeDocumentVersionsResponse
newDescribeDocumentVersionsResponse Int
pHttpStatus_ =
  DescribeDocumentVersionsResponse'
    { $sel:documentVersions:DescribeDocumentVersionsResponse' :: Maybe [DocumentVersionMetadata]
documentVersions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeDocumentVersionsResponse' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeDocumentVersionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The document versions.
describeDocumentVersionsResponse_documentVersions :: Lens.Lens' DescribeDocumentVersionsResponse (Prelude.Maybe [DocumentVersionMetadata])
describeDocumentVersionsResponse_documentVersions :: Lens'
  DescribeDocumentVersionsResponse (Maybe [DocumentVersionMetadata])
describeDocumentVersionsResponse_documentVersions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDocumentVersionsResponse' {Maybe [DocumentVersionMetadata]
documentVersions :: Maybe [DocumentVersionMetadata]
$sel:documentVersions:DescribeDocumentVersionsResponse' :: DescribeDocumentVersionsResponse -> Maybe [DocumentVersionMetadata]
documentVersions} -> Maybe [DocumentVersionMetadata]
documentVersions) (\s :: DescribeDocumentVersionsResponse
s@DescribeDocumentVersionsResponse' {} Maybe [DocumentVersionMetadata]
a -> DescribeDocumentVersionsResponse
s {$sel:documentVersions:DescribeDocumentVersionsResponse' :: Maybe [DocumentVersionMetadata]
documentVersions = Maybe [DocumentVersionMetadata]
a} :: DescribeDocumentVersionsResponse) 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 marker to use when requesting the next set of results. If there are
-- no additional results, the string is empty.
describeDocumentVersionsResponse_marker :: Lens.Lens' DescribeDocumentVersionsResponse (Prelude.Maybe Prelude.Text)
describeDocumentVersionsResponse_marker :: Lens' DescribeDocumentVersionsResponse (Maybe Text)
describeDocumentVersionsResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDocumentVersionsResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeDocumentVersionsResponse' :: DescribeDocumentVersionsResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeDocumentVersionsResponse
s@DescribeDocumentVersionsResponse' {} Maybe Text
a -> DescribeDocumentVersionsResponse
s {$sel:marker:DescribeDocumentVersionsResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeDocumentVersionsResponse)

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

instance
  Prelude.NFData
    DescribeDocumentVersionsResponse
  where
  rnf :: DescribeDocumentVersionsResponse -> ()
rnf DescribeDocumentVersionsResponse' {Int
Maybe [DocumentVersionMetadata]
Maybe Text
httpStatus :: Int
marker :: Maybe Text
documentVersions :: Maybe [DocumentVersionMetadata]
$sel:httpStatus:DescribeDocumentVersionsResponse' :: DescribeDocumentVersionsResponse -> Int
$sel:marker:DescribeDocumentVersionsResponse' :: DescribeDocumentVersionsResponse -> Maybe Text
$sel:documentVersions:DescribeDocumentVersionsResponse' :: DescribeDocumentVersionsResponse -> Maybe [DocumentVersionMetadata]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [DocumentVersionMetadata]
documentVersions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus