packages feed

amazonka-marketplace-metering 1.4.4 → 1.4.5

raw patch · 14 files changed

+653/−47 lines, 14 filesdep ~amazonka-coredep ~amazonka-marketplace-meteringdep ~amazonka-testPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: amazonka-core, amazonka-marketplace-metering, amazonka-test

API changes (from Hackage documentation)

- Network.AWS.MarketplaceMetering.MeterUsage: instance Data.Aeson.Types.Class.ToJSON Network.AWS.MarketplaceMetering.MeterUsage.MeterUsage
+ Network.AWS.MarketplaceMetering: CustomerNotSubscribed :: UsageRecordResultStatus
+ Network.AWS.MarketplaceMetering: DuplicateRecord :: UsageRecordResultStatus
+ Network.AWS.MarketplaceMetering: Success :: UsageRecordResultStatus
+ Network.AWS.MarketplaceMetering: _ExpiredTokenException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.MarketplaceMetering: _InvalidCustomerIdentifierException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.MarketplaceMetering: _InvalidTokenException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.MarketplaceMetering: data UsageRecord
+ Network.AWS.MarketplaceMetering: data UsageRecordResult
+ Network.AWS.MarketplaceMetering: data UsageRecordResultStatus
+ Network.AWS.MarketplaceMetering: urCustomerIdentifier :: Lens' UsageRecord Text
+ Network.AWS.MarketplaceMetering: urDimension :: Lens' UsageRecord Text
+ Network.AWS.MarketplaceMetering: urQuantity :: Lens' UsageRecord Natural
+ Network.AWS.MarketplaceMetering: urTimestamp :: Lens' UsageRecord UTCTime
+ Network.AWS.MarketplaceMetering: urrMeteringRecordId :: Lens' UsageRecordResult (Maybe Text)
+ Network.AWS.MarketplaceMetering: urrStatus :: Lens' UsageRecordResult (Maybe UsageRecordResultStatus)
+ Network.AWS.MarketplaceMetering: urrUsageRecord :: Lens' UsageRecordResult (Maybe UsageRecord)
+ Network.AWS.MarketplaceMetering: usageRecord :: UTCTime -> Text -> Text -> Natural -> UsageRecord
+ Network.AWS.MarketplaceMetering: usageRecordResult :: UsageRecordResult
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: batchMeterUsage :: Text -> BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: batchMeterUsageResponse :: Int -> BatchMeterUsageResponse
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: bmuProductCode :: Lens' BatchMeterUsage Text
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: bmuUsageRecords :: Lens' BatchMeterUsage [UsageRecord]
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: bmursResponseStatus :: Lens' BatchMeterUsageResponse Int
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: bmursResults :: Lens' BatchMeterUsageResponse [UsageRecordResult]
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: bmursUnprocessedRecords :: Lens' BatchMeterUsageResponse [UsageRecord]
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: data BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: data BatchMeterUsageResponse
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Control.DeepSeq.NFData Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Control.DeepSeq.NFData Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsageResponse
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Data.Data.Data Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Data.Data.Data Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsageResponse
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Data.Hashable.Class.Hashable Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance GHC.Classes.Eq Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance GHC.Classes.Eq Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsageResponse
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance GHC.Generics.Generic Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance GHC.Generics.Generic Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsageResponse
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance GHC.Read.Read Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance GHC.Read.Read Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsageResponse
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance GHC.Show.Show Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance GHC.Show.Show Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsageResponse
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Network.AWS.Data.Path.ToPath Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Network.AWS.Data.Query.ToQuery Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.BatchMeterUsage: instance Network.AWS.Types.AWSRequest Network.AWS.MarketplaceMetering.BatchMeterUsage.BatchMeterUsage
+ Network.AWS.MarketplaceMetering.MeterUsage: instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.MarketplaceMetering.MeterUsage.MeterUsage
+ Network.AWS.MarketplaceMetering.ResolveCustomer: data ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: data ResolveCustomerResponse
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Control.DeepSeq.NFData Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Control.DeepSeq.NFData Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomerResponse
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Data.Data.Data Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Data.Data.Data Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomerResponse
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Data.Hashable.Class.Hashable Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance GHC.Classes.Eq Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance GHC.Classes.Eq Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomerResponse
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance GHC.Generics.Generic Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance GHC.Generics.Generic Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomerResponse
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance GHC.Read.Read Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance GHC.Read.Read Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomerResponse
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance GHC.Show.Show Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance GHC.Show.Show Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomerResponse
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Network.AWS.Data.Path.ToPath Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Network.AWS.Data.Query.ToQuery Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: instance Network.AWS.Types.AWSRequest Network.AWS.MarketplaceMetering.ResolveCustomer.ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: rcRegistrationToken :: Lens' ResolveCustomer Text
+ Network.AWS.MarketplaceMetering.ResolveCustomer: rcrsCustomerIdentifier :: Lens' ResolveCustomerResponse (Maybe Text)
+ Network.AWS.MarketplaceMetering.ResolveCustomer: rcrsProductCode :: Lens' ResolveCustomerResponse (Maybe Text)
+ Network.AWS.MarketplaceMetering.ResolveCustomer: rcrsResponseStatus :: Lens' ResolveCustomerResponse Int
+ Network.AWS.MarketplaceMetering.ResolveCustomer: resolveCustomer :: Text -> ResolveCustomer
+ Network.AWS.MarketplaceMetering.ResolveCustomer: resolveCustomerResponse :: Int -> ResolveCustomerResponse
+ Network.AWS.MarketplaceMetering.Types: CustomerNotSubscribed :: UsageRecordResultStatus
+ Network.AWS.MarketplaceMetering.Types: DuplicateRecord :: UsageRecordResultStatus
+ Network.AWS.MarketplaceMetering.Types: Success :: UsageRecordResultStatus
+ Network.AWS.MarketplaceMetering.Types: _ExpiredTokenException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.MarketplaceMetering.Types: _InvalidCustomerIdentifierException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.MarketplaceMetering.Types: _InvalidTokenException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.MarketplaceMetering.Types: data UsageRecord
+ Network.AWS.MarketplaceMetering.Types: data UsageRecordResult
+ Network.AWS.MarketplaceMetering.Types: data UsageRecordResultStatus
+ Network.AWS.MarketplaceMetering.Types: urCustomerIdentifier :: Lens' UsageRecord Text
+ Network.AWS.MarketplaceMetering.Types: urDimension :: Lens' UsageRecord Text
+ Network.AWS.MarketplaceMetering.Types: urQuantity :: Lens' UsageRecord Natural
+ Network.AWS.MarketplaceMetering.Types: urTimestamp :: Lens' UsageRecord UTCTime
+ Network.AWS.MarketplaceMetering.Types: urrMeteringRecordId :: Lens' UsageRecordResult (Maybe Text)
+ Network.AWS.MarketplaceMetering.Types: urrStatus :: Lens' UsageRecordResult (Maybe UsageRecordResultStatus)
+ Network.AWS.MarketplaceMetering.Types: urrUsageRecord :: Lens' UsageRecordResult (Maybe UsageRecord)
+ Network.AWS.MarketplaceMetering.Types: usageRecord :: UTCTime -> Text -> Text -> Natural -> UsageRecord
+ Network.AWS.MarketplaceMetering.Types: usageRecordResult :: UsageRecordResult

