{-# 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.InitiateDocumentVersionUpload
-- 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 a new document object and version object.
--
-- The client specifies the parent folder ID and name of the document to
-- upload. The ID is optionally specified when creating a new version of an
-- existing document. This is the first step to upload a document. Next,
-- upload the document to the URL returned from the call, and then call
-- UpdateDocumentVersion.
--
-- To cancel the document upload, call AbortDocumentVersionUpload.
module Amazonka.WorkDocs.InitiateDocumentVersionUpload
  ( -- * Creating a Request
    InitiateDocumentVersionUpload (..),
    newInitiateDocumentVersionUpload,

    -- * Request Lenses
    initiateDocumentVersionUpload_authenticationToken,
    initiateDocumentVersionUpload_contentCreatedTimestamp,
    initiateDocumentVersionUpload_contentModifiedTimestamp,
    initiateDocumentVersionUpload_contentType,
    initiateDocumentVersionUpload_documentSizeInBytes,
    initiateDocumentVersionUpload_id,
    initiateDocumentVersionUpload_name,
    initiateDocumentVersionUpload_parentFolderId,

    -- * Destructuring the Response
    InitiateDocumentVersionUploadResponse (..),
    newInitiateDocumentVersionUploadResponse,

    -- * Response Lenses
    initiateDocumentVersionUploadResponse_metadata,
    initiateDocumentVersionUploadResponse_uploadMetadata,
    initiateDocumentVersionUploadResponse_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:/ 'newInitiateDocumentVersionUpload' smart constructor.
data InitiateDocumentVersionUpload = InitiateDocumentVersionUpload'
  { -- | Amazon WorkDocs authentication token. Not required when using AWS
    -- administrator credentials to access the API.
    InitiateDocumentVersionUpload -> Maybe (Sensitive Text)
authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The timestamp when the content of the document was originally created.
    InitiateDocumentVersionUpload -> Maybe POSIX
contentCreatedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The timestamp when the content of the document was modified.
    InitiateDocumentVersionUpload -> Maybe POSIX
contentModifiedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The content type of the document.
    InitiateDocumentVersionUpload -> Maybe Text
contentType :: Prelude.Maybe Prelude.Text,
    -- | The size of the document, in bytes.
    InitiateDocumentVersionUpload -> Maybe Integer
documentSizeInBytes :: Prelude.Maybe Prelude.Integer,
    -- | The ID of the document.
    InitiateDocumentVersionUpload -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | The name of the document.
    InitiateDocumentVersionUpload -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The ID of the parent folder.
    InitiateDocumentVersionUpload -> Maybe Text
parentFolderId :: Prelude.Maybe Prelude.Text
  }
  deriving (InitiateDocumentVersionUpload
-> InitiateDocumentVersionUpload -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InitiateDocumentVersionUpload
-> InitiateDocumentVersionUpload -> Bool
$c/= :: InitiateDocumentVersionUpload
-> InitiateDocumentVersionUpload -> Bool
== :: InitiateDocumentVersionUpload
-> InitiateDocumentVersionUpload -> Bool
$c== :: InitiateDocumentVersionUpload
-> InitiateDocumentVersionUpload -> Bool
Prelude.Eq, Int -> InitiateDocumentVersionUpload -> ShowS
[InitiateDocumentVersionUpload] -> ShowS
InitiateDocumentVersionUpload -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InitiateDocumentVersionUpload] -> ShowS
$cshowList :: [InitiateDocumentVersionUpload] -> ShowS
show :: InitiateDocumentVersionUpload -> String
$cshow :: InitiateDocumentVersionUpload -> String
showsPrec :: Int -> InitiateDocumentVersionUpload -> ShowS
$cshowsPrec :: Int -> InitiateDocumentVersionUpload -> ShowS
Prelude.Show, forall x.
Rep InitiateDocumentVersionUpload x
-> InitiateDocumentVersionUpload
forall x.
InitiateDocumentVersionUpload
-> Rep InitiateDocumentVersionUpload x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep InitiateDocumentVersionUpload x
-> InitiateDocumentVersionUpload
$cfrom :: forall x.
InitiateDocumentVersionUpload
-> Rep InitiateDocumentVersionUpload x
Prelude.Generic)

-- |
-- Create a value of 'InitiateDocumentVersionUpload' 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', 'initiateDocumentVersionUpload_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
--
-- 'contentCreatedTimestamp', 'initiateDocumentVersionUpload_contentCreatedTimestamp' - The timestamp when the content of the document was originally created.
--
-- 'contentModifiedTimestamp', 'initiateDocumentVersionUpload_contentModifiedTimestamp' - The timestamp when the content of the document was modified.
--
-- 'contentType', 'initiateDocumentVersionUpload_contentType' - The content type of the document.
--
-- 'documentSizeInBytes', 'initiateDocumentVersionUpload_documentSizeInBytes' - The size of the document, in bytes.
--
-- 'id', 'initiateDocumentVersionUpload_id' - The ID of the document.
--
-- 'name', 'initiateDocumentVersionUpload_name' - The name of the document.
--
-- 'parentFolderId', 'initiateDocumentVersionUpload_parentFolderId' - The ID of the parent folder.
newInitiateDocumentVersionUpload ::
  InitiateDocumentVersionUpload
newInitiateDocumentVersionUpload :: InitiateDocumentVersionUpload
newInitiateDocumentVersionUpload =
  InitiateDocumentVersionUpload'
    { $sel:authenticationToken:InitiateDocumentVersionUpload' :: Maybe (Sensitive Text)
authenticationToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:contentCreatedTimestamp:InitiateDocumentVersionUpload' :: Maybe POSIX
contentCreatedTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:contentModifiedTimestamp:InitiateDocumentVersionUpload' :: Maybe POSIX
contentModifiedTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:contentType:InitiateDocumentVersionUpload' :: Maybe Text
contentType = forall a. Maybe a
Prelude.Nothing,
      $sel:documentSizeInBytes:InitiateDocumentVersionUpload' :: Maybe Integer
documentSizeInBytes = forall a. Maybe a
Prelude.Nothing,
      $sel:id:InitiateDocumentVersionUpload' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:name:InitiateDocumentVersionUpload' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:parentFolderId:InitiateDocumentVersionUpload' :: Maybe Text
parentFolderId = forall a. Maybe a
Prelude.Nothing
    }

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

-- | The timestamp when the content of the document was originally created.
initiateDocumentVersionUpload_contentCreatedTimestamp :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.UTCTime)
initiateDocumentVersionUpload_contentCreatedTimestamp :: Lens' InitiateDocumentVersionUpload (Maybe UTCTime)
initiateDocumentVersionUpload_contentCreatedTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InitiateDocumentVersionUpload' {Maybe POSIX
contentCreatedTimestamp :: Maybe POSIX
$sel:contentCreatedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
contentCreatedTimestamp} -> Maybe POSIX
contentCreatedTimestamp) (\s :: InitiateDocumentVersionUpload
s@InitiateDocumentVersionUpload' {} Maybe POSIX
a -> InitiateDocumentVersionUpload
s {$sel:contentCreatedTimestamp:InitiateDocumentVersionUpload' :: Maybe POSIX
contentCreatedTimestamp = Maybe POSIX
a} :: InitiateDocumentVersionUpload) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The timestamp when the content of the document was modified.
initiateDocumentVersionUpload_contentModifiedTimestamp :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.UTCTime)
initiateDocumentVersionUpload_contentModifiedTimestamp :: Lens' InitiateDocumentVersionUpload (Maybe UTCTime)
initiateDocumentVersionUpload_contentModifiedTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InitiateDocumentVersionUpload' {Maybe POSIX
contentModifiedTimestamp :: Maybe POSIX
$sel:contentModifiedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
contentModifiedTimestamp} -> Maybe POSIX
contentModifiedTimestamp) (\s :: InitiateDocumentVersionUpload
s@InitiateDocumentVersionUpload' {} Maybe POSIX
a -> InitiateDocumentVersionUpload
s {$sel:contentModifiedTimestamp:InitiateDocumentVersionUpload' :: Maybe POSIX
contentModifiedTimestamp = Maybe POSIX
a} :: InitiateDocumentVersionUpload) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The content type of the document.
initiateDocumentVersionUpload_contentType :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Text)
initiateDocumentVersionUpload_contentType :: Lens' InitiateDocumentVersionUpload (Maybe Text)
initiateDocumentVersionUpload_contentType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InitiateDocumentVersionUpload' {Maybe Text
contentType :: Maybe Text
$sel:contentType:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
contentType} -> Maybe Text
contentType) (\s :: InitiateDocumentVersionUpload
s@InitiateDocumentVersionUpload' {} Maybe Text
a -> InitiateDocumentVersionUpload
s {$sel:contentType:InitiateDocumentVersionUpload' :: Maybe Text
contentType = Maybe Text
a} :: InitiateDocumentVersionUpload)

