{-# 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 -- 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