amazonka-marketplace-analytics-1.4.1: gen/Network/AWS/MarketplaceAnalytics/GenerateDataSet.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.MarketplaceAnalytics.GenerateDataSet
-- Copyright : (c) 2013-2016 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- 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