-- | The size of the document, in bytes.
initiateDocumentVersionUpload_documentSizeInBytes :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Integer)
initiateDocumentVersionUpload_documentSizeInBytes :: Lens' InitiateDocumentVersionUpload (Maybe Integer)
initiateDocumentVersionUpload_documentSizeInBytes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InitiateDocumentVersionUpload' {Maybe Integer
documentSizeInBytes :: Maybe Integer
$sel:documentSizeInBytes:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Integer
documentSizeInBytes} -> Maybe Integer
documentSizeInBytes) (\s :: InitiateDocumentVersionUpload
s@InitiateDocumentVersionUpload' {} Maybe Integer
a -> InitiateDocumentVersionUpload
s {$sel:documentSizeInBytes:InitiateDocumentVersionUpload' :: Maybe Integer
documentSizeInBytes = Maybe Integer
a} :: InitiateDocumentVersionUpload)

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

-- | The name of the document.
initiateDocumentVersionUpload_name :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Text)
initiateDocumentVersionUpload_name :: Lens' InitiateDocumentVersionUpload (Maybe Text)
initiateDocumentVersionUpload_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InitiateDocumentVersionUpload' {Maybe Text
name :: Maybe Text
$sel:name:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
name} -> Maybe Text
name) (\s :: InitiateDocumentVersionUpload
s@InitiateDocumentVersionUpload' {} Maybe Text
a -> InitiateDocumentVersionUpload
s {$sel:name:InitiateDocumentVersionUpload' :: Maybe Text
name = Maybe Text
a} :: InitiateDocumentVersionUpload)

