{-# 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.Greengrass.CreateResourceDefinition -- 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 resource definition which contains a list of resources to be used in a group. You can create an initial version of the definition by providing a list of resources now, or use ''CreateResourceDefinitionVersion'' later. module Network.AWS.Greengrass.CreateResourceDefinition ( -- * Creating a Request createResourceDefinition , CreateResourceDefinition -- * Request Lenses , crdAmznClientToken , crdInitialVersion , crdName -- * Destructuring the Response , createResourceDefinitionResponse , CreateResourceDefinitionResponse -- * Response Lenses , crdrsLatestVersionARN , crdrsARN , crdrsName , crdrsCreationTimestamp , crdrsId , crdrsLatestVersion , crdrsLastUpdatedTimestamp , crdrsResponseStatus ) where import Network.AWS.Greengrass.Types import Network.AWS.Greengrass.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'createResourceDefinition' smart constructor. data CreateResourceDefinition = CreateResourceDefinition' { _crdAmznClientToken :: !(Maybe Text) , _crdInitialVersion :: !(Maybe ResourceDefinitionVersion) , _crdName :: !(Maybe Text) } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateResourceDefinition' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'crdAmznClientToken' - A client token used to correlate requests and responses. -- -- * 'crdInitialVersion' - Information about the initial version of the resource definition. -- -- * 'crdName' - The name of the resource definition. createResourceDefinition :: CreateResourceDefinition createResourceDefinition = CreateResourceDefinition' { _crdAmznClientToken = Nothing , _crdInitialVersion = Nothing , _crdName = Nothing } -- | A client token used to correlate requests and responses. crdAmznClientToken :: Lens' CreateResourceDefinition (Maybe Text) crdAmznClientToken = lens _crdAmznClientToken (\ s a -> s{_crdAmznClientToken = a}) -- | Information about the initial version of the resource definition. crdInitialVersion :: Lens' CreateResourceDefinition (Maybe ResourceDefinitionVersion) crdInitialVersion = lens _crdInitialVersion (\ s a -> s{_crdInitialVersion = a}) -- | The name of the resource definition. crdName :: Lens' CreateResourceDefinition (Maybe Text) crdName = lens _crdName (\ s a -> s{_crdName = a}) instance AWSRequest CreateResourceDefinition where type Rs CreateResourceDefinition = CreateResourceDefinitionResponse request = postJSON greengrass response = receiveJSON (\ s h x -> CreateResourceDefinitionResponse' <$> (x .?> "LatestVersionArn") <*> (x .?> "Arn") <*> (x .?> "Name") <*> (x .?> "CreationTimestamp") <*> (x .?> "Id") <*> (x .?> "LatestVersion") <*> (x .?> "LastUpdatedTimestamp") <*> (pure (fromEnum s))) instance Hashable CreateResourceDefinition where instance NFData CreateResourceDefinition where instance ToHeaders CreateResourceDefinition where toHeaders CreateResourceDefinition'{..} = mconcat ["X-Amzn-Client-Token" =# _crdAmznClientToken, "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)] instance ToJSON CreateResourceDefinition where toJSON CreateResourceDefinition'{..} = object (catMaybes [("InitialVersion" .=) <$> _crdInitialVersion, ("Name" .=) <$> _crdName]) instance ToPath CreateResourceDefinition where toPath = const "/greengrass/definition/resources" instance ToQuery CreateResourceDefinition where toQuery = const mempty -- | /See:/ 'createResourceDefinitionResponse' smart constructor. data CreateResourceDefinitionResponse = CreateResourceDefinitionResponse' { _crdrsLatestVersionARN :: !(Maybe Text) , _crdrsARN :: !(Maybe Text) , _crdrsName :: !(Maybe Text) , _crdrsCreationTimestamp :: !(Maybe Text) , _crdrsId :: !(Maybe Text) , _crdrsLatestVersion :: !(Maybe Text) , _crdrsLastUpdatedTimestamp :: !(Maybe Text) , _crdrsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateResourceDefinitionResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'crdrsLatestVersionARN' - The ARN of the latest version of the definition. -- -- * 'crdrsARN' - The ARN of the definition. -- -- * 'crdrsName' - The name of the definition. -- -- * 'crdrsCreationTimestamp' - The time, in milliseconds since the epoch, when the definition was created. -- -- * 'crdrsId' - The ID of the definition. -- -- * 'crdrsLatestVersion' - The latest version of the definition. -- -- * 'crdrsLastUpdatedTimestamp' - The time, in milliseconds since the epoch, when the definition was last updated. -- -- * 'crdrsResponseStatus' - -- | The response status code. createResourceDefinitionResponse :: Int -- ^ 'crdrsResponseStatus' -> CreateResourceDefinitionResponse createResourceDefinitionResponse pResponseStatus_ = CreateResourceDefinitionResponse' { _crdrsLatestVersionARN = Nothing , _crdrsARN = Nothing , _crdrsName = Nothing , _crdrsCreationTimestamp = Nothing , _crdrsId = Nothing , _crdrsLatestVersion = Nothing , _crdrsLastUpdatedTimestamp = Nothing , _crdrsResponseStatus = pResponseStatus_ } -- | The ARN of the latest version of the definition. crdrsLatestVersionARN :: Lens' CreateResourceDefinitionResponse (Maybe Text) crdrsLatestVersionARN = lens _crdrsLatestVersionARN (\ s a -> s{_crdrsLatestVersionARN = a}) -- | The ARN of the definition. crdrsARN :: Lens' CreateResourceDefinitionResponse (Maybe Text) crdrsARN = lens _crdrsARN (\ s a -> s{_crdrsARN = a}) -- | The name of the definition. crdrsName :: Lens' CreateResourceDefinitionResponse (Maybe Text) crdrsName = lens _crdrsName (\ s a -> s{_crdrsName = a}) -- | The time, in milliseconds since the epoch, when the definition was created. crdrsCreationTimestamp :: Lens' CreateResourceDefinitionResponse (Maybe Text) crdrsCreationTimestamp = lens _crdrsCreationTimestamp (\ s a -> s{_crdrsCreationTimestamp = a}) -- | The ID of the definition. crdrsId :: Lens' CreateResourceDefinitionResponse (Maybe Text) crdrsId = lens _crdrsId (\ s a -> s{_crdrsId = a}) -- | The latest version of the definition. crdrsLatestVersion :: Lens' CreateResourceDefinitionResponse (Maybe Text) crdrsLatestVersion = lens _crdrsLatestVersion (\ s a -> s{_crdrsLatestVersion = a}) -- | The time, in milliseconds since the epoch, when the definition was last updated. crdrsLastUpdatedTimestamp :: Lens' CreateResourceDefinitionResponse (Maybe Text) crdrsLastUpdatedTimestamp = lens _crdrsLastUpdatedTimestamp (\ s a -> s{_crdrsLastUpdatedTimestamp = a}) -- | -- | The response status code. crdrsResponseStatus :: Lens' CreateResourceDefinitionResponse Int crdrsResponseStatus = lens _crdrsResponseStatus (\ s a -> s{_crdrsResponseStatus = a}) instance NFData CreateResourceDefinitionResponse where