Files

README.md view
@@ -8,32 +8,27 @@  ## Version -`1.4.4`+`1.4.5`   ## Description -AWS Marketplace Metering Service--This reference provides descriptions of the low-level AWS Marketplace Metering Service API.--AWS Marketplace sellers can use this API to submit usage data for custom usage dimensions.--__Submitting Metering Records__---   /MeterUsage/- Submits the metering record for a Marketplace product.- Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-marketplace-metering) and the [AWS API Reference](https://aws.amazon.com/documentation/).  The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),-which provides mechanisms for specifying AuthN/AuthZ information and sending requests.+which provides mechanisms for specifying AuthN/AuthZ information, sending requests,+and receiving responses. -Use of lenses is required for constructing and manipulating types.-This is due to the amount of nesting of AWS types and transparency regarding+Lenses are used for constructing and manipulating types,+due to the depth of nesting of AWS types and transparency regarding de/serialisation into more palatable Haskell values. The provided lenses should be compatible with any of the major lens libraries [lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).++See [Network.AWS.MarketplaceMetering](http://hackage.haskell.org/package/amazonka-marketplace-metering/docs/Network-AWS-MarketplaceMetering.html)+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.+  ## Contribute 
amazonka-marketplace-metering.cabal view
@@ -1,5 +1,5 @@ name:                  amazonka-marketplace-metering-version:               1.4.4+version:               1.4.5 synopsis:              Amazon Marketplace Metering SDK. homepage:              https://github.com/brendanhay/amazonka bug-reports:           https://github.com/brendanhay/amazonka/issues@@ -13,28 +13,19 @@ cabal-version:         >= 1.10 extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep description:-    AWS Marketplace Metering Service--    This reference provides descriptions of the low-level AWS Marketplace Metering Service API.--    AWS Marketplace sellers can use this API to submit usage data for custom usage dimensions.--    __Submitting Metering Records__--    -   /MeterUsage/- Submits the metering record for a Marketplace product.-    .     The types from this library are intended to be used with     <http://hackage.haskell.org/package/amazonka amazonka>, which provides-    mechanisms for specifying AuthN/AuthZ information and sending requests.+    mechanisms for specifying AuthN/AuthZ information, sending requests,+    and receiving responses.     .-    Use of lenses is required for constructing and manipulating types.-    This is due to the amount of nesting of AWS types and transparency regarding+    Lenses are used for constructing and manipulating types,+    due to the depth of nesting of AWS types and transparency regarding     de/serialisation into more palatable Haskell values.     The provided lenses should be compatible with any of the major lens libraries     such as <http://hackage.haskell.org/package/lens lens> or     <http://hackage.haskell.org/package/lens-family-core lens-family-core>.     .-    See "Network.AWS.MarketplaceMetering" or <https://aws.amazon.com/documentation/ the AWS Documentation>+    See "Network.AWS.MarketplaceMetering" or <https://aws.amazon.com/documentation/ the AWS documentation>     to get started.  source-repository head@@ -49,7 +40,9 @@      exposed-modules:           Network.AWS.MarketplaceMetering+        , Network.AWS.MarketplaceMetering.BatchMeterUsage         , Network.AWS.MarketplaceMetering.MeterUsage+        , Network.AWS.MarketplaceMetering.ResolveCustomer         , Network.AWS.MarketplaceMetering.Types         , Network.AWS.MarketplaceMetering.Waiters @@ -58,7 +51,7 @@         , Network.AWS.MarketplaceMetering.Types.Sum      build-depends:-          amazonka-core == 1.4.4.*+          amazonka-core == 1.4.5.*         , base          >= 4.7     && < 5  test-suite amazonka-marketplace-metering-test@@ -78,9 +71,9 @@         , Test.AWS.MarketplaceMetering.Internal      build-depends:-          amazonka-core == 1.4.4.*-        , amazonka-test == 1.4.4.*-        , amazonka-marketplace-metering == 1.4.4.*+          amazonka-core == 1.4.5.*+        , amazonka-test == 1.4.5.*+        , amazonka-marketplace-metering == 1.4.5.*         , base         , bytestring         , tasty
+ fixture/BatchMeterUsage.yaml view
+ fixture/BatchMeterUsageResponse.proto view
+ fixture/ResolveCustomer.yaml view
+ fixture/ResolveCustomerResponse.proto view
gen/Network/AWS/MarketplaceMetering.hs view
@@ -11,7 +11,7 @@ -- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- AWS Marketplace Metering Service+-- __AWS Marketplace Metering Service__ -- -- This reference provides descriptions of the low-level AWS Marketplace Metering Service API. --@@ -19,8 +19,18 @@ -- -- __Submitting Metering Records__ ----- -   /MeterUsage/- Submits the metering record for a Marketplace product.+--     * /MeterUsage/ - Submits the metering record for a Marketplace product. MeterUsage is called from an EC2 instance. --+--     * /BatchMeterUsage/ - Submits the metering record for a set of customers. BatchMeterUsage is called from a software-as-a-service (SaaS) application.+--+--+--+-- __Accepting New Customers__+--+--     * /ResolveCustomer/ - Called by a SaaS application during the registration process. When a buyer visits your website during the registration process, the buyer submits a Registration Token through the browser. The Registration Token is resolved through this API to obtain a CustomerIdentifier and Product Code.+--+--+-- module Network.AWS.MarketplaceMetering     (     -- * Service Configuration@@ -50,19 +60,54 @@     -- ** InternalServiceErrorException     , _InternalServiceErrorException +    -- ** InvalidTokenException+    , _InvalidTokenException++    -- ** ExpiredTokenException+    , _ExpiredTokenException++    -- ** InvalidCustomerIdentifierException+    , _InvalidCustomerIdentifierException+     -- * Waiters     -- $waiters      -- * Operations     -- $operations +    -- ** BatchMeterUsage+    , module Network.AWS.MarketplaceMetering.BatchMeterUsage++    -- ** ResolveCustomer+    , module Network.AWS.MarketplaceMetering.ResolveCustomer+     -- ** MeterUsage     , module Network.AWS.MarketplaceMetering.MeterUsage      -- * Types++    -- ** UsageRecordResultStatus+    , UsageRecordResultStatus (..)++    -- ** UsageRecord+    , UsageRecord+    , usageRecord+    , urTimestamp+    , urCustomerIdentifier+    , urDimension+    , urQuantity++    -- ** UsageRecordResult+    , UsageRecordResult+    , usageRecordResult+    , urrStatus+    , urrUsageRecord+    , urrMeteringRecordId     ) where +import           Network.AWS.MarketplaceMetering.BatchMeterUsage import           Network.AWS.MarketplaceMetering.MeterUsage+import           Network.AWS.MarketplaceMetering.ResolveCustomer import           Network.AWS.MarketplaceMetering.Types import           Network.AWS.MarketplaceMetering.Waiters 
+ gen/Network/AWS/MarketplaceMetering/BatchMeterUsage.hs view
@@ -0,0 +1,169 @@+{-# 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.MarketplaceMetering.BatchMeterUsage+-- 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)+--+-- BatchMeterUsage is called from a SaaS application listed on the AWS Marketplace to post metering records for a set of customers.+--+--+-- For identical requests, the API is idempotent; requests can be retried with the same records or a subset of the input records.+--+-- Every request to BatchMeterUsage is for one product. If you need to meter usage for multiple products, you must make multiple calls to BatchMeterUsage.+--+-- BatchMeterUsage can process up to 25 UsageRecords at a time.+--+module Network.AWS.MarketplaceMetering.BatchMeterUsage+    (+    -- * Creating a Request+      batchMeterUsage+    , BatchMeterUsage+    -- * Request Lenses+    , bmuUsageRecords+    , bmuProductCode++    -- * Destructuring the Response+    , batchMeterUsageResponse+    , BatchMeterUsageResponse+    -- * Response Lenses+    , bmursResults+    , bmursUnprocessedRecords+    , bmursResponseStatus+    ) where++import           Network.AWS.Lens+import           Network.AWS.MarketplaceMetering.Types+import           Network.AWS.MarketplaceMetering.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response++-- | A BatchMeterUsageRequest contains UsageRecords, which indicate quantities of usage within your application.+--+--+--+-- /See:/ 'batchMeterUsage' smart constructor.+data BatchMeterUsage = BatchMeterUsage'+    { _bmuUsageRecords :: ![UsageRecord]+    , _bmuProductCode  :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchMeterUsage' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bmuUsageRecords' - The set of UsageRecords to submit. BatchMeterUsage accepts up to 25 UsageRecords at a time.+--+-- * 'bmuProductCode' - Product code is used to uniquely identify a product in AWS Marketplace. The product code should be the same as the one used during the publishing of a new product.+batchMeterUsage+    :: Text -- ^ 'bmuProductCode'+    -> BatchMeterUsage+batchMeterUsage pProductCode_ =+    BatchMeterUsage'+    { _bmuUsageRecords = mempty+    , _bmuProductCode = pProductCode_+    }++-- | The set of UsageRecords to submit. BatchMeterUsage accepts up to 25 UsageRecords at a time.+bmuUsageRecords :: Lens' BatchMeterUsage [UsageRecord]+bmuUsageRecords = lens _bmuUsageRecords (\ s a -> s{_bmuUsageRecords = a}) . _Coerce;++-- | Product code is used to uniquely identify a product in AWS Marketplace. The product code should be the same as the one used during the publishing of a new product.+bmuProductCode :: Lens' BatchMeterUsage Text+bmuProductCode = lens _bmuProductCode (\ s a -> s{_bmuProductCode = a});++instance AWSRequest BatchMeterUsage where+        type Rs BatchMeterUsage = BatchMeterUsageResponse+        request = postJSON marketplaceMetering+        response+          = receiveJSON+              (\ s h x ->+                 BatchMeterUsageResponse' <$>+                   (x .?> "Results" .!@ mempty) <*>+                     (x .?> "UnprocessedRecords" .!@ mempty)+                     <*> (pure (fromEnum s)))++instance Hashable BatchMeterUsage++instance NFData BatchMeterUsage++instance ToHeaders BatchMeterUsage where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("AWSMPMeteringService.BatchMeterUsage" ::+                       ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON BatchMeterUsage where+        toJSON BatchMeterUsage'{..}+          = object+              (catMaybes+                 [Just ("UsageRecords" .= _bmuUsageRecords),+                  Just ("ProductCode" .= _bmuProductCode)])++instance ToPath BatchMeterUsage where+        toPath = const "/"++instance ToQuery BatchMeterUsage where+        toQuery = const mempty++-- | Contains the UsageRecords processed by BatchMeterUsage and any records that have failed due to transient error.+--+--+--+-- /See:/ 'batchMeterUsageResponse' smart constructor.+data BatchMeterUsageResponse = BatchMeterUsageResponse'+    { _bmursResults            :: !(Maybe [UsageRecordResult])+    , _bmursUnprocessedRecords :: !(Maybe [UsageRecord])+    , _bmursResponseStatus     :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchMeterUsageResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bmursResults' - Contains all UsageRecords processed by BatchMeterUsage. These records were either honored by AWS Marketplace Metering Service or were invalid.+--+-- * 'bmursUnprocessedRecords' - Contains all UsageRecords that were not processed by BatchMeterUsage. This is a list of UsageRecords. You can retry the failed request by making another BatchMeterUsage call with this list as input in the BatchMeterUsageRequest.+--+-- * 'bmursResponseStatus' - -- | The response status code.+batchMeterUsageResponse+    :: Int -- ^ 'bmursResponseStatus'+    -> BatchMeterUsageResponse+batchMeterUsageResponse pResponseStatus_ =+    BatchMeterUsageResponse'+    { _bmursResults = Nothing+    , _bmursUnprocessedRecords = Nothing+    , _bmursResponseStatus = pResponseStatus_+    }++-- | Contains all UsageRecords processed by BatchMeterUsage. These records were either honored by AWS Marketplace Metering Service or were invalid.+bmursResults :: Lens' BatchMeterUsageResponse [UsageRecordResult]+bmursResults = lens _bmursResults (\ s a -> s{_bmursResults = a}) . _Default . _Coerce;++-- | Contains all UsageRecords that were not processed by BatchMeterUsage. This is a list of UsageRecords. You can retry the failed request by making another BatchMeterUsage call with this list as input in the BatchMeterUsageRequest.+bmursUnprocessedRecords :: Lens' BatchMeterUsageResponse [UsageRecord]+bmursUnprocessedRecords = lens _bmursUnprocessedRecords (\ s a -> s{_bmursUnprocessedRecords = a}) . _Default . _Coerce;++-- | -- | The response status code.+bmursResponseStatus :: Lens' BatchMeterUsageResponse Int+bmursResponseStatus = lens _bmursResponseStatus (\ s a -> s{_bmursResponseStatus = a});++instance NFData BatchMeterUsageResponse
gen/Network/AWS/MarketplaceMetering/MeterUsage.hs view
@@ -19,6 +19,10 @@ -- Portability : non-portable (GHC extensions) -- -- API to emit metering records. For identical requests, the API is idempotent. It simply returns the metering record ID.+--+--+-- MeterUsage is authenticated on the buyer's AWS account, generally when running from an EC2 instance on the AWS Marketplace.+-- module Network.AWS.MarketplaceMetering.MeterUsage     (     -- * Creating a Request@@ -59,15 +63,15 @@ -- -- Use one of the following lenses to modify other fields as desired: ----- * 'muProductCode'+-- * 'muProductCode' - Product code is used to uniquely identify a product in AWS Marketplace. The product code should be the same as the one used during the publishing of a new product. ----- * 'muTimestamp'+-- * 'muTimestamp' - Timestamp of the hour, recorded in UTC. The seconds and milliseconds portions of the timestamp will be ignored. ----- * 'muUsageDimension'+-- * 'muUsageDimension' - It will be one of the fcp dimension name provided during the publishing of the product. ----- * 'muUsageQuantity'+-- * 'muUsageQuantity' - Consumption value for the hour. ----- * 'muDryRun'+-- * 'muDryRun' - Checks whether you have the permissions required for the action, but does not make the request. If you have the permissions, the request returns DryRunOperation; otherwise, it returns UnauthorizedException. meterUsage     :: Text -- ^ 'muProductCode'     -> UTCTime -- ^ 'muTimestamp'@@ -92,7 +96,7 @@ muTimestamp :: Lens' MeterUsage UTCTime muTimestamp = lens _muTimestamp (\ s a -> s{_muTimestamp = a}) . _Time; --- | It will be one of the \'fcp dimension name\' provided during the publishing of the product.+-- | It will be one of the fcp dimension name provided during the publishing of the product. muUsageDimension :: Lens' MeterUsage Text muUsageDimension = lens _muUsageDimension (\ s a -> s{_muUsageDimension = a}); @@ -152,9 +156,9 @@ -- -- Use one of the following lenses to modify other fields as desired: ----- * 'mursMeteringRecordId'+-- * 'mursMeteringRecordId' - Undocumented member. ----- * 'mursResponseStatus'+-- * 'mursResponseStatus' - -- | The response status code. meterUsageResponse     :: Int -- ^ 'mursResponseStatus'     -> MeterUsageResponse@@ -168,7 +172,7 @@ mursMeteringRecordId :: Lens' MeterUsageResponse (Maybe Text) mursMeteringRecordId = lens _mursMeteringRecordId (\ s a -> s{_mursMeteringRecordId = a}); --- | The response status code.+-- | -- | The response status code. mursResponseStatus :: Lens' MeterUsageResponse Int mursResponseStatus = lens _mursResponseStatus (\ s a -> s{_mursResponseStatus = a}); 
+ gen/Network/AWS/MarketplaceMetering/ResolveCustomer.hs view
@@ -0,0 +1,153 @@+{-# 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.MarketplaceMetering.ResolveCustomer+-- 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)+--+-- ResolveCustomer is called by a SaaS application during the registration process. When a buyer visits your website during the registration process, the buyer submits a registration token through their browser. The registration token is resolved through this API to obtain a CustomerIdentifier and product code.+--+--+module Network.AWS.MarketplaceMetering.ResolveCustomer+    (+    -- * Creating a Request+      resolveCustomer+    , ResolveCustomer+    -- * Request Lenses+    , rcRegistrationToken++    -- * Destructuring the Response+    , resolveCustomerResponse+    , ResolveCustomerResponse+    -- * Response Lenses+    , rcrsCustomerIdentifier+    , rcrsProductCode+    , rcrsResponseStatus+    ) where++import           Network.AWS.Lens+import           Network.AWS.MarketplaceMetering.Types+import           Network.AWS.MarketplaceMetering.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response++-- | Contains input to the ResolveCustomer operation.+--+--+--+-- /See:/ 'resolveCustomer' smart constructor.+newtype ResolveCustomer = ResolveCustomer'+    { _rcRegistrationToken :: Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ResolveCustomer' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rcRegistrationToken' - When a buyer visits your website during the registration process, the buyer submits a registration token through the browser. The registration token is resolved to obtain a CustomerIdentifier and product code.+resolveCustomer+    :: Text -- ^ 'rcRegistrationToken'+    -> ResolveCustomer+resolveCustomer pRegistrationToken_ =+    ResolveCustomer'+    { _rcRegistrationToken = pRegistrationToken_+    }++-- | When a buyer visits your website during the registration process, the buyer submits a registration token through the browser. The registration token is resolved to obtain a CustomerIdentifier and product code.+rcRegistrationToken :: Lens' ResolveCustomer Text+rcRegistrationToken = lens _rcRegistrationToken (\ s a -> s{_rcRegistrationToken = a});++instance AWSRequest ResolveCustomer where+        type Rs ResolveCustomer = ResolveCustomerResponse+        request = postJSON marketplaceMetering+        response+          = receiveJSON+              (\ s h x ->+                 ResolveCustomerResponse' <$>+                   (x .?> "CustomerIdentifier") <*>+                     (x .?> "ProductCode")+                     <*> (pure (fromEnum s)))++instance Hashable ResolveCustomer++instance NFData ResolveCustomer++instance ToHeaders ResolveCustomer where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("AWSMPMeteringService.ResolveCustomer" ::+                       ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ResolveCustomer where+        toJSON ResolveCustomer'{..}+          = object+              (catMaybes+                 [Just ("RegistrationToken" .= _rcRegistrationToken)])++instance ToPath ResolveCustomer where+        toPath = const "/"++instance ToQuery ResolveCustomer where+        toQuery = const mempty++-- | The result of the ResolveCustomer operation. Contains the CustomerIdentifier and product code.+--+--+--+-- /See:/ 'resolveCustomerResponse' smart constructor.+data ResolveCustomerResponse = ResolveCustomerResponse'+    { _rcrsCustomerIdentifier :: !(Maybe Text)+    , _rcrsProductCode        :: !(Maybe Text)+    , _rcrsResponseStatus     :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ResolveCustomerResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rcrsCustomerIdentifier' - The CustomerIdentifier is used to identify an individual customer in your application. Calls to BatchMeterUsage require CustomerIdentifiers for each UsageRecord.+--+-- * 'rcrsProductCode' - The product code is returned to confirm that the buyer is registering for your product. Subsequent BatchMeterUsage calls should be made using this product code.+--+-- * 'rcrsResponseStatus' - -- | The response status code.+resolveCustomerResponse+    :: Int -- ^ 'rcrsResponseStatus'+    -> ResolveCustomerResponse+resolveCustomerResponse pResponseStatus_ =+    ResolveCustomerResponse'+    { _rcrsCustomerIdentifier = Nothing+    , _rcrsProductCode = Nothing+    , _rcrsResponseStatus = pResponseStatus_+    }++-- | The CustomerIdentifier is used to identify an individual customer in your application. Calls to BatchMeterUsage require CustomerIdentifiers for each UsageRecord.+rcrsCustomerIdentifier :: Lens' ResolveCustomerResponse (Maybe Text)+rcrsCustomerIdentifier = lens _rcrsCustomerIdentifier (\ s a -> s{_rcrsCustomerIdentifier = a});++-- | The product code is returned to confirm that the buyer is registering for your product. Subsequent BatchMeterUsage calls should be made using this product code.+rcrsProductCode :: Lens' ResolveCustomerResponse (Maybe Text)+rcrsProductCode = lens _rcrsProductCode (\ s a -> s{_rcrsProductCode = a});++-- | -- | The response status code.+rcrsResponseStatus :: Lens' ResolveCustomerResponse Int+rcrsResponseStatus = lens _rcrsResponseStatus (\ s a -> s{_rcrsResponseStatus = a});++instance NFData ResolveCustomerResponse
gen/Network/AWS/MarketplaceMetering/Types.hs view
@@ -23,6 +23,27 @@     , _TimestampOutOfBoundsException     , _ThrottlingException     , _InternalServiceErrorException+    , _InvalidTokenException+    , _ExpiredTokenException+    , _InvalidCustomerIdentifierException++    -- * UsageRecordResultStatus+    , UsageRecordResultStatus (..)++    -- * UsageRecord+    , UsageRecord+    , usageRecord+    , urTimestamp+    , urCustomerIdentifier+    , urDimension+    , urQuantity++    -- * UsageRecordResult+    , UsageRecordResult+    , usageRecordResult+    , urrStatus+    , urrUsageRecord+    , urrMeteringRecordId     ) where  import           Network.AWS.Lens@@ -31,7 +52,7 @@ import           Network.AWS.Prelude import           Network.AWS.Sign.V4 --- | API version '2016-01-14' of the Amazon Marketplace Metering SDK configuration.+-- | API version @2016-01-14@ of the Amazon Marketplace Metering SDK configuration. marketplaceMetering :: Service marketplaceMetering =     Service@@ -66,35 +87,66 @@       | otherwise = Nothing  -- | The endpoint being called is in a region different from your EC2 instance. The region of the Metering service endpoint and the region of the EC2 instance must match.+--+-- _InvalidEndpointRegionException :: AsError a => Getting (First ServiceError) a ServiceError _InvalidEndpointRegionException =     _ServiceError . hasCode "InvalidEndpointRegionException"  -- | The product code passed does not match the product code used for publishing the product.+--+-- _InvalidProductCodeException :: AsError a => Getting (First ServiceError) a ServiceError _InvalidProductCodeException =     _ServiceError . hasCode "InvalidProductCodeException"  -- | The usage dimension does not match one of the UsageDimensions associated with products.+--+-- _InvalidUsageDimensionException :: AsError a => Getting (First ServiceError) a ServiceError _InvalidUsageDimensionException =     _ServiceError . hasCode "InvalidUsageDimensionException"  -- | A metering record has already been emitted by the same EC2 instance for the given {usageDimension, timestamp} with a different usageQuantity.+--+-- _DuplicateRequestException :: AsError a => Getting (First ServiceError) a ServiceError _DuplicateRequestException =     _ServiceError . hasCode "DuplicateRequestException"  -- | The timestamp value passed in the meterUsage() is out of allowed range.+--+-- _TimestampOutOfBoundsException :: AsError a => Getting (First ServiceError) a ServiceError _TimestampOutOfBoundsException =     _ServiceError . hasCode "TimestampOutOfBoundsException"  -- | The calls to the MeterUsage API are throttled.+--+-- _ThrottlingException :: AsError a => Getting (First ServiceError) a ServiceError _ThrottlingException = _ServiceError . hasCode "ThrottlingException"  -- | An internal error has occurred. Retry your request. If the problem persists, post a message with details on the AWS forums.+--+-- _InternalServiceErrorException :: AsError a => Getting (First ServiceError) a ServiceError _InternalServiceErrorException =     _ServiceError . hasCode "InternalServiceErrorException"++-- | Prism for InvalidTokenException' errors.+_InvalidTokenException :: AsError a => Getting (First ServiceError) a ServiceError+_InvalidTokenException = _ServiceError . hasCode "InvalidTokenException"++-- | The submitted registration token has expired. This can happen if the buyer's browser takes too long to redirect to your page, the buyer has resubmitted the registration token, or your application has held on to the registration token for too long. Your SaaS registration website should redeem this token as soon as it is submitted by the buyer's browser.+--+--+_ExpiredTokenException :: AsError a => Getting (First ServiceError) a ServiceError+_ExpiredTokenException = _ServiceError . hasCode "ExpiredTokenException"++-- | You have metered usage for a CustomerIdentifier that does not exist.+--+--+_InvalidCustomerIdentifierException :: AsError a => Getting (First ServiceError) a ServiceError+_InvalidCustomerIdentifierException =+    _ServiceError . hasCode "InvalidCustomerIdentifierException"
gen/Network/AWS/MarketplaceMetering/Types/Product.hs view
@@ -20,3 +20,133 @@ import           Network.AWS.Lens import           Network.AWS.MarketplaceMetering.Types.Sum import           Network.AWS.Prelude++-- | A UsageRecord indicates a quantity of usage for a given product, customer, dimension and time.+--+--+-- Multiple requests with the same UsageRecords as input will be deduplicated to prevent double charges.+--+--+-- /See:/ 'usageRecord' smart constructor.+data UsageRecord = UsageRecord'+    { _urTimestamp          :: !POSIX+    , _urCustomerIdentifier :: !Text+    , _urDimension          :: !Text+    , _urQuantity           :: !Nat+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'UsageRecord' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'urTimestamp' - Timestamp of the hour, recorded in UTC. The seconds and milliseconds portions of the timestamp will be ignored. Your application can meter usage for up to one hour in the past.+--+-- * 'urCustomerIdentifier' - The CustomerIdentifier is obtained through the ResolveCustomer operation and represents an individual buyer in your application.+--+-- * 'urDimension' - During the process of registering a product on AWS Marketplace, up to eight dimensions are specified. These represent different units of value in your application.+--+-- * 'urQuantity' - The quantity of usage consumed by the customer for the given dimension and time.+usageRecord+    :: UTCTime -- ^ 'urTimestamp'+    -> Text -- ^ 'urCustomerIdentifier'+    -> Text -- ^ 'urDimension'+    -> Natural -- ^ 'urQuantity'+    -> UsageRecord+usageRecord pTimestamp_ pCustomerIdentifier_ pDimension_ pQuantity_ =+    UsageRecord'+    { _urTimestamp = _Time # pTimestamp_+    , _urCustomerIdentifier = pCustomerIdentifier_+    , _urDimension = pDimension_+    , _urQuantity = _Nat # pQuantity_+    }++-- | Timestamp of the hour, recorded in UTC. The seconds and milliseconds portions of the timestamp will be ignored. Your application can meter usage for up to one hour in the past.+urTimestamp :: Lens' UsageRecord UTCTime+urTimestamp = lens _urTimestamp (\ s a -> s{_urTimestamp = a}) . _Time;++-- | The CustomerIdentifier is obtained through the ResolveCustomer operation and represents an individual buyer in your application.+urCustomerIdentifier :: Lens' UsageRecord Text+urCustomerIdentifier = lens _urCustomerIdentifier (\ s a -> s{_urCustomerIdentifier = a});++-- | During the process of registering a product on AWS Marketplace, up to eight dimensions are specified. These represent different units of value in your application.+urDimension :: Lens' UsageRecord Text+urDimension = lens _urDimension (\ s a -> s{_urDimension = a});++-- | The quantity of usage consumed by the customer for the given dimension and time.+urQuantity :: Lens' UsageRecord Natural+urQuantity = lens _urQuantity (\ s a -> s{_urQuantity = a}) . _Nat;++instance FromJSON UsageRecord where+        parseJSON+          = withObject "UsageRecord"+              (\ x ->+                 UsageRecord' <$>+                   (x .: "Timestamp") <*> (x .: "CustomerIdentifier")+                     <*> (x .: "Dimension")+                     <*> (x .: "Quantity"))++instance Hashable UsageRecord++instance NFData UsageRecord++instance ToJSON UsageRecord where+        toJSON UsageRecord'{..}+          = object+              (catMaybes+                 [Just ("Timestamp" .= _urTimestamp),+                  Just ("CustomerIdentifier" .= _urCustomerIdentifier),+                  Just ("Dimension" .= _urDimension),+                  Just ("Quantity" .= _urQuantity)])++-- | A UsageRecordResult indicates the status of a given UsageRecord processed by BatchMeterUsage.+--+--+--+-- /See:/ 'usageRecordResult' smart constructor.+data UsageRecordResult = UsageRecordResult'+    { _urrStatus           :: !(Maybe UsageRecordResultStatus)+    , _urrUsageRecord      :: !(Maybe UsageRecord)+    , _urrMeteringRecordId :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'UsageRecordResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'urrStatus' - The UsageRecordResult Status indicates the status of an individual UsageRecord processed by BatchMeterUsage.     * /Success/ - The UsageRecord was accepted and honored by BatchMeterUsage.     * /CustomerNotSubscribed/ - The CustomerIdentifier specified is not subscribed to your product. The UsageRecord was not honored. Future UsageRecords for this customer will fail until the customer subscribes to your product.     * /DuplicateRecord/ - Indicates that the UsageRecord was invalid and not honored. A previously metered UsageRecord had the same customer, dimension, and time, but a different quantity.+--+-- * 'urrUsageRecord' - The UsageRecord that was part of the BatchMeterUsage request.+--+-- * 'urrMeteringRecordId' - The MeteringRecordId is a unique identifier for this metering event.+usageRecordResult+    :: UsageRecordResult+usageRecordResult =+    UsageRecordResult'+    { _urrStatus = Nothing+    , _urrUsageRecord = Nothing+    , _urrMeteringRecordId = Nothing+    }++-- | The UsageRecordResult Status indicates the status of an individual UsageRecord processed by BatchMeterUsage.     * /Success/ - The UsageRecord was accepted and honored by BatchMeterUsage.     * /CustomerNotSubscribed/ - The CustomerIdentifier specified is not subscribed to your product. The UsageRecord was not honored. Future UsageRecords for this customer will fail until the customer subscribes to your product.     * /DuplicateRecord/ - Indicates that the UsageRecord was invalid and not honored. A previously metered UsageRecord had the same customer, dimension, and time, but a different quantity.+urrStatus :: Lens' UsageRecordResult (Maybe UsageRecordResultStatus)+urrStatus = lens _urrStatus (\ s a -> s{_urrStatus = a});++-- | The UsageRecord that was part of the BatchMeterUsage request.+urrUsageRecord :: Lens' UsageRecordResult (Maybe UsageRecord)+urrUsageRecord = lens _urrUsageRecord (\ s a -> s{_urrUsageRecord = a});++-- | The MeteringRecordId is a unique identifier for this metering event.+urrMeteringRecordId :: Lens' UsageRecordResult (Maybe Text)+urrMeteringRecordId = lens _urrMeteringRecordId (\ s a -> s{_urrMeteringRecordId = a});++instance FromJSON UsageRecordResult where+        parseJSON+          = withObject "UsageRecordResult"+              (\ x ->+                 UsageRecordResult' <$>+                   (x .:? "Status") <*> (x .:? "UsageRecord") <*>+                     (x .:? "MeteringRecordId"))++instance Hashable UsageRecordResult++instance NFData UsageRecordResult
gen/Network/AWS/MarketplaceMetering/Types/Sum.hs view
@@ -18,3 +18,32 @@ module Network.AWS.MarketplaceMetering.Types.Sum where  import           Network.AWS.Prelude++data UsageRecordResultStatus+    = CustomerNotSubscribed+    | DuplicateRecord+    | Success+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)++instance FromText UsageRecordResultStatus where+    parser = takeLowerText >>= \case+        "customernotsubscribed" -> pure CustomerNotSubscribed+        "duplicaterecord" -> pure DuplicateRecord+        "success" -> pure Success+        e -> fromTextError $ "Failure parsing UsageRecordResultStatus from value: '" <> e+           <> "'. Accepted values: customernotsubscribed, duplicaterecord, success"++instance ToText UsageRecordResultStatus where+    toText = \case+        CustomerNotSubscribed -> "CustomerNotSubscribed"+        DuplicateRecord -> "DuplicateRecord"+        Success -> "Success"++instance Hashable     UsageRecordResultStatus+instance NFData       UsageRecordResultStatus+instance ToByteString UsageRecordResultStatus+instance ToQuery      UsageRecordResultStatus+instance ToHeader     UsageRecordResultStatus++instance FromJSON UsageRecordResultStatus where+    parseJSON = parseJSONText "UsageRecordResultStatus"
test/Test/AWS/Gen/MarketplaceMetering.hs view
@@ -28,13 +28,25 @@ -- fixtures :: TestTree -- fixtures = --     [ testGroup "request"---         [ requestMeterUsage $+--         [ requestBatchMeterUsage $+--             batchMeterUsage+--+--         , requestResolveCustomer $+--             resolveCustomer+--+--         , requestMeterUsage $ --             meterUsage -- --           ]  --     , testGroup "response"---         [ responseMeterUsage $+--         [ responseBatchMeterUsage $+--             batchMeterUsageResponse+--+--         , responseResolveCustomer $+--             resolveCustomerResponse+--+--         , responseMeterUsage $ --             meterUsageResponse -- --           ]@@ -42,12 +54,36 @@  -- Requests +requestBatchMeterUsage :: BatchMeterUsage -> TestTree+requestBatchMeterUsage = req+    "BatchMeterUsage"+    "fixture/BatchMeterUsage.yaml"++requestResolveCustomer :: ResolveCustomer -> TestTree+requestResolveCustomer = req+    "ResolveCustomer"+    "fixture/ResolveCustomer.yaml"+ requestMeterUsage :: MeterUsage -> TestTree requestMeterUsage = req     "MeterUsage"     "fixture/MeterUsage.yaml"  -- Responses++responseBatchMeterUsage :: BatchMeterUsageResponse -> TestTree+responseBatchMeterUsage = res+    "BatchMeterUsageResponse"+    "fixture/BatchMeterUsageResponse.proto"+    marketplaceMetering+    (Proxy :: Proxy BatchMeterUsage)++responseResolveCustomer :: ResolveCustomerResponse -> TestTree+responseResolveCustomer = res+    "ResolveCustomerResponse"+    "fixture/ResolveCustomerResponse.proto"+    marketplaceMetering+    (Proxy :: Proxy ResolveCustomer)  responseMeterUsage :: MeterUsageResponse -> TestTree responseMeterUsage = res