-- | The ID of the parent folder.
initiateDocumentVersionUpload_parentFolderId :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Text)
initiateDocumentVersionUpload_parentFolderId :: Lens' InitiateDocumentVersionUpload (Maybe Text)
initiateDocumentVersionUpload_parentFolderId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InitiateDocumentVersionUpload' {Maybe Text
parentFolderId :: Maybe Text
$sel:parentFolderId:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
parentFolderId} -> Maybe Text
parentFolderId) (\s :: InitiateDocumentVersionUpload
s@InitiateDocumentVersionUpload' {} Maybe Text
a -> InitiateDocumentVersionUpload
s {$sel:parentFolderId:InitiateDocumentVersionUpload' :: Maybe Text
parentFolderId = Maybe Text
a} :: InitiateDocumentVersionUpload)

instance
  Core.AWSRequest
    InitiateDocumentVersionUpload
  where
  type
    AWSResponse InitiateDocumentVersionUpload =
      InitiateDocumentVersionUploadResponse
  request :: (Service -> Service)
-> InitiateDocumentVersionUpload
-> Request InitiateDocumentVersionUpload
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 InitiateDocumentVersionUpload
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse InitiateDocumentVersionUpload)))
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 DocumentMetadata
-> Maybe UploadMetadata
-> Int
-> InitiateDocumentVersionUploadResponse
InitiateDocumentVersionUploadResponse'
            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
"Metadata")
            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
"UploadMetadata")
            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
    InitiateDocumentVersionUpload
  where
  hashWithSalt :: Int -> InitiateDocumentVersionUpload -> Int
