{-# 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.CloudTrail.GetTrailStatus -- Copyright : (c) 2013-2015 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Returns a JSON-formatted list of information about the specified trail. -- Fields include information on delivery errors, Amazon SNS and Amazon S3 -- errors, and start and stop logging times for each trail. -- -- /See:/ for GetTrailStatus. module Network.AWS.CloudTrail.GetTrailStatus ( -- * Creating a Request getTrailStatus , GetTrailStatus -- * Request Lenses , gtsName -- * Destructuring the Response , getTrailStatusResponse , GetTrailStatusResponse -- * Response Lenses , gtsrsLatestDeliveryError , gtsrsStartLoggingTime , gtsrsLatestNotificationError , gtsrsIsLogging , gtsrsLatestDeliveryTime , gtsrsLatestCloudWatchLogsDeliveryTime , gtsrsLatestCloudWatchLogsDeliveryError , gtsrsLatestNotificationTime , gtsrsStopLoggingTime , gtsrsStatus ) where import Network.AWS.CloudTrail.Types import Network.AWS.CloudTrail.Types.Product import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | The name of a trail about which you want the current status. -- -- /See:/ 'getTrailStatus' smart constructor. newtype GetTrailStatus = GetTrailStatus' { _gtsName :: Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetTrailStatus' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gtsName' getTrailStatus :: Text -- ^ 'gtsName' -> GetTrailStatus getTrailStatus pName_ = GetTrailStatus' { _gtsName = pName_ } -- | The name of the trail for which you are requesting the current status. gtsName :: Lens' GetTrailStatus Text gtsName = lens _gtsName (\ s a -> s{_gtsName = a}); instance AWSRequest GetTrailStatus where type Rs GetTrailStatus = GetTrailStatusResponse request = postJSON cloudTrail response = receiveJSON (\ s h x -> GetTrailStatusResponse' <$> (x .?> "LatestDeliveryError") <*> (x .?> "StartLoggingTime") <*> (x .?> "LatestNotificationError") <*> (x .?> "IsLogging") <*> (x .?> "LatestDeliveryTime") <*> (x .?> "LatestCloudWatchLogsDeliveryTime") <*> (x .?> "LatestCloudWatchLogsDeliveryError") <*> (x .?> "LatestNotificationTime") <*> (x .?> "StopLoggingTime") <*> (pure (fromEnum s))) instance ToHeaders GetTrailStatus where toHeaders = const (mconcat ["X-Amz-Target" =# ("com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101.GetTrailStatus" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON GetTrailStatus where toJSON GetTrailStatus'{..} = object (catMaybes [Just ("Name" .= _gtsName)]) instance ToPath GetTrailStatus where toPath = const "/" instance ToQuery GetTrailStatus where toQuery = const mempty -- | Returns the objects or data listed below if successful. Otherwise, -- returns an error. -- -- /See:/ 'getTrailStatusResponse' smart constructor. data GetTrailStatusResponse = GetTrailStatusResponse' { _gtsrsLatestDeliveryError :: !(Maybe Text) , _gtsrsStartLoggingTime :: !(Maybe POSIX) , _gtsrsLatestNotificationError :: !(Maybe Text) , _gtsrsIsLogging :: !(Maybe Bool) , _gtsrsLatestDeliveryTime :: !(Maybe POSIX) , _gtsrsLatestCloudWatchLogsDeliveryTime :: !(Maybe POSIX) , _gtsrsLatestCloudWatchLogsDeliveryError :: !(Maybe Text) , _gtsrsLatestNotificationTime :: !(Maybe POSIX) , _gtsrsStopLoggingTime :: !(Maybe POSIX) , _gtsrsStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetTrailStatusResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gtsrsLatestDeliveryError' -- -- * 'gtsrsStartLoggingTime' -- -- * 'gtsrsLatestNotificationError' -- -- * 'gtsrsIsLogging' -- -- * 'gtsrsLatestDeliveryTime' -- -- * 'gtsrsLatestCloudWatchLogsDeliveryTime' -- -- * 'gtsrsLatestCloudWatchLogsDeliveryError' -- -- * 'gtsrsLatestNotificationTime' -- -- * 'gtsrsStopLoggingTime' -- -- * 'gtsrsStatus' getTrailStatusResponse :: Int -- ^ 'gtsrsStatus' -> GetTrailStatusResponse getTrailStatusResponse pStatus_ = GetTrailStatusResponse' { _gtsrsLatestDeliveryError = Nothing , _gtsrsStartLoggingTime = Nothing , _gtsrsLatestNotificationError = Nothing , _gtsrsIsLogging = Nothing , _gtsrsLatestDeliveryTime = Nothing , _gtsrsLatestCloudWatchLogsDeliveryTime = Nothing , _gtsrsLatestCloudWatchLogsDeliveryError = Nothing , _gtsrsLatestNotificationTime = Nothing , _gtsrsStopLoggingTime = Nothing , _gtsrsStatus = pStatus_ } -- | Displays any Amazon S3 error that CloudTrail encountered when attempting -- to deliver log files to the designated bucket. For more information see -- the topic -- -- in the Amazon S3 API Reference. gtsrsLatestDeliveryError :: Lens' GetTrailStatusResponse (Maybe Text) gtsrsLatestDeliveryError = lens _gtsrsLatestDeliveryError (\ s a -> s{_gtsrsLatestDeliveryError = a}); -- | Specifies the most recent date and time when CloudTrail started -- recording API calls for an AWS account. gtsrsStartLoggingTime :: Lens' GetTrailStatusResponse (Maybe UTCTime) gtsrsStartLoggingTime = lens _gtsrsStartLoggingTime (\ s a -> s{_gtsrsStartLoggingTime = a}) . mapping _Time; -- | Displays any Amazon SNS error that CloudTrail encountered when -- attempting to send a notification. For more information about Amazon SNS -- errors, see the -- . gtsrsLatestNotificationError :: Lens' GetTrailStatusResponse (Maybe Text) gtsrsLatestNotificationError = lens _gtsrsLatestNotificationError (\ s a -> s{_gtsrsLatestNotificationError = a}); -- | Whether the CloudTrail is currently logging AWS API calls. gtsrsIsLogging :: Lens' GetTrailStatusResponse (Maybe Bool) gtsrsIsLogging = lens _gtsrsIsLogging (\ s a -> s{_gtsrsIsLogging = a}); -- | Specifies the date and time that CloudTrail last delivered log files to -- an account\'s Amazon S3 bucket. gtsrsLatestDeliveryTime :: Lens' GetTrailStatusResponse (Maybe UTCTime) gtsrsLatestDeliveryTime = lens _gtsrsLatestDeliveryTime (\ s a -> s{_gtsrsLatestDeliveryTime = a}) . mapping _Time; -- | Displays the most recent date and time when CloudTrail delivered logs to -- CloudWatch Logs. gtsrsLatestCloudWatchLogsDeliveryTime :: Lens' GetTrailStatusResponse (Maybe UTCTime) gtsrsLatestCloudWatchLogsDeliveryTime = lens _gtsrsLatestCloudWatchLogsDeliveryTime (\ s a -> s{_gtsrsLatestCloudWatchLogsDeliveryTime = a}) . mapping _Time; -- | Displays any CloudWatch Logs error that CloudTrail encountered when -- attempting to deliver logs to CloudWatch Logs. gtsrsLatestCloudWatchLogsDeliveryError :: Lens' GetTrailStatusResponse (Maybe Text) gtsrsLatestCloudWatchLogsDeliveryError = lens _gtsrsLatestCloudWatchLogsDeliveryError (\ s a -> s{_gtsrsLatestCloudWatchLogsDeliveryError = a}); -- | Specifies the date and time of the most recent Amazon SNS notification -- that CloudTrail has written a new log file to an account\'s Amazon S3 -- bucket. gtsrsLatestNotificationTime :: Lens' GetTrailStatusResponse (Maybe UTCTime) gtsrsLatestNotificationTime = lens _gtsrsLatestNotificationTime (\ s a -> s{_gtsrsLatestNotificationTime = a}) . mapping _Time; -- | Specifies the most recent date and time when CloudTrail stopped -- recording API calls for an AWS account. gtsrsStopLoggingTime :: Lens' GetTrailStatusResponse (Maybe UTCTime) gtsrsStopLoggingTime = lens _gtsrsStopLoggingTime (\ s a -> s{_gtsrsStopLoggingTime = a}) . mapping _Time; -- | The response status code. gtsrsStatus :: Lens' GetTrailStatusResponse Int gtsrsStatus = lens _gtsrsStatus (\ s a -> s{_gtsrsStatus = a});