amazonka-workdocs-1.6.0: gen/Network/AWS/WorkDocs/InitiateDocumentVersionUpload.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.WorkDocs.InitiateDocumentVersionUpload
-- Copyright : (c) 2013-2018 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- 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 Network.AWS.WorkDocs.InitiateDocumentVersionUpload
(
-- * Creating a Request
initiateDocumentVersionUpload
, InitiateDocumentVersionUpload
-- * Request Lenses
, idvuDocumentSizeInBytes
, idvuContentCreatedTimestamp
, idvuAuthenticationToken
, idvuName
, idvuId
, idvuContentModifiedTimestamp
, idvuContentType
, idvuParentFolderId
-- * Destructuring the Response
, initiateDocumentVersionUploadResponse
, InitiateDocumentVersionUploadResponse
-- * Response Lenses
, idvursMetadata
, idvursUploadMetadata
, idvursResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.WorkDocs.Types
import Network.AWS.WorkDocs.Types.Product
-- | /See:/ 'initiateDocumentVersionUpload' smart constructor.
data InitiateDocumentVersionUpload = InitiateDocumentVersionUpload'
{ _idvuDocumentSizeInBytes :: !(Maybe Integer)
, _idvuContentCreatedTimestamp :: !(Maybe POSIX)
, _idvuAuthenticationToken :: !(Maybe (Sensitive Text))
, _idvuName :: !(Maybe Text)
, _idvuId :: !(Maybe Text)
, _idvuContentModifiedTimestamp :: !(Maybe POSIX)
, _idvuContentType :: !(Maybe Text)
, _idvuParentFolderId :: !Text
} deriving (Eq, Show, Data, Typeable, Generic)
-- | Creates a value of 'InitiateDocumentVersionUpload' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'idvuDocumentSizeInBytes' - The size of the document, in bytes.
--
-- * 'idvuContentCreatedTimestamp' - The timestamp when the content of the document was originally created.
--
-- * 'idvuAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
--
-- * 'idvuName' - The name of the document.
--
-- * 'idvuId' - The ID of the document.
--
-- * 'idvuContentModifiedTimestamp' - The timestamp when the content of the document was modified.
--
-- * 'idvuContentType' - The content type of the document.
--
-- * 'idvuParentFolderId' - The ID of the parent folder.
initiateDocumentVersionUpload
:: Text -- ^ 'idvuParentFolderId'
-> InitiateDocumentVersionUpload
initiateDocumentVersionUpload pParentFolderId_ =
InitiateDocumentVersionUpload'
{ _idvuDocumentSizeInBytes = Nothing
, _idvuContentCreatedTimestamp = Nothing
, _idvuAuthenticationToken = Nothing
, _idvuName = Nothing
, _idvuId = Nothing
, _idvuContentModifiedTimestamp = Nothing
, _idvuContentType = Nothing
, _idvuParentFolderId = pParentFolderId_
}
-- | The size of the document, in bytes.
idvuDocumentSizeInBytes :: Lens' InitiateDocumentVersionUpload (Maybe Integer)
idvuDocumentSizeInBytes = lens _idvuDocumentSizeInBytes (\ s a -> s{_idvuDocumentSizeInBytes = a})
-- | The timestamp when the content of the document was originally created.
idvuContentCreatedTimestamp :: Lens' InitiateDocumentVersionUpload (Maybe UTCTime)
idvuContentCreatedTimestamp = lens _idvuContentCreatedTimestamp (\ s a -> s{_idvuContentCreatedTimestamp = a}) . mapping _Time
-- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
idvuAuthenticationToken :: Lens' InitiateDocumentVersionUpload (Maybe Text)
idvuAuthenticationToken = lens _idvuAuthenticationToken (\ s a -> s{_idvuAuthenticationToken = a}) . mapping _Sensitive
-- | The name of the document.
idvuName :: Lens' InitiateDocumentVersionUpload (Maybe Text)
idvuName = lens _idvuName (\ s a -> s{_idvuName = a})
-- | The ID of the document.
idvuId :: Lens' InitiateDocumentVersionUpload (Maybe Text)
idvuId = lens _idvuId (\ s a -> s{_idvuId = a})
-- | The timestamp when the content of the document was modified.
idvuContentModifiedTimestamp :: Lens' InitiateDocumentVersionUpload (Maybe UTCTime)
idvuContentModifiedTimestamp = lens _idvuContentModifiedTimestamp (\ s a -> s{_idvuContentModifiedTimestamp = a}) . mapping _Time
-- | The content type of the document.
idvuContentType :: Lens' InitiateDocumentVersionUpload (Maybe Text)
idvuContentType = lens _idvuContentType (\ s a -> s{_idvuContentType = a})
-- | The ID of the parent folder.
idvuParentFolderId :: Lens' InitiateDocumentVersionUpload Text
idvuParentFolderId = lens _idvuParentFolderId (\ s a -> s{_idvuParentFolderId = a})
instance AWSRequest InitiateDocumentVersionUpload
where
type Rs InitiateDocumentVersionUpload =
InitiateDocumentVersionUploadResponse
request = postJSON workDocs
response
= receiveJSON
(\ s h x ->
InitiateDocumentVersionUploadResponse' <$>
(x .?> "Metadata") <*> (x .?> "UploadMetadata") <*>
(pure (fromEnum s)))
instance Hashable InitiateDocumentVersionUpload where
instance NFData InitiateDocumentVersionUpload where
instance ToHeaders InitiateDocumentVersionUpload
where
toHeaders InitiateDocumentVersionUpload'{..}
= mconcat
["Authentication" =# _idvuAuthenticationToken,
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)]
instance ToJSON InitiateDocumentVersionUpload where
toJSON InitiateDocumentVersionUpload'{..}
= object
(catMaybes
[("DocumentSizeInBytes" .=) <$>
_idvuDocumentSizeInBytes,
("ContentCreatedTimestamp" .=) <$>
_idvuContentCreatedTimestamp,
("Name" .=) <$> _idvuName, ("Id" .=) <$> _idvuId,
("ContentModifiedTimestamp" .=) <$>
_idvuContentModifiedTimestamp,
("ContentType" .=) <$> _idvuContentType,
Just ("ParentFolderId" .= _idvuParentFolderId)])
instance ToPath InitiateDocumentVersionUpload where
toPath = const "/api/v1/documents"
instance ToQuery InitiateDocumentVersionUpload where
toQuery = const mempty
-- | /See:/ 'initiateDocumentVersionUploadResponse' smart constructor.
data InitiateDocumentVersionUploadResponse = InitiateDocumentVersionUploadResponse'
{ _idvursMetadata :: !(Maybe DocumentMetadata)
, _idvursUploadMetadata :: !(Maybe UploadMetadata)
, _idvursResponseStatus :: !Int
} deriving (Eq, Show, Data, Typeable, Generic)
-- | Creates a value of 'InitiateDocumentVersionUploadResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'idvursMetadata' - The document metadata.
--
-- * 'idvursUploadMetadata' - The upload metadata.
--
-- * 'idvursResponseStatus' - -- | The response status code.
initiateDocumentVersionUploadResponse
:: Int -- ^ 'idvursResponseStatus'
-> InitiateDocumentVersionUploadResponse
initiateDocumentVersionUploadResponse pResponseStatus_ =
InitiateDocumentVersionUploadResponse'
{ _idvursMetadata = Nothing
, _idvursUploadMetadata = Nothing
, _idvursResponseStatus = pResponseStatus_
}
-- | The document metadata.
idvursMetadata :: Lens' InitiateDocumentVersionUploadResponse (Maybe DocumentMetadata)
idvursMetadata = lens _idvursMetadata (\ s a -> s{_idvursMetadata = a})
-- | The upload metadata.
idvursUploadMetadata :: Lens' InitiateDocumentVersionUploadResponse (Maybe UploadMetadata)
idvursUploadMetadata = lens _idvursUploadMetadata (\ s a -> s{_idvursUploadMetadata = a})
-- | -- | The response status code.
idvursResponseStatus :: Lens' InitiateDocumentVersionUploadResponse Int
idvursResponseStatus = lens _idvursResponseStatus (\ s a -> s{_idvursResponseStatus = a})
instance NFData InitiateDocumentVersionUploadResponse
where