hashWithSalt Int
_salt InitiateDocumentVersionUpload' {Maybe Integer
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
parentFolderId :: Maybe Text
name :: Maybe Text
id :: Maybe Text
documentSizeInBytes :: Maybe Integer
contentType :: Maybe Text
contentModifiedTimestamp :: Maybe POSIX
contentCreatedTimestamp :: Maybe POSIX
authenticationToken :: Maybe (Sensitive Text)
$sel:parentFolderId:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:name:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:id:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:documentSizeInBytes:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Integer
$sel:contentType:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:contentModifiedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
$sel:contentCreatedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
$sel:authenticationToken:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> 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 POSIX
contentCreatedTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
contentModifiedTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
contentType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
documentSizeInBytes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
parentFolderId

instance Prelude.NFData InitiateDocumentVersionUpload where
  rnf :: InitiateDocumentVersionUpload -> ()
rnf InitiateDocumentVersionUpload' {Maybe Integer
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
parentFolderId :: Maybe Text
name :: Maybe Text
id :: Maybe Text
documentSizeInBytes :: Maybe Integer
contentType :: Maybe Text
contentModifiedTimestamp :: Maybe POSIX
contentCreatedTimestamp :: Maybe POSIX
authenticationToken :: Maybe (Sensitive Text)
$sel:parentFolderId:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:name:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:id:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:documentSizeInBytes:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Integer
$sel:contentType:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:contentModifiedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
$sel:contentCreatedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
$sel:authenticationToken:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> 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 POSIX
contentCreatedTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
contentModifiedTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
contentType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
documentSizeInBytes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
parentFolderId

instance Data.ToHeaders InitiateDocumentVersionUpload where
  toHeaders :: InitiateDocumentVersionUpload -> ResponseHeaders
toHeaders InitiateDocumentVersionUpload' {Maybe Integer
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
parentFolderId :: Maybe Text
name :: Maybe Text
id :: Maybe Text
documentSizeInBytes :: Maybe Integer
contentType :: Maybe Text
contentModifiedTimestamp :: Maybe POSIX
contentCreatedTimestamp :: Maybe POSIX
authenticationToken :: Maybe (Sensitive Text)
$sel:parentFolderId:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:name:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:id:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:documentSizeInBytes:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Integer
$sel:contentType:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:contentModifiedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
$sel:contentCreatedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
$sel:authenticationToken:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> 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 InitiateDocumentVersionUpload where
  toJSON :: InitiateDocumentVersionUpload -> Value
