{-# 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.MarketplaceAnalytics.GenerateDataSet -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Given a data set type and data set publication date, asynchronously -- publishes the requested data set to the specified S3 bucket and notifies -- the specified SNS topic once the data is available. Returns a unique -- request identifier that can be used to correlate requests with -- notifications from the SNS topic. Data sets will be published in -- comma-separated values (CSV) format with the file name -- {data_set_type}_YYYY-MM-DD.csv. If a file with the same name already -- exists (e.g. if the same data set is requested twice), the original file -- will be overwritten by the new file. Requires a Role with an attached -- permissions policy providing Allow permissions for the following -- actions: s3:PutObject, s3:GetBucketLocation, sns:GetTopicAttributes, -- sns:Publish, iam:GetRolePolicy. module Network.AWS.MarketplaceAnalytics.GenerateDataSet ( -- * Creating a Request generateDataSet , GenerateDataSet -- * Request Lenses , gdsCustomerDefinedValues , gdsDestinationS3Prefix , gdsDataSetType , gdsDataSetPublicationDate , gdsRoleNameARN , gdsDestinationS3BucketName , gdsSnsTopicARN -- * Destructuring the Response , generateDataSetResponse , GenerateDataSetResponse -- * Response Lenses , gdsrsDataSetRequestId , gdsrsResponseStatus ) where import Network.AWS.Lens import Network.AWS.MarketplaceAnalytics.Types import Network.AWS.MarketplaceAnalytics.Types.Product import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | Container for the parameters to the GenerateDataSet operation. -- -- /See:/ 'generateDataSet' smart constructor. data GenerateDataSet = GenerateDataSet' { _gdsCustomerDefinedValues :: !(Maybe (Map Text Text)) , _gdsDestinationS3Prefix :: !(Maybe Text) , _gdsDataSetType :: !DataSetType , _gdsDataSetPublicationDate :: !POSIX , _gdsRoleNameARN :: !Text , _gdsDestinationS3BucketName :: !Text , _gdsSnsTopicARN :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GenerateDataSet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gdsCustomerDefinedValues' -- -- * 'gdsDestinationS3Prefix' -- -- * 'gdsDataSetType' -- -- * 'gdsDataSetPublicationDate' -- -- * 'gdsRoleNameARN' -- -- * 'gdsDestinationS3BucketName' -- -- * 'gdsSnsTopicARN' generateDataSet :: DataSetType -- ^ 'gdsDataSetType' -> UTCTime -- ^ 'gdsDataSetPublicationDate' -> Text -- ^ 'gdsRoleNameARN' -> Text -- ^ 'gdsDestinationS3BucketName' -> Text -- ^ 'gdsSnsTopicARN' -> GenerateDataSet generateDataSet pDataSetType_ pDataSetPublicationDate_ pRoleNameARN_ pDestinationS3BucketName_ pSnsTopicARN_ = GenerateDataSet' { _gdsCustomerDefinedValues = Nothing , _gdsDestinationS3Prefix = Nothing , _gdsDataSetType = pDataSetType_ , _gdsDataSetPublicationDate = _Time # pDataSetPublicationDate_ , _gdsRoleNameARN = pRoleNameARN_ , _gdsDestinationS3BucketName = pDestinationS3BucketName_ , _gdsSnsTopicARN = pSnsTopicARN_ } -- | (Optional) Key-value pairs which will be returned, unmodified, in the -- Amazon SNS notification message and the data set metadata file. These -- key-value pairs can be used to correlated responses with tracking -- information from other systems. gdsCustomerDefinedValues :: Lens' GenerateDataSet (HashMap Text Text) gdsCustomerDefinedValues = lens _gdsCustomerDefinedValues (\ s a -> s{_gdsCustomerDefinedValues = a}) . _Default . _Map; -- | (Optional) The desired S3 prefix for the published data set, similar to -- a directory path in standard file systems. For example, if given the -- bucket name \"mybucket\" and the prefix \"myprefix\/mydatasets\", the -- output file \"outputfile\" would be published to -- \"s3:\/\/mybucket\/myprefix\/mydatasets\/outputfile\". If the prefix -- directory structure does not exist, it will be created. If no prefix is -- provided, the data set will be published to the S3 bucket root. gdsDestinationS3Prefix :: Lens' GenerateDataSet (Maybe Text) gdsDestinationS3Prefix = lens _gdsDestinationS3Prefix (\ s a -> s{_gdsDestinationS3Prefix = a}); -- | The desired data set type. -- -- - /customer_subscriber_hourly_monthly_subscriptions/ - Available daily -- by 5:00 PM Pacific Time since 2014-07-21. -- - /customer_subscriber_annual_subscriptions/ - Available daily by 5:00 -- PM Pacific Time since 2014-07-21. -- - /daily_business_usage_by_instance_type/ - Available daily by 5:00 PM -- Pacific Time since 2015-01-26. -- - /daily_business_fees/ - Available daily by 5:00 PM Pacific Time -- since 2015-01-26. -- - /daily_business_free_trial_conversions/ - Available daily by 5:00 PM -- Pacific Time since 2015-01-26. -- - /daily_business_new_instances/ - Available daily by 5:00 PM Pacific -- Time since 2015-01-26. -- - /daily_business_new_product_subscribers/ - Available daily by 5:00 -- PM Pacific Time since 2015-01-26. -- - /daily_business_canceled_product_subscribers/ - Available daily by -- 5:00 PM Pacific Time since 2015-01-26. -- - /monthly_revenue_billing_and_revenue_data/ - Available monthly on -- the 4th day of the month by 5:00 PM Pacific Time since 2015-02. -- - /monthly_revenue_annual_subscriptions/ - Available monthly on the -- 4th day of the month by 5:00 PM Pacific Time since 2015-02. -- - /disbursed_amount_by_product/ - Available every 30 days by 5:00 PM -- Pacific Time since 2015-01-26. -- - /disbursed_amount_by_product_with_uncollected_funds/ -This data set -- is only available from 2012-04-19 until 2015-01-25. After -- 2015-01-25, this data set was split into three data sets: -- disbursed_amount_by_product, -- disbursed_amount_by_age_of_uncollected_funds, and -- disbursed_amount_by_age_of_disbursed_funds. -- - /disbursed_amount_by_customer_geo/ - Available every 30 days by 5:00 -- PM Pacific Time since 2012-04-19. -- - /disbursed_amount_by_age_of_uncollected_funds/ - Available every 30 -- days by 5:00 PM Pacific Time since 2015-01-26. -- - /disbursed_amount_by_age_of_disbursed_funds/ - Available every 30 -- days by 5:00 PM Pacific Time since 2015-01-26. -- - /customer_profile_by_industry/ - Available daily by 5:00 PM Pacific -- Time since 2015-10-01. -- - /customer_profile_by_revenue/ - Available daily by 5:00 PM Pacific -- Time since 2015-10-01. -- - /customer_profile_by_geography/ - Available daily by 5:00 PM Pacific -- Time since 2015-10-01. gdsDataSetType :: Lens' GenerateDataSet DataSetType gdsDataSetType = lens _gdsDataSetType (\ s a -> s{_gdsDataSetType = a}); -- | The date a data set was published. For daily data sets, provide a date -- with day-level granularity for the desired day. For weekly data sets, -- provide a date with day-level granularity within the desired week (the -- day value will be ignored). For monthly data sets, provide a date with -- month-level granularity for the desired month (the day value will be -- ignored). gdsDataSetPublicationDate :: Lens' GenerateDataSet UTCTime gdsDataSetPublicationDate = lens _gdsDataSetPublicationDate (\ s a -> s{_gdsDataSetPublicationDate = a}) . _Time; -- | The Amazon Resource Name (ARN) of the Role with an attached permissions -- policy to interact with the provided AWS services. gdsRoleNameARN :: Lens' GenerateDataSet Text gdsRoleNameARN = lens _gdsRoleNameARN (\ s a -> s{_gdsRoleNameARN = a}); -- | The name (friendly name, not ARN) of the destination S3 bucket. gdsDestinationS3BucketName :: Lens' GenerateDataSet Text gdsDestinationS3BucketName = lens _gdsDestinationS3BucketName (\ s a -> s{_gdsDestinationS3BucketName = a}); -- | Amazon Resource Name (ARN) for the SNS Topic that will be notified when -- the data set has been published or if an error has occurred. gdsSnsTopicARN :: Lens' GenerateDataSet Text gdsSnsTopicARN = lens _gdsSnsTopicARN (\ s a -> s{_gdsSnsTopicARN = a}); instance AWSRequest GenerateDataSet where type Rs GenerateDataSet = GenerateDataSetResponse request = postJSON marketplaceAnalytics response = receiveJSON (\ s h x -> GenerateDataSetResponse' <$> (x .?> "dataSetRequestId") <*> (pure (fromEnum s))) instance Hashable GenerateDataSet instance NFData GenerateDataSet instance ToHeaders GenerateDataSet where toHeaders = const (mconcat ["X-Amz-Target" =# ("MarketplaceCommerceAnalytics20150701.GenerateDataSet" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON GenerateDataSet where toJSON GenerateDataSet'{..} = object (catMaybes [("customerDefinedValues" .=) <$> _gdsCustomerDefinedValues, ("destinationS3Prefix" .=) <$> _gdsDestinationS3Prefix, Just ("dataSetType" .= _gdsDataSetType), Just ("dataSetPublicationDate" .= _gdsDataSetPublicationDate), Just ("roleNameArn" .= _gdsRoleNameARN), Just ("destinationS3BucketName" .= _gdsDestinationS3BucketName), Just ("snsTopicArn" .= _gdsSnsTopicARN)]) instance ToPath GenerateDataSet where toPath = const "/" instance ToQuery GenerateDataSet where toQuery = const mempty -- | Container for the result of the GenerateDataSet operation. -- -- /See:/ 'generateDataSetResponse' smart constructor. data GenerateDataSetResponse = GenerateDataSetResponse' { _gdsrsDataSetRequestId :: !(Maybe Text) , _gdsrsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GenerateDataSetResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gdsrsDataSetRequestId' -- -- * 'gdsrsResponseStatus' generateDataSetResponse :: Int -- ^ 'gdsrsResponseStatus' -> GenerateDataSetResponse generateDataSetResponse pResponseStatus_ = GenerateDataSetResponse' { _gdsrsDataSetRequestId = Nothing , _gdsrsResponseStatus = pResponseStatus_ } -- | A unique identifier representing a specific request to the -- GenerateDataSet operation. This identifier can be used to correlate a -- request with notifications from the SNS topic. gdsrsDataSetRequestId :: Lens' GenerateDataSetResponse (Maybe Text) gdsrsDataSetRequestId = lens _gdsrsDataSetRequestId (\ s a -> s{_gdsrsDataSetRequestId = a}); -- | The response status code. gdsrsResponseStatus :: Lens' GenerateDataSetResponse Int gdsrsResponseStatus = lens _gdsrsResponseStatus (\ s a -> s{_gdsrsResponseStatus = a}); instance NFData GenerateDataSetResponse