toJSON InitiateDocumentVersionUpload' {Maybe Integer
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
parentFolderId :: Maybe Text
name :: Maybe Text
id :: Maybe Text
documentSizeInBytes :: Maybe Integer
contentType :: Maybe Text
contentModifiedTimestamp :: Maybe POSIX
contentCreatedTimestamp :: Maybe POSIX
authenticationToken :: Maybe (Sensitive Text)
$sel:parentFolderId:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:name:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:id:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:documentSizeInBytes:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Integer
$sel:contentType:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe Text
$sel:contentModifiedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
$sel:contentCreatedTimestamp:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe POSIX
$sel:authenticationToken:InitiateDocumentVersionUpload' :: InitiateDocumentVersionUpload -> Maybe (Sensitive Text)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ContentCreatedTimestamp" 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 POSIX
contentCreatedTimestamp,
            (Key
"ContentModifiedTimestamp" 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 POSIX
contentModifiedTimestamp,
            (Key
"ContentType" 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
contentType,
            (Key
"DocumentSizeInBytes" 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 Integer
documentSizeInBytes,
            (Key
"Id" 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
id,
            (Key
"Name" 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
name,
            (Key
"ParentFolderId" 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
parentFolderId
          ]
      )

instance Data.ToPath InitiateDocumentVersionUpload where
  toPath :: InitiateDocumentVersionUpload -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/api/v1/documents"

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

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

-- |
-- Create a value of 'InitiateDocumentVersionUploadResponse' 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:
--
-- 'metadata', 'initiateDocumentVersionUploadResponse_metadata' - The document metadata.
--
-- 'uploadMetadata', 'initiateDocumentVersionUploadResponse_uploadMetadata' - The upload metadata.
--
-- 'httpStatus', 'initiateDocumentVersionUploadResponse_httpStatus' - The response's http status code.
newInitiateDocumentVersionUploadResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  InitiateDocumentVersionUploadResponse
newInitiateDocumentVersionUploadResponse :: Int -> InitiateDocumentVersionUploadResponse
newInitiateDocumentVersionUploadResponse Int
pHttpStatus_ =
  InitiateDocumentVersionUploadResponse'
    { $sel:metadata:InitiateDocumentVersionUploadResponse' :: Maybe DocumentMetadata
metadata =
        forall a. Maybe a
Prelude.Nothing,
      $sel:uploadMetadata:InitiateDocumentVersionUploadResponse' :: Maybe UploadMetadata
uploadMetadata = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:InitiateDocumentVersionUploadResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The document metadata.
initiateDocumentVersionUploadResponse_metadata :: Lens.Lens' InitiateDocumentVersionUploadResponse (Prelude.Maybe DocumentMetadata)
initiateDocumentVersionUploadResponse_metadata :: Lens'
  InitiateDocumentVersionUploadResponse (Maybe DocumentMetadata)
initiateDocumentVersionUploadResponse_metadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InitiateDocumentVersionUploadResponse' {Maybe DocumentMetadata
metadata :: Maybe DocumentMetadata
$sel:metadata:InitiateDocumentVersionUploadResponse' :: InitiateDocumentVersionUploadResponse -> Maybe DocumentMetadata
metadata} -> Maybe DocumentMetadata
metadata) (\s :: InitiateDocumentVersionUploadResponse
s@InitiateDocumentVersionUploadResponse' {} Maybe DocumentMetadata
a -> InitiateDocumentVersionUploadResponse
s {$sel:metadata:InitiateDocumentVersionUploadResponse' :: Maybe DocumentMetadata
metadata = Maybe DocumentMetadata
a} :: InitiateDocumentVersionUploadResponse)

-- | The upload metadata.
initiateDocumentVersionUploadResponse_uploadMetadata :: Lens.Lens' InitiateDocumentVersionUploadResponse (Prelude.Maybe UploadMetadata)
initiateDocumentVersionUploadResponse_uploadMetadata :: Lens' InitiateDocumentVersionUploadResponse (Maybe UploadMetadata)
initiateDocumentVersionUploadResponse_uploadMetadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InitiateDocumentVersionUploadResponse' {Maybe UploadMetadata
uploadMetadata :: Maybe UploadMetadata
$sel:uploadMetadata:InitiateDocumentVersionUploadResponse' :: InitiateDocumentVersionUploadResponse -> Maybe UploadMetadata
uploadMetadata} -> Maybe UploadMetadata
uploadMetadata) (\s :: InitiateDocumentVersionUploadResponse
s@InitiateDocumentVersionUploadResponse' {} Maybe UploadMetadata
a -> InitiateDocumentVersionUploadResponse
s {$sel:uploadMetadata:InitiateDocumentVersionUploadResponse' :: Maybe UploadMetadata
uploadMetadata = Maybe UploadMetadata
a} :: InitiateDocumentVersionUploadResponse)

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

instance
  Prelude.NFData
    InitiateDocumentVersionUploadResponse
  where
  rnf :: InitiateDocumentVersionUploadResponse -> ()
rnf InitiateDocumentVersionUploadResponse' {Int
Maybe DocumentMetadata
Maybe UploadMetadata
httpStatus :: Int
uploadMetadata :: Maybe UploadMetadata
metadata :: Maybe DocumentMetadata
$sel:httpStatus:InitiateDocumentVersionUploadResponse' :: InitiateDocumentVersionUploadResponse -> Int
$sel:uploadMetadata:InitiateDocumentVersionUploadResponse' :: InitiateDocumentVersionUploadResponse -> Maybe UploadMetadata
$sel:metadata:InitiateDocumentVersionUploadResponse' :: InitiateDocumentVersionUploadResponse -> Maybe DocumentMetadata
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DocumentMetadata
metadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UploadMetadata
uploadMetadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus